<< 目次に戻る

YM2203・YMZ294・SP0256を使ったハードウエアMIDI音源の製作
ファームウエアと音源の仕様

ファームウエア

ファームウエア Ver.0.96 7,796ワード(95%)使用中
メモリマップの青い部分は音程データが占める領域です。
メモリマップ

構成図

構成図
演奏データは一般的なMIDI音源と同じように一度演奏パートに入り、各種フィルタを通過して割り当てられたボイスに出力されます。
各パートのボイスはSC-55のパーシャルリザーブのように必要に応じて自由に設定できるようにしてあるので、 FM3音・SSG12音ポリフォニックのようなセッティングも可能。 また複数パートに同じMIDIチャンネルを割り当てる事もできるようになっているので、FMとSSGをレイヤーさせることもできます。
YM2203のSSGボイスは演奏に使用せず、タイミングクロックに同期したメトロノームとして動作するようにしています。

MIDIインプリメンテーションチャート

FW Ver.0.90受信備考
ベーシックチャンネル電源ON時1-16自由に定義できる。
リセット・電源オフで初期に戻る。
設定可能1-16
モード電源ON時モード3モードメッセージを受信してもモードは切り替えず、
オールノートオフを実行する。
メッセージ×
代用×
ノートナンバー
音域
YM220312-107範囲外の値のチェックは行っていない。
YMZ294 トーン24-127
YMZ294 ノイズ36-67
SP02560-63 
ベロシティノートオン1-127分解能はYM2203は64段階、YMZ294は16段階。
SYSEXでパートごとに対数・リニアカーブの設定ができる。
SP0256では無視される。
ノートオフ×
アフタータッチキー別× 
チャンネル別-64~+63の間で送信済みのベロシティを加減算して音量を相対変化させる。
ピッチベンドLSBは無視する。
SP0256のクロックは0を境目にクロックの高低を切り替える。
コントロールチェンジ6データエントリーMSB
ピッチベンドセンシティビティのみ実装し、範囲は0~63半音。
7メインボリュームMSB
11エクスプレッションMSB
64ホールド1
0-63:OFF
64-127:ON
98,99NRPN LSB, MSB
(データエントリーを無効化するために実装)
100,101RPN LSB, MSB
(ピッチベンドセンシティビティとRPNヌルを実装)
120オールサウンドオフ
ハード的に消音、ノートオフはしない
121リセットオールコントローラ
EXP=127, BEND=64, RPN=NULL, HOLD=OFF
123オールノートオフ
ノートオフ、サステインへ移行
プログラムチェンジYM2203120-127EEPROMプリセット呼び出し
YMZ2940-1270-125はトーン、126はノイズ、127はミックス
エクスクルーシブメーカーIDは7Dh、デバイスIDは01h
コモンメッセージ× 
リアルタイムクロックYM2203の未使用になっているSSGをメトロノームとして発音させる。
コマンド
その他アクティブセンシング× 
システムリセット×

受信するコントロールチェンジ

コントロールチェンジ
青色は一般的なMIDIコントロールチェンジ
赤色はMidiTalk専用のコントロールチェンジ
灰色は未実装のコントロールチェンジ

音源の音色情報は全てコントロールチェンジに割り当てられているので、FM音源のパラメータでも簡単に設定することができます。
RPN・NRPN・データエントリーはピッチベンドセンシティビティーとRPNヌルのために実装しました。
ピッチベンドセンシティビティーは1~63半音(5オクターブ強)が指定できるので、たいていのSMFは演奏できるでしょう。
プログラムチェンジは空いているデータEEPROMにFM音源のパラメータを入れておいて後から呼び出したり、SSGのノイズミキサの役割をしています。

それぞれのパートではベロシティ・ボリューム・エクスプレッション・プログラムチェンジのフィルタが付いていて必要なときに受信しないようにできます。


エクスクルーシブメッセージ

エクスクルーシブメッセージも実装しています。他社音源のリセット受信を実装するのが一番面倒でした。
MidiTalkリセット電源投入時と同じリセットを実行する。
受信チャンネル定義パートが受信するチャンネルを定義する。パートをミュートすることも可能。
ボイスアサイン定義パートに所属するボイスを定義する。ボイスをミュートすることも可能。
全パートチューニング一括変更標準440HzとSP0256向け444Hzの周波数テーブルを切り替える。
メトロノーム動作の定義YM2203のSSGチャンネルを使ってMIDIクロックに同期したメトロノーム音を鳴らす。
他社音源のリセット受信フラグGM1オン/オフ・GM2オン・GSリセット・88モードセット・XGオンを受信した時にMidiTalkリセットを実行する。
レジスタダンプの発音日本語発音か、英語のフォネティックコードで発音かを選択する。
(パート毎)ベロシティ受信フラグノートオンのベロシティを127に置き換える。チャンネルプレッシャーのON/OFFを切り替える。
(パート毎)ボリューム受信フラグボリュームコントロールチェンジを無視する。
(パート毎)エクスプレッション受信フラグエクスプレッションコントロールチェンジを無視する。
(パート毎)プログラムチェンジ受信フラグプログラムチェンジを無視する。
(パート毎)FM音源の音量対数カーブ補正FM音源のTLに代入する音量の対数補正を行う。
(パート毎)SSG音源の音量対数カーブ補正SSG音源の音量を対数からリニアに補正を行う。
(パート毎)ボリュームの変更レイヤーした裏パートを変更する時に使う。
(パート毎)エクスプレッションの変更
(パート毎)ピッチベンドの変更
(パート毎)ピッチベンドセンシティビティの変更
(パート毎)SSG音源のエンベロープ波形変更
(パート毎)チューニング変更サブパートでデチューンさせるときに便利
FM音源プリセット保存指定したFMボイスの音色情報を内蔵EEPROMのプログラムチェンジ120~127に保存する。
FM音色プリセットダンプFM音源用のプログラムチェンジ120~127に保存されている音色情報をSP0256を使って喋らせる。
FM音色ワークエリアダンプFM音源の音色ワークエリアのメモリ内容をP0256を使って喋らせる。この内容をライブラリに登録することができる。
デバッグ用音源レジスタ設定音源ICに直接データを書き込む。
デバッグ用レジスタダンプPIC内のレジスタのダンプをSP0256を使って喋らせる。

<< 目次に戻る