sound gen 00
♥0 |
Line 108 |
Modified 2010-08-24 08:04:36 |
MIT License
archived:2017-03-20 14:19:30
ActionScript3 source code
/**
* Copyright yukifuruyoru ( http://wonderfl.net/user/yukifuruyoru )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/9FgD
*/
package {
import flash.text.TextField;
import flash.media.SoundChannel;
import flash.media.Sound;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class FlashTest extends Sprite {
public function FlashTest() {
var mult:uint=4;
var mySound:BS=new BS(1,0.15,110*mult);
var chan:SoundChannel;
var flag:Boolean=false;
var mat:Sprite=new Sprite;
var b1:Sprite=new Sprite;
b1.graphics.beginFill(0);
b1.graphics.lineTo(32,15);
b1.graphics.lineTo(0,32);
b1.graphics.lineTo(0,0);
b1.graphics.endFill();
var b2:Sprite=new Sprite;
b2.graphics.beginFill(0);
b2.graphics.drawRect(0,0,32,32);
b2.graphics.endFill();
mat.addChild(b1);
mat.addChild(b2);
mat.addEventListener(MouseEvent.MOUSE_DOWN,blink);
mat.x=216;
mat.y=216;
addChild(mat);
function blink():void {
if(flag){chan.stop();b2.visible=true;flag=false;}
else{
chan=mySound.play();b2.visible=false;flag=true;
tf.text=(mult*110).toString()+"Hz";
}
}
var tog:Sprite=new Sprite;
tog.graphics.beginFill(0);
tog.graphics.drawRoundRect(0,0,20,64,10);
tog.graphics.endFill();
tog.addEventListener(MouseEvent.MOUSE_DOWN,onTog);
addChild(tog);
tog.x=225;
var tf:TextField=new TextField;
addChild(tf);
function onTog(e:MouseEvent):void {
if(tog.mouseY>tog.height/2){
if(mult){mult--;}
}
else{
mult++;
}
reSound();
}
function reSound():void {
if(flag)blink();
mySound=new BS(1,0.15,110*mult);
blink();
}
}
}
}
import flash.text.TextField;
import flash.media.Sound;
import flash.events.SampleDataEvent;
// class
class BS extends Sound{
public var wg:WG;
function BS(wavecode:uint,amp:Number=0.01,frec:Number=440):void {
wg=new WG(amp,frec);
switch(wavecode){
case 0:{addEventListener(SampleDataEvent.SAMPLE_DATA,wg.noise);}break;
case 1:{addEventListener(SampleDataEvent.SAMPLE_DATA,wg.sine);}break;
}
}
public function set amp(n:Number):void {
wg.amp=n;
}
public function set frec(n:Number):void {
wg.frec=n;
}
}
class WG extends Object{
public var amp:Number;
public var frec:Number;
private var PI2:Number=Math.PI*2;
private var SR:uint=44100;
private var PI2over:Number=PI2/SR;
function WG(a:Number,f:uint):void {
amp=a;
frec=f;
}
public function noise(e:SampleDataEvent):void {
var sample:Number;
for (var i:uint;i<8192;i++){
sample=Math.random()-0.5;
e.data.writeFloat(sample*amp);
e.data.writeFloat(sample*amp);
}
}
public function sine(e:SampleDataEvent):void {
var sample:Number;
for (var i:uint;i<8192;i++){
sample=Math.sin(PI2over*frec*(i+e.position))
e.data.writeFloat(sample*amp);
e.data.writeFloat(sample*amp);
}
}
}