13.08.2012 Views

ACTIONSCRIPT 3 Developer’s Guide en

ACTIONSCRIPT 3 Developer’s Guide en

ACTIONSCRIPT 3 Developer’s Guide en

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>ACTIONSCRIPT</strong> 3.0 DEVELOPER’S GUIDE<br />

Working with sound<br />

const DELAY_LENGTH:int = 4000;<br />

var mic:Microphone = Microphone.getMicrophone();<br />

mic.setSil<strong>en</strong>ceLevel(0, DELAY_LENGTH);<br />

mic.gain = 100;<br />

mic.rate = 44;<br />

mic.addEv<strong>en</strong>tList<strong>en</strong>er(SampleDataEv<strong>en</strong>t.SAMPLE_DATA, micSampleDataHandler);<br />

var timer:Timer = new Timer(DELAY_LENGTH);<br />

timer.addEv<strong>en</strong>tList<strong>en</strong>er(TimerEv<strong>en</strong>t.TIMER, timerHandler);<br />

timer.start();<br />

function micSampleDataHandler(ev<strong>en</strong>t:SampleDataEv<strong>en</strong>t):void<br />

{<br />

while(ev<strong>en</strong>t.data.bytesAvailable)<br />

{<br />

var sample:Number = ev<strong>en</strong>t.data.readFloat();<br />

soundBytes.writeFloat(sample);<br />

}<br />

}<br />

var sound:Sound = new Sound();<br />

var channel:SoundChannel;<br />

function timerHandler(ev<strong>en</strong>t:TimerEv<strong>en</strong>t):void<br />

{<br />

mic.removeEv<strong>en</strong>tList<strong>en</strong>er(SampleDataEv<strong>en</strong>t.SAMPLE_DATA, micSampleDataHandler);<br />

timer.stop();<br />

soundBytes.position = 0;<br />

sound.addEv<strong>en</strong>tList<strong>en</strong>er(SampleDataEv<strong>en</strong>t.SAMPLE_DATA, playbackSampleHandler);<br />

channel.addEv<strong>en</strong>tList<strong>en</strong>er( Ev<strong>en</strong>t.SOUND_COMPLETE, playbackComplete );<br />

channel = sound.play();<br />

}<br />

function playbackSampleHandler(ev<strong>en</strong>t:SampleDataEv<strong>en</strong>t):void<br />

{<br />

for (var i:int = 0; i < 8192 && soundBytes.bytesAvailable > 0; i++)<br />

{<br />

trace(sample);<br />

var sample:Number = soundBytes.readFloat();<br />

ev<strong>en</strong>t.data.writeFloat(sample);<br />

ev<strong>en</strong>t.data.writeFloat(sample);<br />

}<br />

}<br />

function playbackComplete( ev<strong>en</strong>t:Ev<strong>en</strong>t ):void<br />

{<br />

trace( "Playback finished.");<br />

}<br />

For more information on playing back sounds from sound sample data, see “Working with dynamically g<strong>en</strong>erated<br />

audio” on page 448.<br />

Last updated 6/6/2012<br />

466

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!