YMZ771-Fを使ってみた

秋月でYMZ771という音源ICが発売されていたので見てみると、PSGが二系統もあるようなので触ってみました。

YMZ771の機能

・パラレル接続のROMを使用したシーケンサ機能。
・AMMデコーダ、リミッター・バスブーストのエフェクター。
・2基のSSG(PSG, AY-3-8910互換コア)+パンポット。
・DAC出力とI2S出力。

アクセス方式はマルチプレクスバスで、安い1602のLCDとほとんど同じです。いくつかアクセスモードを設定できるようですが、ノーマルモード1を使います。

クロックは16.384MHzで、あまり見ない周波数ですが秋月に売っています。ROMを使わなければ外付け部品はクロックとバイパスコンデンサ、オーディオ用のカップリングコンデンサと抵抗だけなのでシンプルな配線になります。

形状がQFPなのでそのまま配線するのは至難の業です。また一般的な正方形のものではないので変換基盤も用意しにくくなっています(一応サンハヤトのICB-012が使えるようですが)。何故かフットプリントは存在するのでプリント基板の業者に注文してみました。

使う人がいるかは分かりませんがガーバーデータもあります。スペースの都合上他の回路と混ざっていますがいい感じに読み解いていただけたらと思います。

また、Raspberry Pi上でYMZ771を制御するためのソフトも必要になります。あまり時間が無かったので汚くなってしまいましたが、一応音が出せるところまでは持っていく事ができたので公開しておきます。

sysfs版: ymz771.c (曲再生時に高周波のノイズが発生するバグがあります)

mmio版: ymz7712.c (Raspberry Pi 1/Zero専用)

これらはgcc ymz771.c(ymz7712.c)でコンパイルし、sudo ./a.outで実行することができます。また簡易的な曲データ再生機能もあり、ymConverter.pyで変換した曲データ(64KB以下)をpsg.sngという名前にリネームすると再生させることができます。変換する曲データはzxart.eeで探す事ができます。

いくつか注意点があり、3チャンネル以上使う場合うまく音量を調整しないとすぐに音割れしてしまいます。しかし音量レジスタは4ビットしかないため音量を下げると音の解像度が低くなってしまう可能性があります。
グローバル音量は8ビットありますが、こちらを下げても音割れ解消にはなりません。
また、上の基板だと位相がずれているのか中央の音がかなり歪んでしまいます。

AMM(Amusement music compression)形式とシーケンスデータ

さて、前述の通りAMM形式の音声を再生する機能がついているのですが、データシートを見てもその内容は書いてありません。検索するとどうやら秘密保持契約を結んで専用のオーサリングソフトを購入する必要があるようです。

しかし、同じシリーズのYMZ770はアーケードゲームでの採用例があり(CAVEとか…)、そのエミュレーター(MAME)のソースコードから内容を理解する事ができます。それによると、MPEG-1 Audio Layer-2に独自ヘッダーがついたものの様です。MPEG-1 Audio Layer-2は、MP3の前の圧縮方式であり、あまり普及しませんでした。拡張子はmp2で、TwoLAMEでエンコード可能なものの、ヘッダーは自分で作る必要があります。

シーケンスデータは単純で、書き込みアドレスとデータが交互に現れるものとなっています。0x0eが現れたらウェイトを挟み、0x0fが現れたらシーケンスの終了となるようです。

もっとも、これらのデータを作成できたとしてもピン数の多いEPROMに書きこんで配線をしなければならないので、あまりやりたくはないです…

コメントを残す