SiONでジェネレイティブミュージックを奏でる! サンプルコード
/**
* Copyright ll_koba_ll ( http://wonderfl.net/user/ll_koba_ll )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/9oRI
*/
package {
import flash.display.Sprite;
import org.si.sion.SiONData;
import org.si.sion.SiONDriver;
import org.si.sion.events.SiONEvent;
import org.si.sion.utils.SiONPresetVoice;
import org.si.sion.utils.Scale;
import org.si.sound.Arpeggiator;
public class C3_3 extends Sprite {
//ドライバ
public var _driver:SiONDriver;
//アルペジェータ
public var _arpeggiator:Arpeggiator;
function C3_3() {
//ドライバーの生成
_driver = new SiONDriver();
//イベントハンドラメソッドを登録
_driver.addEventListener(SiONEvent.STREAM, streamhandler);
//アルペジェーターの生成 及び スケールの設定
_arpeggiator = new Arpeggiator(new Scale("o1Ajap"));
/*アルペジェーターのパラメーターを設定*/
//音色を設定
var voice:SiONPresetVoice = new SiONPresetVoice();
_arpeggiator.voice = voice["valsound.bell1"];
//パターンの設定
_arpeggiator.pattern = [0, 1, 5, 2, 4, 3];
/*MMLを定義*/
//テンポを設定
var mml:String = "t160;";
//リバーブエフェクトをかける
mml += "#EFFECT0{reverb 70,40,70}";
//MMLをコンパイル
var data:SiONData = _driver.compile(mml);
//再生
_driver.play(data);
_arpeggiator.play();
}
private function streamhandler(e:SiONEvent) : void {
//スケールをランダムに変更
_arpeggiator.scaleIndex = Math.random() * 16 + 8;
}
}
}