みなさん(って誰だ?)
,SPCってご存知でしょうか?
SPCとは簡単に言えば,SNES(スーパーファミコン)
の曲の保存形式です.
と言われても普通はピンと来ませんよね.大体ソフトごとにサウンドドライバが違うんだし,データ形式は千差万別でしょ,同一の形式で保存できるはずが無いです.
しかし,SNESは サウンドCPU+DSP+RAM がほぼ完全にメインから独立していて,サウンドRAMに サウンドドライバ+波形データ+曲データ がまとめて入っています.
つまりそこを保存してやれば,曲を保存したも同然ということ!
都合の良いことに(なんと!)
SNESのサウンドバッファはたったの64KB.
別にまるごと保存しても全く問題無い大きさです.
というわけで,演奏直前状態のサウンドバッファ(正確に言えばSPCレジスタ等も)
をレジュームして生まれたのが,SPCというわけ.その代わり再生ソフトではSPC700(SPCっていうのはSound専用CPUのこと)
とAPU(波形の合成を行うDSP.SPCに内蔵)
のエミュレートを行うため若干重いのが難点ですか.
それで,プレイヤーはいろいろあります.
WinAmpのプラグインとして公開しているspcamp,SNES9x系列のWinSPC,とか線形補間,チャンネルマスクが出来る黒猫SPC等,探せばいろいろあるんですが,ここで紹介するのはOpenSPC.
DOS用なんですが,チャンネルステータス表示が出来たりして通好み.
ってそれ以上に驚きなのが,なんと IT形式にダンプ(ひたすらノート等の変化を記録していくだけとも言う)
できるんです.
これで,世の中の全てのSNESのサウンドがMODになるわけです(笑)
.
とりあえず変換すれば音取りなんかにも使えますし,どんな波形が使われていたのか知りたいときも見れますし,当然流用できちゃいます.例えばFF6のサンプルで曲作るとか,そういうこともできるわけです.凄いねえ.著作権ヤバそうだけど.
他にはMPPなんかでMultiPoint補間なんかを掛けてやれば他spcplayerで聞くより音質いいかもしれません(SNESのエコーなどのエフェクトは再現されないけど,ばれないっしょ)
.
ということで適当にダンプしたのを置いておきます.
ループとか合わせてないので可笑しいですけどサンプルということでご勘弁を(^^;;(結構整合性取るの面倒なので)
比較的まとまって手に入るのがZopharのspc archiveです.
国内ではSPC MUSIC LIBRARYが最強らしいです(製作者本人談(笑),オリジナルやZopharで落として修正したりしてクオリティが高くなっているアーカイブがある)
.
あとはSPC WebRing等を廻って地道に漁る,とか自分でZSNESで気合で採るしかないか(データ作成方法はIntermindを参考にすると良いでしょう)
.
それから基本的にSPCというのはROMの副産物であり,あまり著作権上よろしくないことを忘れない方がいいと思います.
しかし何度聴いても64kbで再現されているとは思えない曲ばかりです.
スクウェアとかコナミとか,超絶としかいいようがありません.
64KBに 波形データ(ADPCMもどき?)
とドライバとシーケンスデータが入っているなんて信じられません.いや効果音もその中に入っているから実質的に音楽に使える分なんて30〜40KBだっただろうし.とにかく狭い.狭すぎる.
音楽だけでもmegademoですよ.TBLに匹敵するくらいの(そりゃ言い過ぎか)
.
といってもオープニングで歌うRPGは,バッファを2つ用意して片方鳴らしている間に片方をROMから転送したりしているので,本当は64kbを超えているのも有りますけど(当然SPCでは正常に再現できない)
.
あと面白いのはFF6の波形データ.結構手書きで書いたようないい加減な波形を多用する上に1曲あたり使っている波形データの種類が意外と少ない.重厚な音楽という印象が合ったので容量沢山食ってるんじゃないかと思いきや,実際はそんなにたくさん(1曲あたりは)
使ってないみたいです.シリアスな曲でも,実際はとんでもない波形が使われていたりすると笑ってしまいます.
それとは対照的にコナミは正統派のようです.パロディウスだ,のようにお茶らけた曲調でも波形にはシンセサイザから採りこんだような波形を大量に使っています.
実際に耳で聞いている音楽の裏側にこういった製作者(打ち込み人やサウンドドライバ開発者)
の性格というか遊びが分かるだけでも結構楽しいものです(もしかして僕だけか?)
.
最後に,どうでもいいこと.SNESのボイス数は最大で8ですが,ITにダンプすると16chになります.なんで16ch?と思ったんですが,どうやらMODにはpanとvolumeとpitchを同時に変更することが基本的には出来ない(できない,と断言してしまうと嘘になるけど)
という欠点の回避の為にLとRで別々のチャンネルを用意して,panコマンドを回避した,ということみたいです.
やっぱこういうのって構造的欠陥としか言いようがないよねえ.何か上手い方法はないのか?