セガ・マスターシステムをエミュレートしたプラグイン『SN76489』でチップチューン作り

今日は、フリープラグインである「SOCALABS 8-BIT TREATS」から、「SN76489」で音弄りなどをして遊んでみたいと思います。

 

セガ・マスターシステムとは、1985年(ファミコンの2年後)に日本で発売されたセガ・マークⅢの北米版のゲーム機のこと。日本では、その北米版を逆輸入する形で、その2年後の1987年に発売されていたそうです。

メガドライブの前のバージョンがこのセガ・マークⅢ、セガ・マスターシステムで、そのメガドライブの後継機がセガサターン。そしてドリームキャスト

 

私が小学生低学年くらいの頃、友達の大半は皆ファミコンを持っていて、よくゲームソフトを持ち寄って遊んでいました。そんな中、一人二人はファミコンじゃないのを持ってたんですよね。それがPCエンジンとかメガドライブとかでした。

その友達の家に遊びにいかないとプレイできないゲームだったので、かなりレアでしたし、新鮮だったのを覚えています。

「ひろしん家いってアレやろーぜ!!」(ソニックのこと

みたいなね(笑

 

スポンサーリンク

SN76489の仕様を確認

  • 矩形波チャンネルが3つ
  • 3和音発声
  • ノイズチャンネルは1つ(種類は2つ)

 

…と、結構シンプルな構成になっています。一般的には「PSG」と区分けされるこのSN76489。厳密には違うものではありますが、単純に音として聞いて判断する場合は「PSG」と言っても間違いではないです。伝わるには伝わる。

 

PSGとは(狭義)

厳密には、PSGは「Programmable Sound Generator」の略で、GI(ゼネラル・インストゥルメンツ)社の

  • AY-3-8910(またはこれの相当品)

のことをいいます。その仕組みは、

  • 矩形波3(Duty比1:1固定)+ノイズ
  • ノイズの音量出力は矩形波3チャンネルのどれかに依存
  • エンベロープ(ADSR)制御

ということで、デューティ比50%固定とエンベロープ機能、ノイズの音量出力方式が矩形波チャンネルに依存している点が特徴的。

 

DCSGとは(狭義)

「AY-3-8910」をPSGと呼ぶ場合、「SN76489」をDCSG(Digital Complex Sound Generator)と呼びます。

SN76489では、

  • 矩形波3(Duty比1:1固定)+ノイズ
  • ノイズの音量出力は独立して制御できる
  • エンベロープ(ADSR)なし
  • 3チャンネル目を同期ノイズ出力にすることでデューティ比6.25/93.75の音

「矩形波3+ノイズ1」の構成は「AY-3-8910」とは変わりませんが、エンベロープなしということと、ノイズが独立して音量調整ができます。

 

SSG音源とFM音源

ヤマハが作った「YM2203」という音源チップには、FM音源とSSG音源が組み込まれています。SSGとは、

FM音源によるPSG互換機能をSSG(Software-controlled Sound Generator)音源、単純にSSGとも呼ぶ。

出典:Wikipedia「PSG」より

とあり、AY-3-8910のPSG機能のソフトウェアのこと、でしょうね。ヤマハではPSGをSSGとも言うそうです。

 

Wikiでは『YM2203をFM音源チップ』と書かれているので誤解してしまいそうになったのですが、厳密には、

4オペレータ、同時発音数3音のFM音源に加え、AY-3-8910(PSG)相当のSSG(Software-controlled Sound Generator)音源と、入出力を備え、プログラマブルタイマーを2系統内蔵する。

出典:Wikipedia「YM2203」より

とあるので、

「 YM2203 = FM音源 + SSG(PSG)音源 」

ということになりそうです。

 

 

以上より、ピコピコしたファミコンサウンドには大体矩形波が使われているので、それを「PSG」と言っても間違いではないのでしょうが、この表現だと誤解を生んでしまう恐れがあるので、私は「ファミコンサウンド」とか「ピコピコ音源」とか使ってます(笑

 

 

SM76489の操作方法

  • Pulse1~3が矩形波1~3チャンネル分の音量出力0~100%
  • Noiseの音量出力0~100%
  • 右のTypeはNoiseの2種類、Priodic/White
  • 右下のSpeedはNoiseのパターン4種、Fast/Medium/Slow/Tone2
  • 矩形波の3音はポリフォニック

 

プラグインSN76489の特徴は一つのトラックで、矩形波が3音同時発声するので、トラック数を分けなくていいので便利ですね。ノイズも同時に発声するのですが、これは別トラックで分けた方が使いやすそうです。

 

ポリフォニックの仕様は、3音発声の場合、一番下のノートからPulse1・2・3と出力が振り分けられる仕様のようです。

 

例えば、MIDIトラックに3音分のノートを置いて、このようにPulse1、2は100%(出力ON)にして、Pulse3の出力を0(OFF)にすると、上のE5・D5の音は鳴らない。

 

また、低音はA1より下は全部A1音が鳴り、それより下の音は存在していない形になっています。

 

 

Type「Periodic」について

Wikiの「PSG・SN76489の項目(ページ中段辺り)」では、

通常音色はデューティ比50/50のみであるが、3チャンネル目を同期ノイズ出力にすることでデューティ比6.25/93.75の音となる。トーン周波数に対し音程は半音ずれるが、ギターに似た音色となるため、若干弱い低音部をカバーする事が出来た。

とあり、SN76489の右側「Periodic/Tone2」にすることで、Duty比6.25/93.75の矩形波の音が出ます。

 

まず、3音鳴るようこのようにノートを置いてみます。

 

全ての出力をONにして、Type「Periodic/Tone2」にすると、一番下の音でなくて、一番上の音(Palse3)の音にノイズチャンネルが同期し、メロディが高音と低音でカバーされる形になりました。

ちなみにこのままの状態で、PeriodicのTypeをFast、Medium、Slowにしてみると、Pulse3にノイズが追随せずに、オクターブ違いのA音が出力されました。

 

・Periodic/Fast

 

・Periodic/Medium

 

・Periodic/Slow

 

 

キーをA音にしているのでそんなに違和感ありませんが、毎回曲中これだと流石にきつい。

また、このノイズ部分の音の使い方に関しては、例えば一度ノートを置いて鳴らしたあとにノートの上下入れ替えたりすると、先に鳴らした同期音を記憶しているのか、一番上のPulse3でなっているはずの音には同期しなかったりします。

 

まず、最初の状態。

これを、ノートの場所を変えてみます。

 

2小節目の一番下のベース音(黒く選択されているところ)を・・・

 

2オクターブ上げて、Pulse3が鳴らすはずのポジションへ移してやりました。

 

しかし、ノイズ同期はこの一番上に上げたはずの音には同期せず、ノートを動かす前の一番上だった音に同期したままという。

うん、なんだかこの挙動には懐かしさを感じます。MMLでSC-88proのインサーションエフェクトとか弄ってた頃を思い出します。ON/OFFの命令を指定してやらないと音が出っぱなしとか、設定リセットされないまんまとか(笑

 

ノイズ同期音をベース音にして音を鳴らすには

完全解決とはいきませんが、このノイズ同期のデューティ比6.25/93.75の音をベース音に持っていく為に、私なりの工夫の一例を以下に書きます。

初めに全チャンネル出力をONにして、右のNoiseTypeは「Reriodic」、Speed/Tone2にしておきます。

 

MIDIノートは、一番上にベース音が来るよう配置。黒く選択ささっている部分がそうですね。ノート音とPulse出力の振り分けは、

  • 下から順に、Pulse1、Pulse2、Pulse3

となっているので、この一番上のノートはPulse3が担当し、尚且つ再生時のノイズ同期もこのPulse3にされる(私の環境ではそうでした)。ノートの位置に気を付けながら打ち込んでいって、完成となったら、

 

Pulse3の出力だけ0%(OFF)にして再生してやります。

すると結果はこんな感じ。

デューティ比6.25/93.75の矩形波のベース音にすることに成功しました。

 

ちなみに同期はさせずに「矩形波3つ分」と「ノイズチャンネル分」を別トラックで用意して綺麗にまとめた版はこちら。

音的には後者の方がいいかなと個人的には思います。

 

 

おわりに

このプラグインはポリフォニックなので3和音分+ノイズ分の2トラック分のプラグインを起動させてやれば、難しいことは考えずに普通に曲は作れるかと思います。

ノイズ同期部分に関しては不透明なところがあるのですが、デューティ比6.25/93.75の音を出したいなら、別のプラグインで1トラック用意してあげたほうがわかりやすくて楽かな。要はその音が出せればいいのだから。

プラグインとしては、ポリフォニックというのが使いやすくていいですね。

 

 

おわりに2

以上、4回に渡ってSOCALABS 8-BIT TREATSのプラグインの使用感を、チップチューンの知識底上げとして記事にしてみました。

ここまで記事にして来てこれを言うのも何ですが、

  • チップチューンを作るならわざわざこのプラグインを使う必要はない

ということ。

みもフタもない言い方になりますが、シンセ音を弄る音源は本当にたくさんありますし、このプラグイン自体、1980年代のレトロゲーム機の音源をエミュレートしているだけあって、それぞれ癖があって使いづらい部分もあります。

DPCMや波形メモリ音源の部分もなかったりしますから、完全なエミュレートとは言えないでしょう。(DPCMはそもそもサンプリングで、また波形メモリ音源は別個の技術になるので、このプラグインのコンセプトから敢えて省かれていると思われます。)

 

しかし、このエミュレートプラグインから私が強く感じたことは、そういう部分ではなくて、当時はそれぞれに個性があって、またそれぞれの癖がある中で様々なサウンドが作られてきたということ。今では一緒くたにされてしまう内容にでも、きちんと違いがあったんだよという気持ちを強く感じる。

そういう意味で、自分の知識も含めて、チップチューンの違いをこのプラグインを通して少しでも整地できればなぁと思って記事にしてみました。簡単に書けるかと思ったら結構時間かかってしまってます。

 

幼少期にリアルタイムで触れていた世代ではあるのですが、何分エミュレートの専門的な知識がそこまでないので、どっか間違ってないかなーと少し心配ですが、その時は是非教えてくださいませ(笑

 

それでは!