title: As3 how to call and use an external class
body: <p>I have this cool As3 MP3pitch package, which I got from here: <a href="http://blog.andre-michelle.com/2009/pitch-mp3/#more-483" rel="nofollow">http://blog.andre-michelle.com/2009/pitch-mp3/#more-483</a></p>
  
  <pre><code>package components
  {
  import flash.events.Event;
  import flash.events.SampleDataEvent;
  import flash.media.Sound;
  import flash.net.URLRequest;
  import flash.utils.ByteArray;
  
  /**
   * @author Andre Michelle (andre.michelle@gmail.com)
   */
  public class MP3Pitch 
  {
      private const BLOCK_SIZE: int = 3072;
  
      private var _mp3: Sound;
      private var _sound: Sound;
  
      private var _target: ByteArray;
  
      private var _position: Number;
      private var _rate: Number;
  
      public function MP3Pitch( url: String )
      {
          _target = new ByteArray();
  
          _mp3 = new Sound();
          _mp3.addEventListener( Event.COMPLETE, complete );
          _mp3.load( new URLRequest( url ) );
  
          _position = 0.0;
          _rate = 1.0;
  
          _sound = new Sound();
          _sound.addEventListener( SampleDataEvent.SAMPLE_DATA, sampleData );
      }
  
      public function get rate(): Number
      {
          return _rate;
      }
  
      public function set rate( value: Number ): void
      {
          if( value &lt; 0.0 )
              value = 0;
  
          _rate = value;
      }
  
      private function complete( event: Event ): void
      {
          _sound.play();
      }
  
      private function sampleData( event: SampleDataEvent ): void
      {
          //-- REUSE INSTEAD OF RECREATION
          _target.position = 0;
  
          //-- SHORTCUT
          var data: ByteArray = event.data;
  
          var scaledBlockSize: Number = BLOCK_SIZE * _rate;
          var positionInt: int = _position;
          var alpha: Number = _position - positionInt;
  
          var positionTargetNum: Number = alpha;
          var positionTargetInt: int = -1;
  
          //-- COMPUTE NUMBER OF SAMPLES NEED TO PROCESS BLOCK (+2 FOR INTERPOLATION)
          var need: int = Math.ceil( scaledBlockSize ) + 2;
  
          //-- EXTRACT SAMPLES
          var read: int = _mp3.extract( _target, need, positionInt );
  
          var n: int = read == need ? BLOCK_SIZE : read / _rate;
  
          var l0: Number;
          var r0: Number;
          var l1: Number;
          var r1: Number;
  
          for( var i: int = 0 ; i &lt; n ; ++i )
          {
              //-- AVOID READING EQUAL SAMPLES, IF RATE &lt; 1.0
              if( int( positionTargetNum ) != positionTargetInt )
              {
                  positionTargetInt = positionTargetNum;
  
                  //-- SET TARGET READ POSITION
                  _target.position = positionTargetInt &lt;&lt; 3;
  
                  //-- READ TWO STEREO SAMPLES FOR LINEAR INTERPOLATION
                  l0 = _target.readFloat();
                  r0 = _target.readFloat();
  
                  l1 = _target.readFloat();
                  r1 = _target.readFloat();
              }
  
              //-- WRITE INTERPOLATED AMPLITUDES INTO STREAM
              data.writeFloat( l0 + alpha * ( l1 - l0 ) );
              data.writeFloat( r0 + alpha * ( r1 - r0 ) );
  
              //-- INCREASE TARGET POSITION
              positionTargetNum += _rate;
  
              //-- INCREASE FRACTION AND CLAMP BETWEEN 0 AND 1
              alpha += _rate;
              while( alpha &gt;= 1.0 ) --alpha;
          }
  
          //-- FILL REST OF STREAM WITH ZEROs
          if( i &lt; BLOCK_SIZE )
          {
              while( i &lt; BLOCK_SIZE )
              {
                  data.writeFloat( 0.0 );
                  data.writeFloat( 0.0 );
  
                  ++i;
              }
          }
  
          //-- INCREASE SOUND POSITION
          _position += scaledBlockSize;
      }
  }
  
  }
  </code></pre>
  
  <p>How can I include it into my "main" as3 file and use it? I can't just slap it into the same file, since the main file already has it's own package and class.</p>
  
  <p>Essentially what I'm trying to do here is to load a sound file, play it, and change it's pitch in relation to the values what I have already. </p>
  
  <p>Thanks in advance.</p>