スーファミサウンド劇場 第3話 衝撃のチューニング


あれから2日でコマンドプロンプトとqSPCの使い方を覚え、2週間くらいは自作のMMLをコンパイルしまくって練習していた。


このときのサンプリングデータは、あらかじめPA Gamesさんが用意したものしか利用できなかったが、僕がC700でサンプリングデータを作っていることを伝えると、C700から出力されたサンプリングデータも読み込めるように対応してくれたのだった。

よし、それではqSPC用にサンプリングデータを作ってみるか。楽器は普通、440Hzで調律するものだからqSPC用の音色データも440Hzの音程をサンプリングすればいいだろう……そう単純に考えていた。

 

◆ PCM音源について

スーパーファミコンの音色データはBRR(Bit Rate Reduction)という方法で圧縮されており、この波形データは先述の通りPPSE部さんのC700という素晴らしいツールで用意することができる。ただ、厳密にいうと、BRRの仕様では440Hzはおろか、平均律の音程をそのまま録音してサンプリングデータとすることに難がある。

どういうことなのか。PA Gamesさんの解説が詳しく、分かりやすかったので引用しておく。


BRRでは8バイト+ヘッダ1バイトで1ブロックを構成し、これがBRRデータの最小単位になります。
8バイトのデータは4bit(0.5バイト)のサンプル×16個なので、ループ有効時は16×n個のサンプルをループさせることになります。
このような仕様のため、ループさせるサンプルのオリジナル周波数は

1ブロックでループ:32000/16 = 2000Hz
2ブロックでループ:32000/32 = 1000Hz
3ブロックでループ:32000/48 = 666.666…Hz
4ブロックでループ:32000/64 = 500Hz


という系列のどれかから選ぶ必要があります。


なるほど、C700に関しては一般的なサンプラーとして音楽家が使いやすいように作られているので、その辺りは実機でも上手く鳴るようにドライバ側で調整してくれているのだろうか。

PA Gamesさんの見解としては、スーファミ実機にその機能はないので、上記の仕様に合わせてBRRデータを作って下さいとのことだった。確かにBRRデータから平均律の音程を作っていくことを考えると、初めからハードの仕様に合わせて最適なデータを作っておいた方が楽器同士のピッチも合わせやすく、音質向上とサンプル数の節約に繋がるのでは……という個人的な憶測があったので、素直に上記の系列で試してみることにした。

 

◆ 500ヘルツで調律する

それにしても寝耳に水だった。平均律では500Hzとか666.666…Hzという音程は存在しない。調律可能な楽器であればチューナーを使ってこれらの周波数に合わせて録音することはできるが、調律不可な楽器やチューニングが面倒なものであれば、後からピッチシフトをかけてサンプリングするしかない。でも、僕はこういう一般的ではないことをするのが好きだ。

いろいろと試した結果、個人的には4ブロックでループさせる500Hzのモードが音質とサンプル数のバランスが取れていて気に入っている。この場合、平均律ではB4の音程(493.883…Hz)が500Hzに近く、B4の音をサンプリングしたものにピッチシフトをかけて、だいたい500Hz前後に持っていくと、C700やqSPCでの楽曲のピッチを合わせやすく、全体として綺麗にまとまる印象である。

そのサンプリングデータの作成方法は今後、レポートとしてブログに書くことにした。

しかしまあ、500Hzだとか666.666…Hzといった系列の波形から平均律の音程を作っていくという仕様が、スーファミの音源の隠し味なのかもしれない。

このようにしてqSPCの開発は順調に進み、ドライバの開発開始から2ヶ月ほどで、オリジナルのサンプリング音源を鳴らすことができるようになっていた。

しかし、そのサンプリング容量は9KBと、とても限られたものだった……

つづく