読者です 読者をやめる 読者になる 読者になる

0.SiON 概要

SiON 音楽 ActionScript3

SiONをWonderflにライブラリとして登録していただいて以来,様々な方に試していただき本当にありがとうございます(Wonderf以前から試して貰ってる超ヘビー級ギークもいますが).
折角,Wonderflというすばらしい試用環境ができたのに,現状spark project wikiのしょっぼいドキュメントしか無く手探りで試して頂いている状況なので,ブログでちょこちょこと推敲中の解説エントリを書いていこうかなと思います.最終的にはどこか(多分SparkProject)にまとまった文章として置くつもりでいます.以下,予定タイトルですが随時変更していきます.また,このエントリをインデックスとして利用する予定です.
0. SiON 概要
1. SiON の主なクラス
2. SiON で音を鳴らす
3. SiON と DisplayObject の連携
4. 音と映像とインターフェイスの連携
5. SiON エフェクタ
6. SiON で Sound Class の操作/再生
7. Arpeggiator で演奏
8. inside SiON

SiON 概要

SiON(サイオン)は ActionScript3/Flash10用ソフトウェアシンセサイザーSiOPM を中核とした統合サウンドライブラリです.
mp3データを用意しなくても様々な音を簡単に演奏する事ができ,音楽と DisplayObject の連携や,動的な音楽生成が,シンプルに実装できます.もちろんmp3データにも対応しており,SoundクラスをPCM音源波形として取り込む事で内蔵音源と連動し,スライシング/ループ再生,ピッチ/エンベープ/モジュレーション/フィルタ操作やエフェクタによる加工,mp3自体を1つの音色とした演奏などが可能です.
また,楽譜や音源の設定は Music Macro Language (MML) によって記述する事ができるため,非常に軽量なテキストデータによって音楽や効果音を表現できます.
(一応 SiOPM と SiON は別物ですが,製作者本人もソフトウェアシンセを指して SiON と呼んだりしてるので SiOPM の名前は忘れて下さい.読めないし.以降"SiON の音源部"みたいに表現します.)


SiON のエンジンは大分すると3つのユニットに分かれており,これらが連携して最終的な出力を合成します.それぞれ SiONDriver クラスのプロパティとして提供されています.

  • ソフトウェア音源ユニット(SiONDriver.module); 音を生成するユニット
  • MMLコンパイラ/シーケンサユニット(SiONDriver.sequencer); シーケンスを演奏するユニット
  • エフェクタユニット(SiONDriver.effector); 出力にエフェクトを掛けて合成するユニット

音源仕様

YAMAHA 製 FM 音源チップ YM2151(OPM) エミュレータを ActionScript3 で実装し,様々な拡張を施しています.現バージョンの SiON は大分すると4種類の音源を内蔵しています.

FM音源チップのエミュレータ(OPM/OPNA/OPL3/OPX/MA3...).

PCで実績のあるエミュレータ MAME, fmgen, x68sound.dll のソースを元に実装しており,OPM,OPNA,OPL3,OPX,MA3 はチップと同じパラメータを与えると実機に近い出力を再現できます.DX7についてはパラメータ互換性は無くエンベロープなど完全再現はできませんが,全32アルゴリズムと多段フィードバックは表現できるように拡張されています(DX7は6オペなので2チャンネル使用).また TSS のように各チャンネルの出力をFM接続する事も可能です.

PSG/波形メモリ音源チップのシミュレータ(SN76489/2A03/SCC...).

FM音源エミュレータに独自拡張を施し PSG(AY-3-8910, DCSG, 2A03, SSG 等)や波形メモリ音源(SCC, C15, GameBoy, PCEngine等)のシミュレーションを行います.実装にあたっては MAME, VirturaNES のソースを参考にしています.基本的にFM音源ベースなので,出力にADSRエンベロープ等を掛ける事ができます.また,エンベロープテーブルを使う事でより実機に近い音を再現する事も可能です.

撥弦モデル物理音源

Karplus strong アルゴリズムに基づいたギター物理音源に独自拡張を施しています.FM音源出力やmp3ファイルを Plunk noize として用いる事が可能で,より柔軟な音作りが行えます.

PCM音源

mp3(Soundクラス)を基本波形データとして他の音源と同様に演奏する事ができます.また効果音や打楽器のような単純なミキシングには,より軽量なサンプラーモジュールを使えます.
これらの音源の出力に対して,アナログ音源のようなADSRフィルタエンベロープ,各種テーブルエンベロープ,リングモジュレーション,TSSのようなチャンネル間FM接続,LFOモジュレーション等の操作が可能です.
また,リバーブ,コーラス,ディレイ,イコライザ,各種フィルタ,スピーカーシミュレータといった様々なエフェクタを搭載しており出力を更に加工する事が出来ます.

MMLコンパイラ/シーケンサ仕様

SiOPM MML reference (version 0.6.4)
SiOPM MML Editor
TSSCP/偽TSSCPMMLをベースに拡張を行っています.マクロ文字列の加算や,エンベロープテーブルなどいくつかの点で,ppmckcを意識して仕様を作りました.MMLの互換性はありません.また,FM音源周りはPMD/FMP/MXDRVなど過去のドライバを参考にしました.とにかく,機能が多くてコマンドも多いですが,基本的なMMLの共通部分は崩していませんので,昔にMMLを打ち込んだ事のある人であれば,割とすんなり書けると思います.