PI based Chiptune
/**
* Copyright Jacky.Riawan ( http://wonderfl.net/user/Jacky.Riawan )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/bt3d
*/
package
{
import flash.display.Sprite;
import flash.events.Event;
import org.si.sion.SiONDriver;
import org.si.sound.Arpeggiator;
import org.si.sound.BassSequencer;
import org.si.sound.ChordPad;
import org.si.sound.DrumMachine;
/**
* 500 digits of PI decimals
* http://www.eveandersson.com/pi/digits/
* @author Jacky Riawan
*/
public class Main extends Sprite
{
private const PI:String = "31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989";
public function Main():void
{
var driver:SiONDriver = new SiONDriver();
driver.play("t314 314 [" + parse() + "]");
var drum:DrumMachine = new DrumMachine(3, 1, 4, 1, 5, 9);
drum.play();
var chordPad:ChordPad = new ChordPad();
chordPad.voiceMode=ChordPad.OPENED
chordPad.pattern = parseToArray();
chordPad.play();
var arpeggiator:Arpeggiator = new Arpeggiator();
arpeggiator.pattern = chordPad.pattern;
arpeggiator.noteLength = Math.PI;
arpeggiator.gateTime = Math.PI;
arpeggiator.volume = 0.2;
arpeggiator.play();
var bass:BassSequencer = new BassSequencer();
bass.patternNumber = 1;
bass.play();
}
private function parseToArray():Array {
return PI.split("");
}
private function parse():String {
var parsed:String = PI;
parsed = parsed.split("1").join("c");
parsed = parsed.split("2").join("d");
parsed = parsed.split("3").join("e");
parsed = parsed.split("4").join("f");
parsed = parsed.split("5").join("g");
parsed = parsed.split("6").join("h");
parsed = parsed.split("7").join("i");
parsed = parsed.split("8").join("j");
parsed = parsed.split("9").join("k");
parsed = parsed.split("0").join("l");
for (var i:int = 0; i < parsed.length; i += 10 + Math.random() * 10) {
parsed = parsed.slice(0, i) + "|" + parsed.slice(i);
}
return parsed
}
}
}