8月 24 2009
SiONをやってみよう・・・基本編1:MMLの再生
Flash Player 10 あたりでMIDIをサポートしてくれるんじゃないかと淡い期待をしてたけどなかなかそう言う雰囲気もないので、Java(JavaFX)のMIDI機能を利用しようかと考えたりと・・・Flash Playerが持つ標準機能(プラグイン無し)のみで音楽アプリケーションを作るのはなかなか難しかったんだけど、最近、一部で話題沸騰のサウンド系ライブラリSiONを使うことでその辺が大きく解消するかもしれません。(Flash Player 10でMIDIはサポートされなかったけどActionScriptでサウンド生成が可能になった)
SiONは、テキストで記述されるMML(Music Macro Language)を利用して内包するPSG/FM/WaveTable/PCM/物理音源を鳴らすことができます。
もちろん音(波形)の生成/合成/加工をしたり,インタラクティブな同期再生することも可能です。
下記のサンプルは、SiONライブラリに付属する一番基本的なサンプルです。
(ドレミの歌の一部です)
package {
import flash.display.Sprite;
import org.si.sion.*;
public class TheABCSong extends Sprite {
public var driver:SiONDriver = new SiONDriver();
function TheABCSong() {
driver.play("t100 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2");
}
}
}
■ もっとも基本的な手順:
(1)SiONDriverクラスのインスタンスを生成
(2)play() メソッドでMMLデータを演奏(これはMML再生以外でも基本的に必要)
■ 上記MMLの内容は以下のような進行になります。(分かりにくいので図解化してみました)
MMLの理解は必要不可欠ですがちょっと手強いかも(笑)
でも理解しないと話にならないのでちょっとずつやっていきますかね・・・

※MMLでテンポを指定しなかった場合の初期値は、120です。
せっかくなのでwonderFlでForkしてデモを作ってみました。
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import com.bit101.components.*;
import org.si.sion.*;
[SWF(width = "270", height = "60", backgroundColor = "#ffffff", frameRate = "30")]
public class TheABCSong extends Sprite {
public var driver:SiONDriver = new SiONDriver();
function TheABCSong() {
new PushButton(this, 10, 20, "play", mml_play);
new PushButton(this, 150, 20, "stop", mml_stop);
}
private function mml_play(e:MouseEvent):void
{
driver.play("t100 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2");
}
private function mml_stop(e:MouseEvent):void
{
driver.stop();
}
}
}
【 関連する投稿 】
| ■ スポンサードリンク | |
2 Responses to “SiONをやってみよう・・・基本編1:MMLの再生”
※ コメント及びトラックバックは、複数のスパム専用プラグインによって厳しくチェックされ、場合によっては自動的に駆除されます。
Trackback URI |
Comments RSS





[...] こちらは logicalyze::blog のSiONをやってみよう・・・基本編1:MMLの再生 に詳しく書いてくれています。 [...]
[...] 1.SiONをやってみよう・・・Logicalyze Blog 2.note.x UI Sound with SiON 3.Spark Project 4.SioPM MML Reference 5.開発者様ブログ [...]