Guest User

Untitled

a guest
Jun 18th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         public function sampleData( event: SampleDataEvent = null ): void
  2.         {
  3.        
  4.                 trace( "asffdfdfdfdfdkfdkfdkfdfkdfkdfdkfdk");
  5.             //-- REUSE INSTEAD OF RECREATION
  6.             _target.position = 0;
  7.            
  8.             //-- SHORTCUT
  9.             var data: ByteArray = event.data;
  10.            
  11.             var scaledBlockSize: Number = BLOCK_SIZE * _rate;
  12.             var positionInt: int = _position;
  13.             var alpha: Number = _position - positionInt;
  14.  
  15.             var positionTargetNum: Number = alpha;
  16.             var positionTargetInt: int = -1;
  17.  
  18.             //-- COMPUTE NUMBER OF SAMPLES NEED TO PROCESS BLOCK (+2 FOR INTERPOLATION)
  19.             var need: int = Math.ceil( scaledBlockSize ) + 2;
  20.            
  21.             //-- EXTRACT SAMPLES
  22.             var read: int = _mp3.extract( _target, need, positionInt );
  23.            
  24.             if ( read == 0 )
  25.             {
  26.                 if ( isLooped )
  27.                 {
  28.                     _position = 0;
  29.                     sampleData( event );
  30.                 }
  31.                 else
  32.                 {
  33.                    
  34.                     sound.removeEventListener(SampleDataEvent.SAMPLE_DATA, sampleData );
  35.                     //channel.removeEventListener(Event.SOUND_COMPLETE, onSoundComplete);
  36.                     isFinished = true;
  37.                 }
  38.                
  39.             }
  40.  
  41.             var n: int = read == need ? BLOCK_SIZE : read / _rate;
  42.  
  43.             var l0: Number;
  44.             var r0: Number;
  45.             var l1: Number;
  46.             var r1: Number;
  47.  
  48.             for( var i: int = 0 ; i < n ; ++i )
  49.             {
  50.                 //-- AVOID READING EQUAL SAMPLES, IF RATE < 1.0
  51.                 if( int( positionTargetNum ) != positionTargetInt )
  52.                 {
  53.                     positionTargetInt = positionTargetNum;
  54.                    
  55.                     //-- SET TARGET READ POSITION
  56.                     _target.position = positionTargetInt << 3;
  57.    
  58.                     //-- READ TWO STEREO SAMPLES FOR LINEAR INTERPOLATION
  59.                     l0 =  readFloat();
  60.                     r0 =  readFloat();
  61.  
  62.                     l1 =  readFloat();
  63.                     r1 =  readFloat();
  64.                 }
  65.                
  66.                 //-- WRITE INTERPOLATED AMPLITUDES INTO STREAM
  67.                 data.writeFloat( l0 + alpha * ( l1 - l0 ) );
  68.                 data.writeFloat( r0 + alpha * ( r1 - r0 ) );
  69.                
  70.                 //-- INCREASE TARGET POSITION
  71.                 positionTargetNum += _rate;
  72.                
  73.                 //-- INCREASE FRACTION AND CLAMP BETWEEN 0 AND 1
  74.                 alpha += _rate;
  75.                 while( alpha >= 1.0 ) --alpha;
  76.             }
  77.            
  78.             //-- FILL REST OF STREAM WITH ZEROs
  79.             if( i < BLOCK_SIZE )
  80.             {
  81.                 while( i < BLOCK_SIZE )
  82.                 {
  83.                     data.writeFloat( 0.0 );
  84.                     data.writeFloat( 0.0 );
  85.                    
  86.                     ++i;
  87.                 }
  88.             }
  89.  
  90.             //-- INCREASE SOUND POSITION
  91.             _position += scaledBlockSize;
  92.            
  93.            
  94.         }
Add Comment
Please, Sign In to add comment