X68000用のFM音源音色エディタ
X68000は比較的ソフトウェア資産がWeb上に残っていますが、FM音源の音色エディタが見当たらないので作ってみました。
ハードウェアの直接制御は行わずIOCS/DOSコールを使用したうえで、高速とはいえないX68000初代でもそれなりに軽快に動くことを目標にしています。
gcc(真里子版で確認、それ以外でもいけるかも)+XCライブラリ
コメントに//を多用しているのと、VSYNC同期をCの関数でやっているのでXCだと一手間掛かるかもしれません。
OPMドライバの類は不要です(IOCS経由でOPMレジスタを直接いじっています)
最大64音色まで内部に保持、音色名も保持している。他にコピペ用のバッファを1つ。
キーボードで音を鳴らしながらパラメータの編集が可能なので、パラメータを変えることによる音色変化が理解しやすいです。
ノートオン/オフをちゃんと見ているので、長さ固定で鳴らすとわかりにくいサスティン(D2)やリリース周りのエンベローブパラメータも確認しやすいです。
内部データ形式での64音色一括保存/ロードの他に、ZMS形式/Cヘッダ形式/BASIC変数宣言形式で64音色一括か編集中の音色単独での書き出しが可能です。
Sync LFOはパラメータとして持っていますが使っていません。
X68000で問題になるFM音源の音ズレですが、単純にキーを全音ずらすことのみで対応しているので微妙に音痴です。
ノートオフを拾えなくて音が鳴りっぱなしになることがありますが、その場合は音色を切り替えてください。(そのタイミングで全ノート発音停止します)
srcディレクトリでmakeすれはfmedit.xができあがるはずです。
fmeditで起動。起動時にdefault.tonというファイルがあれば読み込みます。
- カーソルキー:カーソルを移動
- q/w/e/r:パラメータを増減(q:-10 w:-1 e:+1 r:+10)
- フルキーの1/2/3/4:それぞれのオペレータをトグル
- z/x:テスト演奏のオクターブ変更(z:オクターブ下げる x:オクターブ上げる)
- c/f/v/g/b/n/j/m/k/,/l/.:テスト演奏(CがCになります)
- o:現在の音色データをバッファにコピー
- p:現在の音色番号にバッファの音色データをコピー *ESC:終了
*ファンクションキー:データセーブ/ロードや音色名セット音色切り替え、一括/単独エキスポートなど
名前付き音色データ(124Byte)が64個
音色名(64Byte)+音色データ(60Byte)
共通データ 12byte/オペレータデータ(12byte)*4
- フィードバックレベル
- アルゴリズム
- LFO Waveform
- sync LFO
- LFO Speed
- PMD(Phase modulation depth) (0-127で-63から63に対応)
- AMD(Amplitude modulation depth)
- PMS(Phase modulation sense)
- AMS(Amplitude modulation sense)
- PAN
- オペレータマスク(1が有効、最下位がオペレータ1)
- パディング
- Attack rate
- Decay1 rate
- Decay2 rate(Sustain rate)
- Release rate
- Decay1 level(Sustain level)
- Total level
- KeyScale
- Multiply
- Detune 1
- Detune 2
- AMS Enable
- パディング