サウンドデータの受け渡しについて

このファイルでは、サウンドクリエイタから貰ったデータを、プログラムで
再生するために、サウンドクリエイタとの間で確認しておかなければ行けない
事項について、まとめたものです。

★MIDI
MIDIを再生させるためにプログラマの必要な情報は次のような情報です。
1)MIDIシーケンスバンクの数
  楽曲の音符情報をMIDIシーケンスといいますが、このシーケンスの集合を
  「MIDIシーケンスバンク」といいます。MIDIシーケンスバンクは、複数持つことが
  できるので、サウンドクリエイタから貰ったMLTファイルが、いくつMIDIシーケンス
  バンクを持っているか知る必要があります。
2)個々のシーケンスバンクを構成する曲
  それぞれのシーケンスバンクには複数の曲が含まれていることがあります。
  どのシーケンスバンクの何番目の曲は何の曲なのかをサウンドクリエイタに確認
  しておく必要があります。
3)シーケンス曲と、MIDIプログラムバンクの関係
  MIDIシーケンスが楽譜情報とすると、その楽器情報を「MIDIプログラム」といいます。
  MIDIプログラムもMIDIシーケンスと同様いくつかのものをひとまとまりにして、
  おくことが出来、これを「MIDIプログラムバンク」といいます。MIDIシーケンスと、
  MIDIプログラムは対になっているので、どのMIDIシーケンスがどのMIDIプログラム
  バンクを使用するのかを知っておく必要があります。
  これは、個々のMIDIシーケンスバンクを差し替えた時に、同時にどのMIDIプログラム
  バンクを差し替えなければならないのかを、知っておかなければ、MIDIシーケンスの
  差し替えが出来ないためです。
4)MIDIシーケンスと、FXプログラム番号の関係
  MIDIシーケンスにFXによるエフェクトをかける時、どのシーケンスがどのFXプログラム
  を使用するのかを知らなければ行けません。
  シーケンスの要求に合ったFXプログラムとFXアウトを指定しなければFXはかかりません。
  ※FXをかけない場合は、この情報は必要ありません。

★ONE SHOT
1)SEとバンクの関係
  ONESHOTは主にSEを目的とした一発再生用の再生方法ですが、ONE SHOTを再生させる
  ために、どのSEがどのOne Shotバンクの何番目なのかを知る必要があります。
  その情報をもとに、OneShot再生関数に引数としてそれらの値を渡します。
2)使用するFX
  サウンドクリエイタは、One Shotの音それぞれにどのFXプログラムを使用するのかを
  設定することが出来ます。プログラマはどのSEがどのFXプログラム、どのFXアウト
  を使用しているのかを確認し、One Shotを再生する時に、FXプログラム番号と
  FXアウトを指定します。
  この設定が、サウンドクリエイタ側と一致していないと、FXはかかりません。
  ※FXをかけない場合は、この情報は必要ありません。

★PCM
1)リングバッファの番号およびサイズ
  PCMを再生させるには、サウンドRAM内にリングバッファを用意しなければいけません。
  リングバッファの設定はサウンドクリエイタの仕事で、その際にそれぞれのリング
  バッファにサイズを割り振ります。
  一つのリングバッファは、一つのチャネルで占有されますので、1本のステレオPCMを
  再生されるには、2本のPCMストリームバッファが必要になります。
  そして、その2本は同じサイズでなければいけません。
  サウンドクリエイタが用意したPCMストリームリングバッファの本数によって最大の
  PCMストリーム再生の同時再生本数が決まります。
  PCMストリームを再生させるには、どのリングバッファを使用するのかをプログラムで
  指定する必要があるので、サウンドクリエイタがPCMストリームリングバッファを
  いくつ用意して、何番のリングバッファのサイズがいくつかを、把握しておく必要が
  あるのです。
  なお、ステレオの場合、バッファ番号が連番になっている必要はありません。
  上の条件を満たしているのであれば、0番と1番を使うのも、2番と6番を使うのも、
  動作に違いはありません。
2)FXのインプットチャネル
  OneShotや、MIDIについては、データ作成時にサウンドクリエイタがFXの入力
  チャネルを指定しましたが、PCMストリームの場合プログラマが指定します。
  そのため、FXインプットチャネルの何番がどのFXを使用していて、PCMストリームは
  何番を前提にしているのかを、確認する必要があります。
  ※FXをかけない場合は、この情報は必要ありません。

★GDDA
GDDAは、ディスクのどのトラックにどの曲データをおくのかは、プログラマに
依存していますので、データを貰ったら、その配置は自由です。もちろん何処に
配置するかはプログラマは知っていますので、APIにはそのトラック番号を指定
してあげればいいわけです。
但し、アプリケーションの性格上、どの曲を何番目に配置しなければならないかが
明確に決められていた場合は、それにしたがって配置することになります。
また、GDDAにもFXはかけられますが、FXインプットチャネルは決めうち(16番:Lと17番:R)
ですので、使用しているのか、いないのか、あるいはFXプログラムバンクの差し替えが
発生するのかを確認しておく程度で大丈夫です。
