【FC音源】ファミコンをエミュレートしたプラグイン『RP2A03』でチップチューン作り

今回は、「SOCALABS 8-BIT TREATS」のうちの一つ、ファミコンを模した「RP2A03」の仕様を見てみます。

 

任天堂のファミコンといえば国内では知らない人はいないであろう、ゲーム業界の金字塔ハードウェア。去年の2016年11月、ファミコンのクラシックミニが発売されて話題となり、今年の2017年10月にはスーパーファミコンのクラシックミニが新たに発売されました。

ファミコンのクラシックミニは去年の発売以降、一旦生産中止となっていましたが、今年のスーファミのクラシックミニが発売されるとほぼ同時に生産再開することになったようです。スーファミの方も、来年以降も生産していくようですね。

2017年11月くらいでは、実店舗にまだファミコンミニの姿は見えてなかったのですが(私の地域では)、クリスマスにはなんとか少ないながらも間に合わせてくれるんじゃないかなぁとは思います。

SWITCH・スーファミミニ・ファミコンミニ・・・任天堂は大忙しですねぇ。

 

スポンサーリンク

RP2A03の仕様を確認

さあ、早速プラグイン「RP2A03」を使ってみましょう。RP2A03の仕様は、

  • Ricoh 2A03をエミュレート
  • 矩形波チャンネルが2つ
  • 三角波チャンネルが1つ
  • ノイズチャンネルが1つ

ですので、これにDPCM(サンプリング音)を1チャンネル分加えてやることで、ファミコン音源の再現の形は整いそうです。

 

ちなみに、PSG音源のWikiの後半に、

  • パルス波(矩形波)発生装置 2系統(デューティ比3:1、1:1、1:3、1:7切り替え)
  • 三角波発生装置 1系統(4bit波形、音量は仕様上固定だが、DPCMと絡んだバグに近い挙動が存在し、これを利用するといじることが出来る)
  • ノイズ発生装置 1系統(擬似乱数雑音・短周期ノイズ切り替え、周波数変更が可能。ただし、最初期型(コントローラのボタンが四角いゴム)のファミコンでは短周期ノイズは出せない)
  • DPCM 1系統
  • ミキサー

という仕様の音源がRP2A03に組み込まれていて、これをpAPUと呼び、そしてこのpAPUのパルス波発生装置はゲームボーイ・ゲームボーイアドバンスにも使用されているとのこと。

・・・おや、「SOCALABS 8-BIT TREATS」のゲームボーイ音源のプラグイン名が確か「PAPU」でしたね。

 

実機のゲームボーイは、

CPU:シャープ製のLR35902にサウンドなどの機能と共に組み込まれている。

出典:ゲームボーイ – Wikipedia より

ということなので、サウンドも司るCPU名をプラグイン名にということであれば、ゲームボーイ音源プラグインの名は「LR35902」でも良さそうなものですが、ゲームボーイ音源は、初代ファミコン音源のデューティ比切り替えの出来るパルス波を持つという特徴があるので、そちらの方を優先させて「PAPU」という名を付けられたのではないかと思います。

 

DPCMとは

そもそもDPCMとは、「差分パルス符号変調」といって信号の圧縮方式のこと。ファミコンではこの方式を音の圧縮に取り入れて使用しているので、

ファミコン音源でいうDPCMは「音の荒いサンプリング音」

と捉えて頂くとわかりやすいかと思います。

 

こちらの動画が非常にわかりやすかったのでご紹介。

サンプリングとはいえ、ファミコンの容量ではどうしてもデータを小さくしないといけないため、音がザラザラといいますか、通信が途絶える一歩手前のトランシーバーみたいな音になってしまいやすい。

なので、マリオ3のあの抜けのいいパーカッションの音などは逆にビビります。凄い。

 

FamiTrackerのDPCM部分のサンプルを見てみると、画面右側「Loaded samples」の下に0~8までの系9個の音がサンプリング音として収録されていました。0~4までは、A#・B・C#・D・Dの音がサンプリングされ、5~8にはパーカス・リズム音が使われています。

実際にこの辺りは8bitのゲーム内での容量の許す範囲内で、ということですね。

 

スーパーマリオ3では、DPCMにドラムキットなどのパーカス音が思ったよりふんだんに使われているのがわかります。

実機におけるDPCMの具体的な音の出し方については、私にとって理解が届かない部分も多かった為ここでは割愛しますが、ひとまずこの記事でのファミコン音源再現としてのDPCMは、幾つかの低ビットレートを想定したサンプリング音ということで話を進めていきます。

 

以下、DPCMについての参考ページ。

  1. こちらのページ中盤のDPCMの項目
  2. こちらの記事、冒頭部分
  3. こちらの記事、中盤のDPCM

 

 

RP2A03の操作方法

前置きが長くなりましたが、RP2A03のプラグイン画面を見てみます。

  • 矩形波チャンネル2つ、どちらもスウィープ機能あり(画面左)
  • 三角波チャンネル1つ、ON/OFFのみでTuneとFineのみ(画面右上)
  • ノイズチャンネル1つ、音量0~100%、切り替えON/OFF(画面右下)
  • 一番右下に全部の音のトータル出力調整
  • Pulse:矩形波の音量。0~100%
  • Duty Cycle:音色の変化。duty比:12.5%、25%、50%、75%4つ
  • Tune:キーの変更1単位で1半音、-48~+48まで
  • Fine:更に細かいピッチ変化100で1半音、-100~+100まで
  • Sweep:スウィープパラメータ。マイナスだと音が落ちていきプラスだと音が階段状に高速で上がる。-8~+8
  • Shift:スウィープパラメータ。数字が大きいほどゆっくりになる。0~7

 

プラグインの「PAPU」では矩形波チャンネルにAttackとReleaseがありましたが、こちらではその設定がありません。ただし、音量調整は2つのチャンネルに個別でついています。三角波に至ってはピッチの調整以外なく、ON/OFFのみで非常にシンプル。ノイズも音量調整と切り替えON/OFFのみ。

ファミコン初期時代は、こんなシンプルさで曲を作っていたんですね~。そしてその中で様々な工夫が生み出されて今がある・・・なんというロマン。

 

 

サンプル曲を作ってみました

あまり難しいことはしていません。デチューン音色を途中で使っているのと、擬似ディレイと効果音的な音を作って混ぜたくらいです。ほぼフルで使ってはいますが、構成は結構シンプル。

 

Kick(バスドラ)とSnareはDPCMでサンプリングしたと置き換えて、低ビットレートで録音したものを2点のみ使用。あとは、主に矩形波の1チャンネル分をコントロールチェンジ(CC)といって、実機では内部で途中途中音色やパラメータを変更しているとして、その分をトラック数を増やして表現しました。

最終的に矩形波2+三角波1で、合わせて3和音を越えなければいいという、いつも通り大雑把なやり方です(笑

 

内訳は以下の通り。

 

DPCM分、バスドラの音

GrooveAgent・Comp Kit CDのバスドラをCubaseでビットレートを下げて録音したものを使いました。

 

DPCM分、スネアの音

こちらも同じキットのスネアを、ビットレートを下げて録音。FamiTrackerで録って少しリアリティを・・・とも思ったのですが、変換につぐ変換の手順が遠かったのでやめました。

 

矩形波1(リード、装飾の擬似ディレイなど)

デューティ比12.5%。出力は最大。

 

矩形波2(リード、ハモリなど)

デューティ比50%。出力は最大。

 

サビ一周目の矩形波2つのデチューン(リード)

デューティ比25%、出力は最大で、片方だけFine-20にして重ねています。

 

三角波(ベース)

ONのみ!!

 

ノイズ(リズム、ハイハットの代わり)

50%出力のみ!!(笑

 

飛び道具的な矩形波(スウィープで効果音的に使用)

デューティ比12.5%。出力は最大にして、SweepとShiftをそれぞれ-2、2にするとこんな音が出ます。序盤はノートを下の方、つまり低域に置くと潰れたようになりますが、高域に音を置くと、最後のティウンティウン音になります。この音を聞くとロックマン、もしくはスターラスターを思い出す・・・。

 

 

擬似ディレイ

今回、擬似ディレイを使ってみました。上記に載せた矩形波1(リード、装飾の擬似ディレイなど)の音がそうなのですが、そのやり方は上画面の通り。

続く音をすぐ後ろに等間隔で置いて、ベロシティを小さくしただけ。これで、奥行きが感じられるように聞こえるわけですね。当時のファミコン時代はこうして如何に、制限のかかった状態で音の表現を豊かにしていくかを作り上げていったんですね~、いや~スバラシイ。実にスバラシイ。

 

 

おわりに

ファミコンの音使いは、時代が後半になるにつれてどんどん工夫が凝らされていって、ここまで出来るのか!?という音の表現が編み出されていたりしますが、今回のサンプルのように、非常にシンプルな曲も多いです。

ごく初期のファミコンソフトでは効果音だけでそもそもBGMがないものもありますし、DPCMの存在も初めは認知されていなかったなど、結構奥が深い。

 

チップチューンの完成度を高めようとする場合は、実機をプレイするのが一番なんですけど、例えば、ゲームで効果音が鳴っている間、最低限BGMの妨げにならないようにするために、

  • 矩形波チャンネル1=メロディメイン(固定)
  • 矩形波チャンネル2=効果音orハモリ・アルペジオ
  • 三角波チャンネル1=ベース(固定)

という風に、1チャンネル分は効果音と兼用のチャンネルになることを想定して、SEが入った時だけ矩形波チャンネル2のBGM入力が一旦リセットされて、SEが鳴り終ったらそのBGM入力の続きが出力される、とか。

またこれはゲームにもよりますが、コントローラのボタンを押したときにその信号入力によって(微妙にですが)他の信号との干渉が発生して、何かのタイミングの入力時だけ音が一瞬小さくなるとか・・・(これはやりすぎか

 

このように、方向性にもよりますが、非常にシンプルながらも、奥の深さが底知れないのが、チップチューンの面白さの一つなのではないかと思います。

 

それでは、今回はこの辺で。