Changeset 35879 for lang/actionscript
- Timestamp:
- 11/09/09 20:39:14 (2 years ago)
- Location:
- lang/actionscript/flmml/trunk/src
- Files:
-
- 5 modified
-
com/txt_nifty/sketch/flmml/MChannel.as (modified) (5 diffs)
-
com/txt_nifty/sketch/flmml/MFilter.as (modified) (1 diff)
-
com/txt_nifty/sketch/flmml/MFormant.as (modified) (1 diff)
-
com/txt_nifty/sketch/flmml/MOscFcDpcm.as (modified) (3 diffs)
-
flmml.swf (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
-
lang/actionscript/flmml/trunk/src/com/txt_nifty/sketch/flmml/MChannel.as
r34488 r35879 20 20 private var m_velocity:Number; // velocity (max:1.0) 21 21 private var m_ampLevel:Number; // amplifier level (max:1.0) 22 private var m_panL:Number; 23 private var m_panR:Number; 22 private var m_pan:Number; // left 0.0 - 1.0 right 24 23 private var m_onCounter:int; 25 24 private var m_lfoDelay:int; … … 201 200 } 202 201 public function setPan(pan:int):void { 203 // left 0 - 64 - 127 right 204 // master_vol = 0.25 205 m_panR = (pan - 1) * (0.25 / 63.0); 206 if (m_panR < 0) m_panR = 0; 207 m_panL = (2.0 * 0.25) - m_panR; 202 // left 1 - 64 - 127 right 203 // master_vol = (0.25 * 2) 204 m_pan = (pan - 1) * (0.5 / 63.0); 205 if (m_pan < 0) m_pan = 0; 208 206 } 209 207 public function setFormant(vowel:int):void { … … 273 271 public function getSamples(samples:Vector.<Number>, max:int, start:int, delta:int):void { 274 272 var end:int = start + delta; 275 var amplitude:Number; 273 var amplitude:Number, rightAmplitude:Number; 274 var playing:Boolean = m_envelope1.isPlaying(), tmpFlag:Boolean; 276 275 var freqNo:int; 277 var i:int ;276 var i:int, j:int; 278 277 if (end >= max) end = max; 279 278 var key:Number = m_oscMod1.getFrequency(); 280 if (! m_envelope1.isPlaying()) {281 for(i = start; i < end; i++) s_samples[i] = 0.0;279 if (!playing) { 280 // for(i = start; i < end; i++) s_samples[i] = 0.0; 282 281 } 283 282 else if (m_inSens < 0.000001) { … … 353 352 } 354 353 } 355 if ( m_ringSens >= 0.000001) {354 if (playing && (m_ringSens >= 0.000001)) { 356 355 // with ring 357 356 for(i = start; i < end; i++){ … … 359 358 } 360 359 } 361 m_formant.run(s_samples, start, end); 362 m_filter.run(s_samples, start, end, m_envelope2, m_lpfFrq, m_lpfAmt, m_lpfRes, key); 363 switch(m_outMode) { 364 case 0: 365 //trace("output audio"); 360 361 // フォルマントフィルタを経由した後の音声が無音であればスキップ 362 tmpFlag = playing; 363 playing = playing || m_formant.checkToSilence(); 364 if(playing != tmpFlag){ 365 for(i = start; i < end; i++) s_samples[i] = 0; 366 } 367 if(playing){ 368 m_formant.run(s_samples, start, end); 369 } 370 371 // フィルタを経由した後の音声が無音であればスキップ 372 tmpFlag = playing; 373 playing = playing || m_filter.checkToSilence(); 374 if(playing != tmpFlag){ 375 for(i = start; i < end; i++) s_samples[i] = 0; 376 } 377 if(playing){ 378 m_filter.run(s_samples, start, end, m_envelope2, m_lpfFrq, m_lpfAmt, m_lpfRes, key); 379 } 380 381 if(playing){ 382 switch(m_outMode) { 383 case 0: 384 //trace("output audio"); 385 for(i = start; i < end; i++) { 386 j = i << 1; 387 amplitude = s_samples[i] * 0.5; 388 rightAmplitude = amplitude * m_pan; 389 samples[j] += amplitude - rightAmplitude; 390 samples[j+1] += rightAmplitude; 391 } 392 break; 393 case 1: // overwrite 394 //trace("output "+m_outPipe); 395 for(i = start; i < end; i++) { 396 s_pipeArr[m_outPipe][i] = s_samples[i]; 397 } 398 break; 399 case 2: // add 400 for(i = start; i < end; i++) { 401 s_pipeArr[m_outPipe][i] += s_samples[i]; 402 } 403 break; 404 } 405 }else if(m_outMode == 1){ 366 406 for(i = start; i < end; i++) { 367 amplitude = s_samples[i]; 368 samples[i+i] += amplitude * m_panL; 369 samples[i+i+1] += amplitude * m_panR; 370 } 371 break; 372 case 1: // overwrite 373 //trace("output "+m_outPipe); 374 for(i = start; i < end; i++) { 375 s_pipeArr[m_outPipe][i] = s_samples[i]; 376 } 377 break; 378 case 2: // add 379 for(i = start; i < end; i++) { 380 s_pipeArr[m_outPipe][i] += s_samples[i]; 381 } 382 break; 383 default: 384 break; 407 s_pipeArr[m_outPipe][i] = 0; 408 } 385 409 } 386 410 } -
lang/actionscript/flmml/trunk/src/com/txt_nifty/sketch/flmml/MFilter.as
r28292 r35879 28 28 reset(); 29 29 sw = s; 30 } 31 // 無音入力時に何かの信号を出力するかのチェック 32 public function checkToSilence():Boolean { 33 switch(sw){ 34 case 0: 35 return false; 36 case 1: 37 case -1: 38 return (-0.000001 <= b0 && b0 <= 0.000001 && -0.000001 <= b1 && b1 <= 0.000001); 39 case 2: 40 case -2: 41 return ( 42 -0.000001 <= t1 && t1 <= 0.000001 && 43 -0.000001 <= t2 && t2 <= 0.000001 && 44 -0.000001 <= b0 && b0 <= 0.000001 && 45 -0.000001 <= b1 && b1 <= 0.000001 && 46 -0.000001 <= b2 && b2 <= 0.000001 && 47 -0.000001 <= b3 && b3 <= 0.000001 && 48 -0.000001 <= b4 && b4 <= 0.000001 49 ); 50 } 51 return false; 30 52 } 31 53 public function run(samples:Vector.<Number>, start:int, end:int, envelope:MEnvelope, frq:Number, amt:Number, res:Number, key:Number):void { -
lang/actionscript/flmml/trunk/src/com/txt_nifty/sketch/flmml/MFormant.as
r24369 r35879 64 64 for(var i:int = m_len-1; i >= 0; i--) m_lMemory[i] = m_rMemory[i] = 0; 65 65 } 66 67 // 無音入力時に何かの信号を出力するかのチェック 68 public function checkToSilence():Boolean { 69 return m_power && ( 70 -0.000001 <= m_lMemory[0] && m_lMemory[0] <= 0.000001 && 71 -0.000001 <= m_lMemory[1] && m_lMemory[1] <= 0.000001 && 72 -0.000001 <= m_lMemory[2] && m_lMemory[2] <= 0.000001 && 73 -0.000001 <= m_lMemory[3] && m_lMemory[3] <= 0.000001 && 74 -0.000001 <= m_lMemory[4] && m_lMemory[4] <= 0.000001 && 75 -0.000001 <= m_lMemory[5] && m_lMemory[5] <= 0.000001 && 76 -0.000001 <= m_lMemory[6] && m_lMemory[6] <= 0.000001 && 77 -0.000001 <= m_lMemory[7] && m_lMemory[7] <= 0.000001 && 78 -0.000001 <= m_lMemory[8] && m_lMemory[8] <= 0.000001 && 79 -0.000001 <= m_lMemory[9] && m_lMemory[9] <= 0.000001 80 ); 81 } 66 82 67 83 public function run(samples:Vector.<Number>, start:int, end:int):void { -
lang/actionscript/flmml/trunk/src/com/txt_nifty/sketch/flmml/MOscFcDpcm.as
r33297 r35879 1 1 package com.txt_nifty.sketch.flmml { 2 2 /** 3 09/05/11 by OffGao 3 DPCM Oscillator by OffGao 4 09/05/11:作成 5 09/11/05:波形データ格納処理で、データが32bitごとに1bit抜けていたのを修正 4 6 */ 5 7 import __AS3__.vec.Vector; … … 24 26 protected static var s_length:Vector.<int>; //再生レングス 25 27 protected var m_waveNo:int; 26 protected static var s_interval:Vector.<int> = Vector.<int>([ 28 protected static var s_interval:Vector.<int> = Vector.<int>([ //音程 27 29 428, 380, 340, 320, 286, 254, 226, 214, 190, 160, 142, 128, 106, 85, 72, 54, 28 30 ]); … … 80 82 } 81 83 for(i = 5; i >=0 ; i--) { 82 s_table[waveNo][intPos] += ((code >> i) & 1) << (intCnt*8 + 8-intCn2);84 s_table[waveNo][intPos] += ((code >> i) & 1) << (intCnt*8 + 7-intCn2); 83 85 intCn2++; 84 86 if (intCn2 >= 8) {
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)