(このページの情報は最新ではありません。v0.653よりGithubに引っ越しました.)

SiON

PSG/FM/WaveTable/PCM/物理音源,MMLコンパイラ/シーケンサ,サウンドエフェクタを備えた,統合サウンドライブラリになる予定です.
MMLを利用した音楽再生,音(波形)の生成/合成/加工,インタラクティブな同期再生,DisplayObject?との連携などが簡単に行えます.

http://sites.google.com/site/sioncenterj/

svn

download

ASDoc

Demonstration

  • SiON tag on Wonderfl
    • AS3 code hosting service "Wonderfl" でSiONが使えます.
  • MMLTalks MMLTalks
    • SiONを音源に使用したMML Hosting service.SiONソフトウェア音源によって演奏される様々な曲を聴き,投稿する事ができます.
  • FM音源キーボード
    • FM音源エミュレーション(YAMAHA ym2608 相当)を利用した簡易鍵盤デモ.内臓エフェクタ(ディレイ/コーラス)も使用しています.ソース
  • MMLエディタ
    • MMLコンパイラ/シーケンサを利用した音楽作成環境のデモ.MMLリファレンスの全コマンドが使用できます.
  • SiOPM音色エディタ
    • 独自拡張したソフトウェアFM音源(SiOPM)を利用した音色エディタのデモ.FM音源キーボードで使用している音色(VAL-SOUND様よりご提供いただきました)を"Load"から読み込めます.
  • javascript bridge

Usage

1. The simplest sample

ドライバのインスタンスを作成して,

var driver:SiONDriver = new SiONDriver();

play() メソッドを呼び出してMMLを演奏しています.

driver.play("t100 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2");

2. Event trigger sample

サンプル1では play() メソッドで直接MMLを演奏しましたが,compile() メソッドであらかじめ SiONData を作っておく方が効率的です.play() メソッドの第一引数は,String型とSiONData型が指定できます.それ以外の型を渡すとエラーが発生します.

mainMelody = driver.compile("%t0,1,1 t100 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2");
...
driver.play(mainMelody);

MMLで,Event Trigger コマンド "%t" を指定する事で,そのシーケンスを演奏しているトラックは,NoteOn? 及び NoteOff? のタイミングで SiONTrackEvent を発生させるようになります.

mainMelody = driver.compile("%t0,1,1 t100 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2");
driver.addEventListener(SiONTrackEvent.NOTE_ON_FRAME,  _onNoteOn);
driver.addEventListener(SiONTrackEvent.NOTE_OFF_FRAME, _onNoteOff);

3. Synchronized play sample

SiONVoice は音色設定を記憶します.sion.utils.SiONPresetVoice を生成する事で,プリセット音色を取得する事ができるようになります.詳細はソースを参照してください.

public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
...
voice = presetVoice["valsound.piano8"];

sequenceOn() メソッドは,play()で演奏中のシーケンスと同期して別のシーケンスを再生します.第1引数で演奏するSiONData, 第2引数で音色の初期設定(null可), 第3引数で再生長さ(0でシーケンス全てを再生), 第4引数で再生するまでのディレイ,第5引数で再生を乗せるタイミングを指定します.第3-5引数の16分音符単位で指定します(第5引数の"2"は,8分音符のタイミングでシーケンスを同期させる).

private function _onClick(e:Event) : void {
    driver.sequenceOn(clickSequence, voice, 0, 0, 2);
}

SiONDriver には noteOn() というメソッドもあり,シーケンスの変わりにノートナンバー(o5C = 60)を指定します.

driver.noteOn(60, voice, 0, 0, 2);

4. Others are on going

License

License
-------

Copyright (c) 2009 Kei Mesuda (keim) All rights reserved. 

Redistribution and use in source and binary forms, 
with or without modification, are permitted provided that 
the following conditions are met: 

 1. Redistributions of source code must retain the above copyright notice, 
    this list of conditions and the following disclaimer. 

 2. Redistributions in binary form must reproduce the above copyright notice, 
    this list of conditions and the following disclaimer in the documentation 
    and/or other materials provided with the distribution. 

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

Codes

Source

Samples

Author

keim:Si