wave graph (with sound obj: http://wonderfl.net/c/3mCR)

by yukifuruyoru
this version is obsolete. Check new version
http://wonderfl.net/c/3mCR
♥0 | Line 79 | Modified 2010-06-02 19:02:26 | MIT License
play

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);
	}
}

Forked