音源仕様
以下、特に指定がなければ、ATmega168版(TGmega)、ADuC7026版(TG7026)、 V850版(TGV850)に共通の仕様です。 また、特に指定がなければ 2007/06/26 版 (V1.01) のソフトウェアに対するものです。
● MIDI 音源としての仕様
MIDI インプリメンテーション・チャートの形にまとめたものを示します。 (TGV850 は TG7026 と同様です)
詳しくは、インプリメンテーション・チャートを見ていただくとして、大体のところと、 チャートでは表現されない部分を説明します。
まず、スピードの制約、メモリの制約から、ATmega版は、ADuC7026版 / V850版の機能縮小版に なっています。
たとえば、ADuC7026版 / V850版ではデモ曲を3曲内蔵していますが、メモリの制約から ATmega版ではデモ曲を内蔵することはできませんでした。 ただし、ソースプログラムの #define 文を書き換えて、LCD サポートをやめて、 シーケンサー・サポートを有効にしてコンパイルし直せば、 デモ曲の演奏はできるようになっています。
ATmega版では、同時発音数は2、サンプリング周波数は約 16 kHz に固定です。 ADuC7026版では同時発音数は 1 から 5 までスイッチ操作で可変でき、 それぞれサンプリング周波数は変化します。 リセット後は速いチップでは同時発音数4、遅いチップでは同時発音数3の モードが選択されます。
V850版では、同時発音数 1 から 8、サンプリング周波数は約 56 kHz から約 12 kHz に なっています。
MIDI チャンネル当りの発音可能数は1、つまりモノ・モード固定で、後着優先の発音になります。 発音がオーバーラップする、つまり、前の音のノートオフ・メッセージが来る前に、 別の音のノートオン・メッセージが来たときに新たにエンベロープをトリガするか どうかの選択ができます。
音源の発音パートと、MIDI チャンネルの割り当て状況を LCD で確認し、 スイッチ操作で変更することができます。
各種コントロール・チェンジの対応としては、モジュレーション、ボリューム、 エクスプレッション、ホールド1、ポルタメントなどで、 チャンネル・アフター・タッチはモジュレーションと同じに扱われます。
ADuC7026版 / V850版ではリバーブ・センド・レベルも有効です。 簡単のため、パート 0 に割り当てられた MIDI チャンネルのリバーブ・センド・レベルで、 すべてのチャンネルのリバーブ量をコントロールしています。 チャンネルごとにリバーブ量を変えることはできません。
ディジタル・リバーブは、最も簡単な方法で実現していて、 ディジタル・ディレイをかけた信号をフィードバックしているだけです。 プログラム本体で未使用の RAM 領域をディジタル・ディレイ用 メモリに割り当てています。
V1.01 のソフトウェアでは、ディレイ量は約 100 ms で、同時発音数の変更による サンプリング周波数の変化にも対応していて、ディレイ量を一定に保ちます。 ただし、サンプリング周波数が高くて、ディレイ用メモリが不足する場合を除きます。
ピッチベンドもサポートしていて、RPN #0000H のピッチベンド・センシティビティーにも 対応しています。 RPN のコース/ファイン・チューニング、エクスクルーシブのマスターチューニングも有効です。
ピッチに関しては、ADuC7026版/V850版では、半音の 1/128、 つまり 100/128 = 0.78125 セントの分解能があります。 一方、ATmega 版では、半音の 1/16、つまり 100/16 = 6.25 セントの分解能です。
システム・エクスクルーシブでは、「GM / GM2 / XG / GS システム・オン」メッセージで 音源がリセットされ、LCD に表示が出ます。 ただし、単にリセットされるだけで、決してGM / GM2 / XG / GS 音源として 振舞うわけではありません。
「XG ディスプレイ・レター」でLCD にメッセージが数秒間表示されます。 このメッセージ画面用メモリは別に確保してあるので、元の画面には影響を与えません。
ADuC7026版 / V850版では「スケール/オクターブ・チューニング」の 1バイト形式に対応していて、平均率以外の音律にできます。 1バイト形式では、1セント単位でチユーニングを指定しますが、前述のように、 ピッチの分解能は 0.78125 セントですから、ぴったりとは合いません。
また、FM 音源の音色パラメータを個別にエディットするメッセージはありませんが、 現在 RAM 中にある音色データを一時的に置き換えるエクスクルシーブを、 独自にというか、適当にというか、定義してあります。
● FM 音源仕様
独自仕様の「FM 音源」にしてしまうと、音色エディタなどのサポート・ツールや 音色データなど全部自前で用意しなければなりません。そういう事態を避けるため、 既存の FM 音源とコンパチブルなものにして、既存のインフラを利用することにします。
サウンドブラスター全盛時代は、FM 音源といえばヤマハの 「OPL3」が標準と言える存在でしたが、 現在ではさすがに古くなりました。 現在は、携帯電話全盛時代ということで、ヤマハの携帯電話用音源 LSI の「MA-2」(YMU759)の 2 オペレーター・モードをターゲットとしました。 とは言え、現在最新の音源 LSI は「MA-7」ですから、「MA-2」は、 かなりの旧式のモデルということになります。
ツールとしては「YAMAHA SMAF GLOBAL」サイトからダウンロードして 無償で使える「SMAF オーサリングツール (ATS-MA2-SMAF)」を使用します。 SMF(Standard MIDI File)から SMAF ファイルへの変換機能、音色エディタ、 音色データはこのツールを利用しています。
このツール自体は配布ファイルには含まれません。 各自、御自分で「YAMAHA SMAF GLOBAL」サイトからダウンロードしてお使いください。
配布ファイルでは、音色データは、ALSA プロジェクトの「sbiload」プログラム 付属の OPL3 用のフリーの音色データ「std.sb」から変換したものになっています。 当然、MA-2 ネイティブの音色データのほうが品質が良いので、 ダウンロードした SMAF ツールの音色データ と差し替えることをお勧めします。
MA-2 の FM 音源部は OPL3 のマイナーチェンジ版と考えられます。 MA-2の詳しい資料を見つけられなかったので、ネット上を検索して得られた OPL3 の レジスタ解説の文書を参考に作りました。
SMAF ツールの音源シミューレータの音色と比較する限り、 ほぼ同一の音になっていると思います。
● 内蔵デモ曲 (ADuC7026版、V850版)
デフォルトではリセット後に自動的にデモ曲の演奏を開始するようになっていますが、 ソースプログラムの変数の初期値を変更してコンパイルし直せば、 デモ曲の自動演奏を禁止できます。
デモ曲の演奏は、スイッチ操作、あるいは GM システム・オン、オール・ノート・オフ などの MIDI メッセージにより停止することができます。 また、MIDI リアルタイム・メッセージのスタート、ストップ、コンティニューで、 それぞれデモ曲の演奏開始、停止、再開ができます。
デモ曲は、F.F.ショパンの 「幻想即興曲 (op.66)」の 最初の部分と、C.A.ドビュッシーの 「アラベスク第一番」の 最初の部分とを、それぞれ同時発音数3音に制限したものと、J.S.バッハの 「2声のインベンション第13番 」 です。
この音源自体の能力としては、ピッチベンドやポルタメントなどに対応しているので、 デモ曲としては、それらを活かせるような曲がいいとは思います。 しかし、現代の曲では著作権使用料が発生し、また、 ピッチベンドなどを駆使した MIDI データを作れるセンスも能力もないので、 クラシック曲を楽譜通りに、テンポも一定、ベロシティも一定でデータを作りました。
デモ曲演奏機能は、遅いADuC7026チップで開発している時期に実現したものです。 サンプリング周波数 16 kHz 程度では、同時発音数は3音がやっとでしたから、 デモ曲も同時発音数3音でなんとか演奏可能なものを選びました。
基本的には、ピアノ曲で、右手で主に単音のメロディ、左手でアルペジオという構成の曲で、 メロディに1音、アルペジオのベース音に1音を割きペダルの踏み替えまで音を残し、 あと1音でアルペジオの残りの音を鳴らしています。
譜面上で4声以上になっている部分は、どうしようもないので、適当に3音だけ出しています。 幻想即興曲とアラベスクが途中までなのは、データサイズを小さくするためでもありますが、 後半やコーダの部分で多声部の和音が使われているのでどうにもならないという面があります。