forked from: SoundFork
forked from SoundFork (diff: 9)
ActionScript3 source code
/**
* Copyright murderdeathkitty ( http://wonderfl.net/user/murderdeathkitty )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/hfLJ
*/
// forked from murderdeathkitty's SoundFork
// forked from murderdeathkitty's flash on 2009-7-17
package {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
public class SoundFork extends Sprite {
private var sound: Sound;
private var channel: SoundChannel;
private var params: Vector.<Number>;
public function SoundFork(): void
{
addEventListener(Event.ADDED_TO_STAGE, start);
addEventListener(Event.REMOVED_FROM_STAGE, stop);
}
public function start(e: Event = null): void
{
params = new Vector.<Number>(16);
sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, generate);
channel = sound.play();
}
public function stop(e: Event = null): void
{
if(channel != null){
channel.stop();
channel = null;
}
}
//replace this with your own sound!!!
//output is 44100 hz, stereo. values between -1 and 1
private function generate(e: SampleDataEvent): void
{
var data: ByteArray = e.data;
var i: Number;
var output: Number;
for(i = 0; i < 2048; ++i){
params[0] += Math.random()%0.1;
params[1] += Math.random()*(params[0]%0.1);
params[2] += Math.random()*(params[1]%0.1) + params[0]*0.01;
params[3] += (1+Math.random()*0.01)*Math.sin(params[2]) * (1+params[0]*0.1)*0.001;
output = Math.sin(params[3]);
data.writeFloat(output);//left
data.writeFloat(output);//right
}
}
}
}
