音色エディタについて
曲を聴くだけの場合は必要ありませんが、打ち込みをする時に補助になるツールです。
起動方法
プレイヤーモードで一度曲を再生していると、HOMEキーで簡易FM音源音色エディタに入れます。
これはver2.1.10まではダイレクトモード再生時の機能でしたが、ver2.1.11の変更でプレイヤーモードの機能になりました。
これにより、プレイヤー側の全チャンネル対象としたミュート、音量変更機能と合わせて音色エディットできるので、音量を少し落とす、他の音源のチャンネルをミュートする程度のテストならMMLをコンパイルし直さなくてもそのままチェック可能です。

曲を一度再生してからHOMEキーを押すと、エディタモードに入ります。操作キーは画面に書いてある通りですが、主なポイントを解説します。
まず、エディタはY8950用とOPLL用があり、TABキーで切り替えます。
切り替えても変更部分はそのまま残っていますので、途中で切り替えながら作業したり、プレイヤーモードにHOMEキーで戻って任意のチャンネルをミュート後、エディタに戻って作業を続けることも可能です。
作業の変更内容は、ディスクの読み込みを伴う再生(別の曲の再生など)を行うとクリアされます。
特徴
旧音色エディタでは、演奏中の音源に対しエディタが直接音源のレジスタを変更することで音色変更を行っていました。
その場合、演奏中に音色に変更があると曲データのものにデータが上書きされてしまいます。これは音色1つのデータならエディットできますが、複数の音色が入れ替わるようなデータのエディットには向いていません。
もともとこのようなエディット機能を盛り込む予定がなく、後付けで追加したものなのでそのような不便さがあったのですが、新しいエディタは、曲の音色データ自体をエディットすることでその不便さを少し緩和しています。(とは言え、エディット用に一部のパートを取り出したMMLは必要になるとは思いますが)
Y8950エディタ
音色データの登録
まずはY8950エディタを基に解説します。
エディタが最初に起動した時は、曲データのどこに、どの音色データがあるのか分かりません。SCMDにそれを知る術が無いからです。
そこで、曲を最初から再生してドライバが音色データにアクセスした瞬間を捕まえて音色を登録していきます。
下の画像は画面上中央、"トウロクバンゴウ"の下の数値です。曲データが登録されていない場合XX/XXとなっています。

XXは未登録や無効を表します。曲が再生されていき音色データにアクセスがあると/右側の数値が上がっていきます。同じ音色データが重複して登録されることはありません。

これで、音色00番がエディタに登録されたことになります。MMLで使用した名前はSDTファイルにはありませんので、エディタから音色のアクセスには登録番号を使用します。
音色の登録は曲の頭から使用された順に登録されることとなり、MMLのどの音色と対応するかは、パラメータを見るなどして確認する必要があります。テストでデータを変更して、音色出現順番が変わると登録番号の対応も変わるので、そのあたりは注意してください。
最大登録数は64音色(00-63)。チャンネル単位ではなく、1音源全体での登録です。
音色の選択
音色が登録されることにより、エディット可能になりました。
次に、登録された音色を選択します。Tone Dataの項目にポインタを合わせて、スペース(N、あるいはポインタの位置に関係なくQ、Wキー)を押すと、登録した音色が選択された状態になります。

/の左側が現在選択している音色の登録番号となり、Addressの下の4桁の数値は選択した音色データの格納アドレスを示しています(あまりアドレスが意味を持つことは無いですが)。

音色データを選択すると全てのパラメータが表示されます。以降エディタの内容がクリアされない限り(他の曲を読み込まない限り)、未選択状態には戻りません。
Ch (1-9)について
現在選択しているチャンネルとなります。選択チャンネルは使用している音色が監視され、リアルタイムに登録音色番号が表示されます。

※選択したチャンネルは登録番号00番の音色を使用している状態です
リアルタイムではありますが演奏と同期しているわけでは無いので、1クロックごとに音色切り替えをした場合は表示がスキップする可能性や、休符や演奏終了など音を出していない状態でも表示されることに注意してください。
また、次に説明する反映スイッチONにより、データを書き込む対象のチャンネルにもなります。
反映(Rキー)について
音色データを選択後パラメータを変更すると、その時点で曲データにある音色データを直接変更します。
音色データが変更されるので、曲が次にそのデータを使用するときには変更した音色データで演奏することになります。
Rキーのデータ反映を有効にしている時は(デフォルトで有効です)、音色データ変更とともに、選択チャンネルに対してその音色データを書き込みます。
選択チャンネルがエディットしている音色で演奏している時に反映スイッチをオンにしてパラメータを変更すると、リアルタイムにエディットした音が確認できます。
逆に選択チャンネルがエディットしていない音色で演奏している時に反映スイッチをオンにすると、演奏している音色がエディットした音色で上書きされてしまいます。※エディットは音色データ自体に対して行うので、違う音色で上書きしても曲データがその音色を使うように変更される訳ではありません。
反映(Tキー)について
Y8950にはTLがモジュレータとキャリアの2つありますが、音量を設定する専用のレジスタはありません。
MMLでは音色と音量と分けて管理する形ですが、Y8950は音色自体が音量込みのデータとなっています。
このあたりどの様に扱うか悩んだのですが、細かい処理を省いて書くと以下の様な扱いになっています。
TL(モジュレータ)は直列の場合TL値そのままをレジスタに出力し、並列の場合
TLのデータ+MML音量値+エンベロープ値
の合算で最終的にレジスタに出力するTLの値を算出します。
TL(キャリア)では、TL値をそのままレジスタに出力するパターンは無く、並列のモジュレータと同じよう考えると
TLのデータ+MML音量値+エンベロープ値
ですが、これは単に音量にオフセットが掛かるだけになるので
TLのデータ+MML音量値+エンベロープ値
としてオフセットを省くことで処理を軽くするようにしています。
結果、TL(キャリア)は単にMML音量値+エンベロープ値となり、音色データとしては持たず、MML上の音量値で(+エンベロープ値と合算されて)常に書き込まれることになっています。(音量のオフセットは音量値指定で同じ音量が出せるので絶対必要ではありませんが、音量値自体はMML上必ず必要な為)
ですからエディタ上でこのパラメータを変更しても通常は何も変化はありません。右にあるMML DATAの羅列にもその項目はありませんし、音としても変化しません。
この反映(Tキー)スイッチをONにすることで、MML上の音量値+エンベロープ値に代わってTL(キャリア)が使われるようになり、一時的に音量値を変更できるような形になります。
ただし、曲データ上で音量が(エンベロープ含む)変更された時は、上書きされてしまいます。
OPLLエディタ
OPLLエディタも音色を登録してエディットするのは同じですが少し異なる部分もあります。
まず音色登録ですが、登録されるのは自作音色のみです。ROM音色はエディット対象外なので登録しません。

次に使用音色ですが、表記が違いXX/XXINSTとなっています。XXINSTの部分は、レジスタに書き込む音色番号なので00が自作音色、01-15がROM音色となっています。ROM音色の番号はプリセット音色の項目の[OPLLプリセット名]、@の付かない番号と対応しています。
-
- ※これはROM音色6番、オーボエが使用されています。
-
- ※これは自作音色の登録番号03番が使用されています。
音色登録はエディタモード中処理されているので、Y8950のエディットからOPLLに切り替えた場合でもOPLLの音色登録も同時に行われていますが、プレイヤーモードに戻ると登録処理は停止します。
使用音色の表示は、Y8950の場合は未使用のパターンがありますが、OPLLにはありません。OPLLは初期状態でROM音色3を選択している状態になっている為です。
反映について
Y8950の場合は曲データ中の音色データの書き換えとともに、選択チャンネルの音色レジスタにも音色データを書き込みましたが(データ反映)、OPLLは自作音色レジスタに対しての書き込みになります。OPLLの選択チャンネルは単に使用音色を確認する為に存在しています。