forked from: SiON FM Synthesizer WF-1
forked from SiON FM Synthesizer WF-1 (diff: 378)
SiON Keyborad WF1 ver0.58
ActionScript3 source code
/**
* Copyright h_sakurai ( http://wonderfl.net/user/h_sakurai )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/paYGL
*/
// forked from keim_at_Si's SiON FM Synthesizer WF-1
// SiON Keyborad WF1 ver0.58
package {
import flash.display.Sprite;
import flash.events.*;
import flash.system.System;
import com.bit101.components.*;
public class main extends Sprite {
function main() {
Style.fontName = "Monaco";
Style.embedFonts = false;
stage.addEventListener("keyDown", _onKeyDown);
stage.addEventListener("keyUp", _onKeyUp);
clipboard = new Text(this, 16, 16, "zxcvbnmq");
clipboard.setSize(433, 433);
driver.play(null, false);
addEventListener(Event.ENTER_FRAME, enterFrame);
}
private var step:int = 0;
private var loop:Boolean = false;
private function enterFrame(eventObj:Event):void {
if(!loop)return;
step++
var n:int = 11;
if (step % n == 0) {
var i:int
if((i=keystrs.indexOf(clipboard.text.charAt(int(step / n)-1 ))) >= 0) keyOff(i);
if(int(step / n) >= clipboard.text.length) {step = 0;allNoteOff()}
if((i=keystrs.indexOf(clipboard.text.charAt(int(step / n) ))) >= 0) keyOn(i);
}
}
private function _onKeyDown(e:KeyboardEvent) : void {
var i:int, c:String, mml:String;
switch (e.keyCode) {
default:
switch (c = String.fromCharCode(e.charCode)) {
case "1": loop = !loop; allNoteOff(); step = 0; break;
case "]": oct--; break;
case "[": oct++; break;
case " ": allNoteOff(); break;
default: if ((i=keystrs.indexOf(c)) >= 0) keyOn(i); break;
}
}
}
private var keystrs:String = ",l.;/:-zsxdcvgbhnjmq2w3er5t6y7ui9o0p"
private function _onKeyUp(e:KeyboardEvent) : void {
var i:int, c:String = String.fromCharCode(e.charCode);
if ((i=keystrs.indexOf(c)) >= 0) keyOff(i);
}
}
}
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.text.*;
import flash.geom.*;
import com.bit101.components.*;
import org.si.sion.*;
import org.si.sion.effector.*;
import org.si.sion.sequencer.SiMMLTrack;
import org.si.sion.utils.SiONPresetVoice;
// SiON variables
var driver:SiONDriver = new SiONDriver();
var presetVoice:SiONPresetVoice = new SiONPresetVoice();
var oct:int = 5;
var octm:int = 7;
// UIs
var keyFlag:Object = {};
var clipboard:Text;
function keyOn(index:int) : void {
if (!keyFlag[index]) {
keyFlag[index] = true
var trk:SiMMLTrack = driver.noteOn(index + oct*12-octm, presetVoice.categolies[0][0], 0);
}
}
function keyOff(index:int) : void {
keyFlag[index] = false;
driver.noteOff(index + oct*12-octm);
}
function allNoteOff() : void {
for each (var trk:SiMMLTrack in driver.sequencer.tracks) trk.keyOff();
}