wave graph (with sound obj: http://wonderfl.net/c/3mCR)
this version is obsolete. Check new version
http://wonderfl.net/c/3mCR
♥0 |
Line 79 |
Modified 2010-06-02 19:02:26 |
MIT License
archived:2017-03-20 14:19:39
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/r1nb
*/
/*this version is obsolete. Check new version*/
/*http://wonderfl.net/c/3mCR*/
package {
import flash.display.Sprite;
public class Main extends Sprite {
public function Main():void {
var wg:Waveg=new Waveg(this);
with(wg){
x=32;
y=82;
}
/*change wave oscilation type at class below
(osc var definition).*/
/*You can choice sen, squ, saw or tri wave*/
}
}
}
import flash.display.Sprite;
class Waveg extends Sprite{
private var osc:Function=saw;//oscilation mode select
private var board:Sprite;
private var W:uint=400; //suppose W=1sec for now
private var H:uint=300;
private var A:uint=H>>>2; //Max. amplicity
private var f:uint=24; //frecuency of wave(Hz)
private var RATE:uint=44100; //sampling frecuency (Hz)
private var PI:Number=Math.PI;
private var g:Number; //gain for time t.
public function squ(t:uint):Number{
g=(Math.sin(f*(t/RATE*PI*2))>0)?1:-1;
return g;
}
public function sen(t:uint):Number{
g=Math.sin(f*(t/RATE*PI*2));
return g;
}
public function saw(t:uint):Number{
t=t%(RATE/f);
g=t/RATE*f*2-1;
return g;
}
public function tri(t:uint):Number{
t=t%(RATE/f);
g=(t<(RATE/f/2))?4*t/RATE*f-1:4*(1-t/RATE*f)-1;
return g;
}
private function wavegeneration():void{
var a:Number=osc(0);
board.graphics.moveTo(0,a*A);
for(var i:uint=0;i<RATE+1;i++){//i(time)=1s/RATE
a=osc(i);
board.graphics.lineTo(i*W/RATE,a*A);
}
}
public function Waveg(tgt:Sprite):void{
initWin();
initBoard();
tgt.addChild(this);
wavegeneration();
}
private function initWin():void{
with(graphics){
lineStyle(0,0xcccccc);
moveTo(0,H>>>1);
lineTo(W,H>>>1);
lineStyle(0);
drawRect(0,0,W,H);
}
}
private function initBoard():void{
board=new Sprite();
with(board){
y=H>>>1;
scaleY=-1;
with(graphics){
lineStyle(0,0xFF0000);
moveTo(0,-A);
lineTo(0,A);
moveTo(0,0);
lineStyle(0,0x0000FF);
}}
addChild(board);
}
}