SE(効果音)関連講座

(1996/8/16 更新)
 ここではSE(効果音)に関する話を取り上げます。とはいえそんなに難しい事はありませんが、 私が開発中に得た知っておいて損はないノウハウなどを提供しようと思います。
・SEが鳴るまでには   PSにおけるSEの基本的な説明
・SEを鳴らそう     SEの鳴らし方についての説明
・属性定義ファイルとは? 属性定義ファイルについての説明
・用語説明        用語の説明

・SEが鳴るまでには

 実は鳴らす事自体は簡単なんですが、前段階として準備しなくてはいけない「データ」を作成 するのが大変なんですね。曲を鳴らす場合はSCEIから提供されているファイルを使えば音色 の問題は解決し、自前でスタンダードMIDIファイルさえ準備できれば何とか曲を鳴らす事は できます。しかし効果音の場合、まず元となるファイルが必要です(まあ、標準ファイルを そのまま使ってもいいんですが・・・)。指定では Macintosh のAIFF形式か Windows の WAV形式、もしくは16bitストレートPCM形式となっています。
 では、そのファイルが準備できたとしましょう。ここからまず aiff2vag.exe を使うまではいい んですが、次の段階の mkvab.exe を使う時に「属性定義ファイル」が必要と書いてあります。 (が、これが曲者でマニュアルに書いてある説明で内容は分かるんですが、「実際のファイルの イメージ」がわからないので、僕はここで苦労しました。何とか探し出して中を見て納得。) そして無事に通過したらあとは vabsplit.exe を使って最終的なVB,VHファイルを作成して やっと「データ」が完成となります。
 後はPSのメモリにロードして、プログラムから呼び出してやるとサウンドが使えます。

・SEを鳴らそう

 やっぱり音があるといいですよね?手間はかかりますが頑張ってSEを鳴らしてみましょう。

 手順をまとめると次のようになります。

 1:SEのPCMファイル(AIFF形式かWAV形式か16bitストレートPCM形式)を用意する。
   複数のSEを使う場合はもちろんその分だけファイルを用意する。
 2:個々のファイル毎に aiff2vag.exe を使ってVAGファイルを作る。
 3:SEをどのようにマッピングするかを決め、属性定義ファイルをテキストエディタで
   作る。(例を後述)
 4:全てのVAGファイルと属性定義ファイルを使って mkvab.exe を起動し、VABファイル
   を作る。
 5:VABファイルを vabsplit.exe でVBファイルとVHファイルに分割する。
 ここまでは前段階です。次に、プログラムでの扱いを説明します。
 6:関数 SsVabTransfer を使って、メモリにロードされているVBファイルをSPUバッファ
   に転送する。返り値は識別番号なので覚えておく。
 7:鳴らしたいところで関数 SsUtKeyOn を呼び出す(これで音が鳴る)。
 8:プログラム終了時には関数 SsVabClose を呼び出してクローズする。
 これでSEが鳴ります。データ作成は面倒だけど、ぜひ挑戦してみて下さい!

・属性定義ファイルとは?

 SEを鳴らそうとして最初につまづくのがこれではないでしょうか?サンプルが見当たらないし、 VABファイルから生成できるといっても、VABファイルも見当たらない・・・。 さて、どーしたものか?と悩みましたが、実は /PSX/BIN ディレクトリ内の SIMPLE.DEF が属性定義ファイルのサンプルだったのです!もう、あるんだったら最初からマニュアルに 書いておいて欲しかったなあ、ぶつぶつ。
 まあ、ものがあったからよしとしましょう。では、以下書き方の説明をします。属性定義ファイルはテキスト 形式なので、通常のテキストエディタで作成します。以下サンプルを示し、補足説明をします。

(ファイルはここから)
VabHdr
        form = 'VABp'
        ver = 0x7
        id = 0
        fsize = 0
        ps = 1      <全プログラム数(1個)
        ts = 1      <全トーン数(1個)
        vs = 1      <全VAG数(1個)

ProgAtr 0        <プログラム番号(0番)
        tones = 1    <プログラム中のトーン数(1個)
        mvol = 127
        mpan = 64

VagAtr 0 0       <プログラム番号、トーン番号(0番、0番)
        prior = 0
        mode = 0
        vol = 127
        pan = 64
        center = 60
        shift = 0
        min = 0
        max = 0
        pbmin = 0
        pbmax = 0
        ar = 127
        dr = 0
        sr = 0
        rr = 31
        sl = 15
        prog = 0
        vag = 1     <VAGファイルの何個めを使うか(1から始まるので注意!)

vsize
        0

(ここまで)

 ここで重要なのは「プログラム>トーンの階層構造」です。 で、1つのプログラムに最大16個のトーンが定義できます。 つまり、SEの総数が16個以下であればプログラムは1つ定義するだけでいいわけです。 逆に、16個を超える数のSEを扱う場合は、必ず2個以上プログラムを定義する必要があります。 上記の例では、1個しかSEが無いためプログラム0番、トーン0番に割り当てました。 複数のSEを使う場合、その数だけ VagAtr セクションを定義する必要があります。 個々のパラメータについてはマニュアルを参照して下さい。ただし、ADSR(エンベロープ)に ついては、シンセサイザの基礎知識が必要ですので、わからない人は上記サンプルの数値をそのまま 使用して下さい。
 それと、定義中で「このトーンにはどのVAGファイルを使うか」を指定しますが、 mkvab.exe を実行する時にパラメータで並べた順番に1から番号が 割り振られるようです。よって、定義ファイルに変更はなくても、 mkvab.exe 実行時に パラメータの並びが変わると、音が違ってくるので注意が必要です。

・用語説明

 サウンド関連には独特の専門用語があります。ここではマニュアルに記載されてあるが説明がなされて いない単語を中心に簡単に解説します。間違いがあったらびしばし指摘して下さいね。

「スタンダードMIDIファイル」
MIDIにおいて標準的に使用されているデータフォーマット。SMFという略称で呼ばれる事も多い。 フォーマット0、フォーマット1などの形式の違いがあるので、SMFだからといってフォーマットが同じ とは限らないから注意。プレステのツールでは現在フォーマット1しか対応していない。
「ノート」
音程を表わす。MIDIではノートナンバーで、どの音程で鳴らすかを半音単位で指示する。 例えばノートナンバー60はオクターブ4の「ド」の音を示す。半音単位だから、ノートナンバーに 「12」を加えると1オクターブ上の音になる。プレステではセンターノートとあるが、これはおそらく PCMデータを取り込んだ時の音をどの音程とみなすか、を指定するものであると思う。
「パンニング」
音が左右のどのあたりから発音するかを示す。0から127の値をとり、0で左、64で真ん中、 127で右から音が出る。
「ピッチベンド」
プレステでのピッチベンドは一般的な意味と違い、通常「トランスポーズ」と呼ばれているものと 近いようだ(試してないからわかんない(^^; )。



 また続きを書きますので、今しばらくお待ち下さいませ。m(__)m


ホームに戻る