メインコンテンツへスキップ
見出し画像

レトロPCのPSGシンセサイザーの話

    以前に投稿したテキストで、中学生時分に当時のパソコンでDTM的な遊びに凝っていたという話を書きました。

    当時はでもシーケンサーアプリ的なものはあったことはあったんですが、手打ちで入力して音楽を鳴らすというやり方をしてました。

    BASICというプログラム言語で行うんですが、BASICのプログラムがそのまま使えるPSGのエミュレーターサイト(?)を見つけたので、当時を思い出して少し遊んでみました。

    PSG(プログラマブル・サウンド・ジェネレーター)というシンセサイザーの音源は、昔のパソコンによく使われてた音源です。

    昭和の頃はパソコンから出る音はビープ音くらいでしたが、ホビー色の強い機種だとPSGが載ってました。

    PSGはファミコンにも搭載されていて、ゲーム専用機だけあってファミコンの場合は確か3種類くらいの波形を選択できてより面白い音が出るようになってたと記憶してます。三角波とか矩形波とか。

    たとえばスーパーマリオの地下面のモコモコしたベース音とかは、ファミコンで出せる波形を使った独特で面白いサウンドです。

    何言ってんだコイツとお思いの方も多いでしょうが、ザックリ言うと当時のレトロパソコンと同じやりかたでシンセサイザーを鳴らせる面白サイトで遊んだよという話です。

    知らない人にとってはダルい話が続くので、???となってる人はYouTube動画が出てくるあたりまで飛ばして読むとよろしい。

    激めんどくさいPLAY文による入力

    BASICでPSGシンセを鳴らすにはPLAY文という命令を使いました。

    細かいことは忘れたので今回はネットで調べながら入力してみたんですが、だいたいこんな感じでパラメータ指定をするんです。

    T:テンポ指定
    O:オクターブ指定
    L:音符の四分音符とか十六分音符だとかの指定
    R:休符の四分休符とか十六分休符だとかの指定
    V:ボリューム指定
    S:音の減衰パターン(これはよくわかんない)
    M:サステインの長さ
    ※デフォルトだとSとMはオフになってて、平坦なプーって音になる

    たとえば音量12で八分音部でオクターブ4のCから始まるドレミファソラシドを鳴らす場合は、こうなります。

    PLAY ”v12 l8 o4 cdefgab o5c”

    四分音符だの八分音符だのの指定は、音階名の後に数字を入れればLで指定したものよりそっちが優先されるので、上の例でeの音だけ四分音符にしたい場合だったら、

    PLAY ”v12 l8 o4 cde4fgab o5c” という具合にします。

    和音で鳴らしたい場合は、チャンネルごとにカンマで区切って入力します。例えばドミソのコードを鳴らしたかったらこう。

    PLAY ”C”,”E”,”G”

    みたいな感じですから、今考えると超めんどくさい作業なんです。手打ちですからタイプミスももちろん発生しますし、それを再生してみて耳でどこをミスってるのか探すみたいな作業、それを今回35年ぶりに体験しましたよ。

    てなこと踏まえつつ、今回実際に入力して出してみた音をいくつか。

    シンセドラム風サウンド

    ソース:
    v12o5b64v8a#64v5a64v3g#64v12o5b64v8a#64v5a64v3g#64
    v12o4b64v8a#64v5a64v3g#64r16
    v12o5b64v8a#64v5a64v3g#64v12o5b64v8a#64v5a64v3g#64
    v12o4b64v8a#64v5a64v3g#64

    PSGはエンベロープをかけずに鳴らすと音が繋がって聞こえるので、その特性を利用しています。

    やってることは、64分音符を連続的に、音量を下げつつ音程も下げるという鳴らし方で、ピョコンという音を作っています。

    例としてはかなりしょぼいですが、もうちょっと頑張ればコスミックインベンションみたいなピョコタンドラムも再現できそう?

    疑似リバーブ

    疑似的にリバーブっぽい音を再現するには、2チャンネル以上使って音量を下げた音を遅らせて鳴らしたものを重ねるという手法があります。

    ただし、限られたチャンネル数を活用するために1チャンネルでリバーブっぽくするには、音量を途中で急激に下げるというやり方をしてました。

    ソース:
    o5v12l8cv3cv12ev3ev12gv3go6v12cv3c
    o5v12l8cv3cv12ev3ev12gv3go6v12cv3c

    単純に、音量12で鳴らしてたのを3まで下げているだけです。さっき書いた通りPSGはエンベロープをかけなければ音が繋がるので、スンスンっていう感じになって、リバーブに聞こえないこともない・・・かな?

    ハードウェアエンベロープ

    エンベロープ(音の減衰)をかける機能が備わっていて、S(減衰パターン?よくわからん)パラメータと、M(サスティン)パラメータを指定できます。

    短めのサスティンでポンポンという音にしてありますが、パラメータ指定で簡単にできる分なんとなく安っぽくて、しかも他チャンネルと別の減衰パターンの指定ができないという弱点もあります。だもんで、ほとんど使いませんでしたねえ。

    ソース:
    ”sm3000l8o3eeeeeeeeaaaaaaaa”,
    ”sm3000l8o3bbo4#c#o3bbbo4#c#o3bo4eef#eeef#e”

    M3000っていう数字が大きければ大きいほどサスティンが伸びます。
    Sは減衰パターン指定とのことですが、数字なしで入れてるのはハードウェアエンベロープを呼び出すため。

    ノイズを使った簡易的なドラム

    PSGではチャンネルごとに、ノイズを含ませることができました。ノイズを100%にしなければ、音階も聞こえるノイズの乗った音になりますが、今回はノイズを100%にして簡易的なドラムを作ってみました。

    昔のファミコンゲームでも、これと同じやりかたでドラムパートを作っていたものも多いと思います。

    ハードウェアエンベロープをONにして、サスティンを短く切ったトンっていう音をバスドラムに見立て、サスティンを伸ばしたパーンをスネアに見立てた感じ。

    ソース:
    v12sm500c4m2000c4m500c8c8m2000c4
    sm500c4m2000c4m500c8c8m2000c8c8

    ちなみに、ノイズはトーン指定もできて、トーンを落とした音がこれ。トーン指定はPLAY文の外で、たしかSOUND文で指定してたと思います。やり方は忘れました。

    わかりやすいように極端にトーンを落としてみましたが、この音を聞いて思い出したのはドラクエで階段降りる時の音ですね。多分こんな感じで作ってたんですね。

    ソフトウェアエンベロープ

    さっきのハードウェアエンベロープは簡単な分、チャンネルごとに指定できないとか、細かい指定ができないので、完全に自由にエンベロープをかけるには、音量を細かく連続的に調整して鳴らすという気の遠くなる作業が必要でした。

    もちろん手打ち入力ですし、当時のレトロパソコンにはコピーペーストの機能もありませんでしたから、そりゃ大変でしたとも。ソースは中身まで細かく見る必要もないんですが、たったこんだけのフレーズでこんだけ打ち込んでたんだよということです。

    ソース:
    ”o3l32v12ev10ev4ev2ev12ev10ev4ev2ev12ev10ev4ev2ev12ev10ev4ev2ev12ev10ev4ev2ev12ev10ev4ev2ev12ev10ev4ev2ev12ev10ev4ev2ev12av10av4av2av12av10av4av2av12av10av4av2av12av10av4av2av12av10av4av2av12av10av4av2av12av10av4av2av12av10av4av2a”,
    ”o3l32v12bv10bv4bv2bv12bv10bv4bv2bo4v12c#v10c#v4c#v2c#o3v12bv10bv4bv2bv12bv10bv4bv2bv12bv10bv4bv2bo4v12c#v10c#v4c#v2c#o3v12bv10bv4bv2bo4v12ev10ev3ev2ev12ev10ev3ev2ev12f#v10f#v4f#v2f#v12ev10ev3ev2ev12ev10ev3ev2ev12ev10ev3ev2ev12f#v10f#v4f#v2f#v12ev10ev3ev2e”

    ソフトエンベロープはとにかく音量変化のパターンが自由自在に操れますから、ハード機能ではできない、音が持ち上がってくるパターンだって手作りならば。

    ソース:
    ”l32o4v6ev8ev10ev12ev6ev8ev10ev12ev6ev8ev10ev12ev6ev8ev10ev12ev6ev8ev10ev12ev6ev8ev10ev12ev6ev8ev10ev12ev6ev8ev10ev12e”,
    ”l32o4v4av6av8av12av4av6av8av12av4av6av8av12av4av6av8av12av4av6av8av12av4av6av8av12av4av6av8av12av4av6av8av12a”,
    ”l32o5v4c#v6c#v8c#v12c#v4c#v6c#v8c#v12c#v4c#v6c#v8c#v12c#v4dv6dv8dv12dv4dv6dv8dv12dv4dv6dv8dv12dv4c#v6c#v8c#v12c#v4c#v6c#v8c#v12c#”

    スゥーっと持ち上がってくる感じ、PSGの独特の音色と合わさると割といい感じ。

    PSGオンリーでもセンス良すぎて悶絶の作例

    今回色々遊んでみて思い出したのが、ファミコンのツインビーのBGMです。今回紹介したやり方がけっこう使われてます。凝ったエンベロープパターンとか、ノイズを使ったドラムとか。

    どこのどなたがプログラムしたのか知りませんが、猛烈にセンスが良いですね。当時のファミコンゲームって、BGMが超やっつけっていうのも多かった中でこれはすごいです。

    こっちも素晴らしい出来栄え。限られた3チャンネルを音を切り替えつつ活用しています。

    主旋律、ベースは作曲のところで素晴らしいんですが、サウンド作り的にはドラムパートが特に良いです。ノイズ100%でリズムを刻むところと、ノイズを減らしてシンセタムっぽくしている部分の使い分けがうまいです。

    今回はウエブサイト上で遊んでみましたけど、なんか当時のハードが欲しくなってきましたよ。

    ネットでちょこっと調べてみたら、FM音源+PSGで6声同時発生ができる私が欲しいやつだと、タマが少ないみたいでけっこうお高め。数万円出してまでは欲しくないんで、ハードオフを見かけたら立ち寄って出物を探してみようかな。

    長々書いてきて思ったんですが、ひとりよがりの極みのようなテキストですなあ。もし最後まで読んでくれた人がいたら、ありがとうという気持ちと同時に、時間をもっと大事に使ってくださいという気持ちです。失礼しました。

    ※その2も書きました

     
     
    私も、読んだ人も、ひまつぶしくらいにはなるようなことを投稿しようという目的です。

    あなたへのおすすめ