<< ICの一覧へ戻る

YM2203・YMZ294・SP0256を使ったハードウエアMIDI音源の製作
YMZ294について

YMZ294

このICはSSG(Software-controlled Sound Generator)音源です。いわゆるビープ音が出てくるのですが、ファミコンのようにパルスの幅を変化させることはできません。 同様の音源に元祖でGI製のAY-3-8910、それのYamahaコピー版がYM2149、3つの音が内部でミックスされて外部へのGPIO端子が省略されているのがYMZ294です。 SSGLという名前でYMZ284という型番もあります。

構成図
内部には3系統のオシレータとボリュームコントロールがあり、1系統のノイズをそれぞれのミキサーでミックスできます。 右のエンベロープジェネレータではいわゆるLFOを発生させ、ボリュームコントロールに入れることによってハードウエアでエンベロープを作ることができます。
YMZ294の特徴として、φMに入れるクロックが4MHz固定ではなく6MHzを使うこともできます。TEST端子もあるのですが仕様が分からないため使いません。 ネット上ではYMZ294のデータシートは落ちていないようなので、YMZ284あたりのデータシートを探すと同等の構成で役に立つと思います。 もちろんソフトウエアレベルではAY-3-8910・YM2149とも共通です。

エンベロープ
mVdB対数補正後のベロシティ値
1510000117
14707-398
13500-683
12353-970
11250-1258
10177-1549
9125-1841
888.4-2135
762.5-2429
644.2-2725
531.3-3021
422.1-3317
315.6-3615
211.0-3912
17.81-4210
05.52-450

ところでボリュームレジスタやエンベロープジェネレータを操作した時の出力値は、リニアカーブではなく対数カーブになっています。 そのままリニアでMIDIのベロシティなどに置き換えてしまうと音量変化が大きくなりすぎるのでソフト側で何とかしたほうが良いかもしれません。


音声の出力波形について

回路の設計中に気が付いたのですが、YMZ294は3チャンネルを同時に鳴らしても音がクリップしないようです。 YM2149やYM2203のSSGセクションでは3つのチャンネルを抵抗でミックスさせるため、下のように各チャンネルの電圧が加算されて最終的な波形が生成されます。
output1 output2

YMZ294の出力は2音同時だろうが3音同時だろうがほぼ一定です。
拡大した波形を見ると、YMZ294のほうはパルスの幅が変わっているようです。
よく観察するとA・B・Cのオシレータが入れ替わりでオンされていることが分かります。 つまり音程のレジスタで指定した数値はパルスを何回出力したらON/OFFを切り替えるかというもので、数値に反比例した周波数の音が出力されるのです。 output3 output4

右下の写真は、オシレータAのレジスタに1を指定したところで、1回ごとに一番高いパルスが切り替わっているのが良く分かります。 あとはコンデンサなどで積分すれば和音に聞こえるという仕掛けです。これならポケコンでも和音の演奏ができるんじゃないでしょうか…? output5 output6


<< ICの一覧へ戻る