OPMテーブル(ソフトウェアエンベロープ)定義書式
FM音源では一般的にハードウェアエンベロープを使用しますが、それだけでは表現しきれない複雑なエンベロープを使用したい場合、次の方法によって音量やパンポット、デチューンのテーブル(ソフトウェアエンベロープ)を定義できます。
ただし、これはコンパイラ内で短い音符と各種コマンドを列挙したデータに加工して出力することにより、擬似的に機能を実現しています。そのため、多用しすぎると曲データのサイズが肥大化してしまいますので、ご注意ください。
また、ソフトウェアLFOやグライドは正常に処理されません(具体的には、音量が変わるたびに処理がリセットされます)。これらはテーブル内でデチューンを並べて表現してください。
vコマンド相当の値を使う場合
[書式] @v<num>={ prm, prm, …, prm }
音量の値は#VOLMAXヘッダ、#VOLMINヘッダ、#V_STEPヘッダで指定した範囲となります。
Vコマンド相当の値を使う場合
[書式] @V<num>={ prm, prm, …, prm }
音量の値は0〜127となります。
値について
最初の@v<num>や@V<num>で指定する値はテーブル番号で、範囲は 0〜99です。@vと@Vで共通の番号となります。この番号をOPMトラックで指定するとテーブルを呼び出すことができます。
続く<prm>は実際のパラメータで、音量などの値を記述していきます。値を省略してカンマを並べると、1カウント手前と同じ音量を維持します。内容は次の通りです。
- <num>
- 音量指定。デフォルトでは1カウントずつ処理されます。
- #<num>
- カウント指定。この指定以降、そのカウントずつ音量が処理されます。
- D<num>
- デチューン指定。値はDコマンド相当です。相対指定ではありません。
- P<num>
- パンポット指定。値はPコマンド相当です。0は指定できません。
- L
- ループ指定。最後までテーブルを処理した後、この位置まで戻ります。
デチューンとパンポットは0カウントで処理されますので、音量指定と併用してください。また、これらの指定はテーブルの処理が終わっても元には戻りませんのでご注意ください。
[例] @v0 = 8,10,#2,11,12,13,,,#3,11,10 A @v0 c1 ;A ( v8c#1 v10c#1 v11c#2 v12c#2 v13c#6 v11c#3 v10c#3 ) c1-#18 ;と等価
- 関連
- @vコマンド, @Vコマンド, #VOLMAXヘッダ, #VOLMINヘッダ, #V_STEPヘッダ