プレイレポート
スーパーファミコン音源をMIDIで鳴らせる「Super MIDI Pak」で,COSIOが“思い出のゲームサウンド”に挑む!
例えば幼い頃に車の中で聞いたカーステレオ、旅先で初めて見た滝の音、あるいは初デートで行った遊園地の音など……。
多くのゲーム(サウンド)クリエイターにとって,子どもの頃にプレイしたゲームのサウンドはまさにその1つだろう。
私・COSIOにとっては,ほぼ毎日のようにプレイしていたスーパーファミコン(以下,スーファミ)のゲームサウンドがまさにそれだ。そんな思い出のゲームサウンドを自分の手で自由に再現できるとしたら?
――2022年某日
早苗月 ハンバーグ食べ男(以下,食べ男):
COSIOさん。最近,スーファミの音をMIDIで鳴らせるカートリッジが出たらしいっすよ。
COSIO:
そんなことできるわけがない。そもそも,この令和の時代にスーファミのソフトがリリースされるなんて……。
食べ男:
まあ「らしい」って言うか,もう届いてるんですけどね。
COSIO:
マジで!?!?
食べ男:
𝒎𝒚 𝒏𝒆𝒘 𝒈𝒆𝒂𝒓...するにも自分だと正直持て余すので,お貸ししましょうか? (ニヤピクキラーン)……記事を書いてくれるなら!
そんなわけで夢のようなカートリッジ「Super MIDI Pak」がやってきたので,いろいろ試してみた!
Super MIDI Pakは,この令和の時代にもかかわらずリリースされた,スーファミ(と海外版のSuper NES,およびAnalogue製の互換機・Super Nt)で動作するゲームソフト(?)のカートリッジだ。通常のカートリッジと違うのは,なんとUSB端子とMIDI端子(ミニピン型)を備えており,そこからMIDI信号を送受信すること。そのMIDI信号のやりとりでスーファミに搭載されている音源チップ・SPC700をコントロールして演奏できる。
サンプルはサンプリング周波数32kHz・16Bitで,ADPCMの一種であるBRR圧縮(BRR=ビットレート削減の意。ここではスーファミの音源プロセッサに準じた形式を指す)にする必要がある。またサウンドRAMの容量は64KB(!)のため,一度に読み込むことができるサンプルの容量はなんと5秒程度。それでも当時としては画期的な音源だったようだ。
余談だが,この音源チップの設計者は“PlayStationの生みの親”として有名な久夛良木 健氏。そのためPlayStationの音源チップ(SPU)は,このSPC700がベースになっているらしい。スーファミとPlayStationに,こんなつながりがあるとは……なんとも感慨深い。
この画期的な音源チップ・SPC700については,人気音源チップのご多分に漏れず,有志によって解析やエミュレーションが行われており,検索すると様々なエミュレーター(プレイヤー)どころか,ソフト音源(VSTインストゥルメント)すら見つけることができる。
一方では,SCP700そのものを駆動させ音を出す試みもされている(例えばG.I.M.I.C)が,音を鳴らすためにはスーファミ用の音源データ(SPCファイル)を用意する必要があり,素人にはなかなかハードルが高かった。
話を戻すと,Super MIDI Pakでは,このような作成難度の高いSPCファイルを作らずとも,一般的に作成できるMIDIファイルもしくはMIDIキーボードがあればSPC700そのものを駆動できる! 何という夢のようなカートリッジ!(2回目)
肝心のサンプルに関しても,専用ソフト(後述)によってこれまた一般的なWAVファイルから作成でき,SPC700に書き込むことができるという。スゴイ!(語彙欠損)
ちなみにSPCファイルの読み込みにも対応しているので,何かの事情で“たまたまSPCファイルを持っているがSPC700でそれを鳴らすことが出来なかった”という人も夢が叶うぞ!
その他の機能の詳細は公式サイトをチェックしてほしい。
なにはともあれセッティング
さっそくセッティングしていこう。Super MIDI Pakのマニュアルはオンラインで公開されており,ここから読むことができる。海外製品(アメリカ製)のためマニュアルは英語で書かれているが,ブラウザなどの翻訳機能を使えばだいたいの部分は理解できるので,あまり英語を読めない人は活用してみよう。
さて,セッティングに話を戻そう。
まずはSuper MIDI Pakを実行するためのハードウェア,つまりスーファミがないと始まらない。これもカートリッジと一緒に渡された。
映像はスーファミのマルチアウトから専用のケーブルで出力されるビデオ信号(黄色端子)を,こちらは知人から借りた変換機(スケーラー)「FRAMEMEISTER」を使いHDMIに変換。それをキャプチャユニットを通してPCのOBS Studioに表示させた。音声は,同じくマルチアウトから付属のケーブルで出力される音声信号(赤白端子)をオーディオインタフェースに入力する。
なお,マニュアル内には音声信号をオーディオインタフェースにつないだ場合,ビデオ信号をTVにつなぐとグラウンドループノイズが発生するためビデオ信号は“接続するべきではない”という記述があるが,今回のセッティングではとくにノイズは発生しなかった。
ただ映像に別の変換機(HYPERKIN製)を使用したケースでは,確かに音声にノイズが乗ってしまった。接続する機器との相性によるものかもしれないが,こういった理由で,音声をキレイに録音したいときは,場合にもよるが映像の出力を諦める必要がある。まあ,詳しくは後述するがSuper MIDI Pakの映像はオマケみたいなものなので,無くても使用には差し支えないとは思う。
最後にPCからのMIDI信号をSuper MIDI Pakに送るためUSBケーブルを接続すれば,セッティング完了だ。
とりあえず起動して音を出してみた
セッティングが済んだのでスーファミの電源を入れて,ソフトを起動させてみた。
Super MIDI Pakを起動するとまずタイトル画面が表示される。その画面でコントローラーの[Start]と[R]を同時に押すと,メニュー画面に遷移する。と言っても,メニュー画面で選択できるのは「Test Mode」と「Credit」の2項目だけだ。
「Test Mode」ではコントローラーを使って簡易的に音を出せる。動画の通りキー配置が若干独特で慣れるのに苦労するが,簡単な曲なら演奏もできるぞ。なお[Select]+[R/L]ボタンで,鳴らす調の変更が可能だ。
MIDIキーボードで演奏してみた
ここまでなら普通のスーファミ用ソフト(と言うにはシンプルすぎるが……笑)と同じだ。「Super MIDI Pak」が真価を発揮するのはここから。いよいよ外部からMIDI信号を送信して音を鳴らしてみよう。
まずはMIDI信号を送るため,カートリッジとPCをUSB TypeA-Micro USBケーブルで接続する(Super MIDI Pakのパッケージには同梱されていないので,別途用意しよう)。PCと接続するとドライバは自動でインストールされる。
後はDAWなどを使って,MIDIキーボードの入力をそのままSuper MIDI Pakのポートへ出力すればOKだ。なお,MIDI端子をミニピン端子に変換するアダプタ(一例)を用意すれば,PCを介さずに直接MIDIキーボードからSuper MIDI Pakを鳴らすこともできるようだ。
DAWで鳴らしてみた
MIDIキーボードで鳴らせるなら,当然DAWからシーケンサで鳴らしてみたくもなる。ただDAWでSuper MIDI Pakをプレイするためには少し工夫が必要だ。
まずはSuper MIDI Pakをコントロールするためにブラウザを使ってWebアプリを立ち上げる。Webアプリはここからアクセス可能だ(ブラウザはChromeを推奨)。Webアプリを立ち上げると自動的にSuper MIDI Pakのポートが認識され,各種コントロールが可能になる。
「Super Midi Pak」Webアプリのページ
この後,DAWを起動してSuper MIDI Pakポートを指定し,MIDIデータを送ればプレイできそう……な気がするが,実はそうはうまくはいかない。Windowsの場合,1つのポートを使用できるのは1つのアプリに限定されるため,(参考)このようにWebアプリでSuper MIDI Pakのポートを使ってしまうと,DAWからは使えなくなってしまうのだ。
筆者もこの問題にぶち当たり半日ほどかけて試行錯誤した結果,なんとか無事にWebアプリを使用しつつDAWでSuper MIDI Pakを鳴らすことが出来たので,以下にその手順を紹介しよう。
まずMIDIのデータをアプリ間で転送できるようにするための仮想MIDIデバイスソフト「loopMIDI」をインストールした。なお,場合によってはマシンの再起動が必要になる。
次にいったんブラウザを閉じてWebアプリを終了する。その後DAWを起動し,使用するMIDIポートの設定を行う。このとき,Webアプリで使用するSuper MIDI PakのINポートとloopMIDIのOUTポートは使用しないように設定しよう
DAWによっては入力されてきたMIDIデータのSynEx(システムエクスクルーシブ)データをフィルタリングするように設定されている場合がある。WebアプリはこのSynExデータを使ってSuper MIDI Pakをコントロールするので,フィルタの設定は解除しておこう。
次に,MIDIデータをプレイするトラックは,出力をSuper MIDI Pakのポートに指定する。
さらにWebアプリからのデータをSuper MIDI Pakに送るためのトラックを追加しよう。空のMIDIトラックを追加し,入力にloopMIDI,出力にSuper MIDI Pakを設定し,トラックをモニタリング(INからのデータが常にOUTに出力される)状態にすればOKだ。なお,チャンネルの設定がある場合はAllにしておくこと。
ここまで設定できたら,先ほど閉じたブラウザを再び起動し,Super MIDI PakのWebアプリを起動しよう。ここで先ほどと異なりポートは以下のように設定する。
- Input Port:Super MIDI Pak
- Output Port:loopMIDI
これでDAWからSuper MIDI Pakを鳴らすためのセッティングは完了だ。
じゃあ例の曲,行ってみましょう!
Super MIDI PakにはデフォルトでGM(General MIDI)音源に準拠したサウンドが用意されている。とりあえず,それでゲーマーにとっておなじみの“あの曲”を演奏してみたぞ。
まずはデフォルトのサウンドを読み込むためWebアプリで「Load Factory Setting On Synth」ボタンを押す。この時点でエラーが出た場合は接続がうまく行われていないので,上のセクションを参考にソフトのセッティングや起動順を確認しよう。
そしてMIDIを読み込み,プログラム(音色)の設定をしたらプレイスタートだ!
いかがだろうか?
なんとなくスーファミの雰囲気は出ている気がするが……やはり自分が知っているスーファミの音はちょっと違う気がする。
俺のスーファミの音はこんなんじゃない!
スーファミよ! お前はもっとやれるはずだ!
もっと頑張ってみた
そもそも音がアレな原因は,音源(サンプル)にあるのではないかと考えた。
実際,デフォルトのサウンドでは100以上の音色に対応しているため,単純計算で1音色あたりの秒数は50msec(0.05秒)ほど。これでは音が薄くなってしまうのは当然だ。というわけで,使用する音色を絞り込み,自分でサンプルを用意することで,より高音質なスーファミっぽい音を目指してみたぞ。
何はともあれ曲がなければ始まらないので,簡単な曲を作ってみた。僕のスーファミの青春といえば現スクウェア・エニックスの某RPG(FではなくSの方)なので,それっぽい曲だ。
Super MIDI PakはMIDIに準拠しているため16チャンネル(パート)を使用できる。ただしSPC700の同時発音は最大で8つ。そのため同時に鳴る音が8音に収まるよう調整する必要がある。各パートはモノフォニック(1音のみ)にし,和音を使う場合はパートを分ける。また,各音の長さを調整して音が重ならないようにする。
音を響かせたいときはパートディレイ(同じ音を,音量を下げつつ連続して鳴らすことで,ディレイっぽい効果を得る)を使う手法が有効だ。このあたりは,筆者が昔経験したフィーチャーフォンやニンテンドーDSでのサウンド開発の経験を活かすことができた。
完成した楽曲は以下の画像の通り。
次に,この曲をSPC700で鳴らすための音源(サンプル)制作に移る。まずはそれぞれの音色を単音で再生し,それを録音(サンプリング)する。録音するデータの仕様はSPC700に合わせて,32KHz/16Bit・モノラルのWAVだ。
SPC700で1音色に使用できるサンプルは1つのみ。仕様上,全オクターブを鳴らせることになっているが,現実的には原音の±1〜2オクターブくらいが実用に足る範囲だろう。それを超える場合は,音程によってパートを分割し,それぞれに別の音程のサンプルを用意した方がいい(今回は1サンプルで賄えたため,これはやっていない)。サンプルに使う音程は,そのパートで使う音程の中間くらいになるように選択しよう。
この曲の音色は全部で8(楽音x5+リズムx3)なので,1つのサンプルに使える容量はだいたい0.6秒ぶん。まずはこれを頭に入れて,録音されたサンプルの長さを調整する。
次に,楽曲で使う音の長さに足りない部分を補うため,ループの設定を行う。ループの設定の仕方にもいくつかコツがあるのだが,長くなってしまうので割愛する。
ちなみに一般的なサンプラーと違い,WAVファイルに設定したループマーカーはSPC700では認識されないので,設定したループの時間は自分でメモしておこう。なおループの終端=WAVデータの終端となるため,ループエンドでWAVデータをカットしておく。
サンプルを用意できたら,これを先程のWebアプリで読み込もう。Webアプリ右枠の「Import Samples」ボタンから先程作ったサンプルのWAVを読み込むと,同じ枠に追加されていく。
このときループ指定するかを聞かれるので,ループ設定をしている場合はここで先述したループスタートの値を入力しよう。ただし筆者の場合,マニュアル通りにWAVの始点からの長さを指定したのにうまくいかず,副次的な方法である−(マイナス)の値によるWAV終端からの長さの指定を試してみたところ正常に処理された。なお,ループポイントの最小単位は0.5msecであることにも注意しておこう。
ループを設定したら,右枠のPreviewボタンを押してループ再生がうまくいってるか確認しよう。なお,BRR圧縮される関係でループ時にプチノイズが乗ってしまう場合は,ループポイントを少しずらしてノイズを軽減できるポイントを探ってみるといい。ループ設定をやり直す場合は,少し面倒だがいったん[X]ボタンでサンプルを削除してから,Import SamplesでWAVを読み込み直してループポイントを再設定する。
サンプルの読み込みが終わったら,右枠のAdd Entire Catalogue to Sample Directoryボタンを押すとサンプルを左枠に転送できる。この左枠では,サンプルを鳴らすための設定を行っていく。
各サンプルの横にあるPatch Settingボタンを押すと,サンプルのプロパティが設定できる。まず設定すべきなのは,サンプルの音程を指定するRoot Pitchだ。マニュアルではここに音程をfractional semitones(半音分数)で入力せよとあるが,要するにMIDIノートナンバーでOKだ(参考1,参考2)。音階とMIDIノートナンバーの対応は,ここを参考にするとよいだろう。
次に,各サンプルの番号部分のボタンを押すとSample#(番号)を設定(変更)できる。Drum Kit Modeで鳴らすサンプルには,この設定が必要となる。
Drum Kit Modeとはその名前の通りドラムチャンネル用の設定だ。このモードでは,C1(ド)ならバスドラム,D1(レ)ならスネアといった具合に,MIDIの音程に対して個別のサンプルを再生させられる。各音程で再生するサンプルの指定は,音程に対応したMIDIノートナンバーに128を足した数をSample#に設定することで行う。今回,ドラムチャンネルでは次の音程とサンプルを使用したので,それぞれのSample#は以下のように設定した。
- C1(MIDIノートナンバー24):BD(バスドラム) → Sample#152
- C#1(MIDIノートナンバー25):SDRim(リムショット)→ Sample#153
- F#1(MIDIノートナンバー30):HH(ハイハット)→ → Sample#158
ここまで来たら,万が一を考えて設定を保存しておこう。設定の保存は画面右上のExport Sessionボタンを押すと行える。保存した設定を読み込みたい場合は,Import Sessionボタンを押そう。これで不意にブラウザがクラッシュしても安心だ。
サンプルの設定が終わったら,画面左上にあるUpload Session to Synthボタンを押して,いよいよSuper MIDI Pakへ転送する。転送には多少時間がかかるが,転送中はカートリッジ内のLEDが点滅するのでうまく動いているかどうかはそこで確認しよう。転送が終われば,画面にアップロード完了のダイアログが表示される。
無事にSPC700にサンプルが転送できたら,最後に各チャンネルの設定を行う。これはWebアプリの左側にある「Channel (数字) Setting」のリンクをクリックすることで行える。主に設定をする場所は以下になるだろう。
- Sample:該当チャンネルで鳴らすサンプルの指定
- Volume:該当チャンネルの音量
- Pan:該当チャンネルのパン
- Vibrato Intensity;ビブラートの深さ
- Vibrato Rate;ビブラートの周期
- Portamento Time:ポルタメント(グライド)時間の設定
- Portamento Enable:ポルタメント(グライド)を有効にするか
ここで設定できる項目はMIDIのコントロールチェンジを使って設定を変更することも可能だ。筆者はWebアプリで設定を行ったが,MIDIファイルに設定を保存したい場合や,曲中でダイナミックに設定を変更したい場合は,コントロールチェンジを使用するのも良いだろう。設定値とコントロールチェンジの対応はマニュアルを参照のこと。
なお,ここでのセッティングは即座にSPC700へ転送されるので,MIDIデータを再生しながら微調整を行うこともできる。Drum Kit Modeを使う場合は,Sampleを設定せずにDrum Kit Mode Enableにチェックを入れればOKだ。これで該当するチャンネルがDrum Kit Modeで演奏される。
これでいよいよ,MIDIでSPC700を演奏できる準備が整った。DAWからSuper MIDI PakポートにMIDIデータを送信してみよう。設定がうまくいっていれば,スーファミの出力から自分で作った音色で曲が演奏されるはずだ。なかなかの感動の瞬間だぞ!
この後,MIDIデータを再生しながら各チャンネルの設定やサンプル,MIDIデータの微調整を行い,最終的に完成した曲がこちら。
先ほどのデフォルト音源よりは,だいぶスーファミっぽい感じの曲になったのではないかと思うが……いかがだろうか? せっかくなので,実際にスーファミでのゲーム開発に携わってきた先輩方に感想を聞いてみた。
●なかやまらいでん氏
前半は良いと思います。41secくらいでメロの音色が変わるのですが,そこへ入るところに軽くフィルがあっても良いなぁというのと,41sec以降はアルペジオとメロの音域が重なっちゃうので,例えばアルペジオのパートを4分刻みの高域ストリングスの刻みにしちゃうとか,バックのリズムもちょっと変えちゃうとか,変化させると良さそうです。スーファミの曲としては大丈夫だと思います。
●中潟憲雄氏
雰囲気出てると思います(^^)
ただ音色が洗練されているというか落ち着いてますね。当時はDX7やアカイのサンプラーあたりから波形抜いて音源揃えていたのでもっとギラギラしてたかな〜と思います。
完成度は高いと思いますよ。
とのことで,我ながら初めてSPC700を触ったにしてはそこそこそれっぽいものが出来上がったんじゃないかと思う。ただ,両氏の指摘にもあるようにまだまだブラッシュアップの余地はありそうだ。
またまだ検証できてないSPC700の機能もたくさんあるので,今後も引き続きSuper MIDI Pakを掘り下げてよりクオリティの高い曲の制作をしていきたいと思う。
目指せ! スクエニ! 目指せFF!!
「Super MID Pak」公式サイト
- この記事のURL: