秋月でずっと以前に買った YMZ294 をやっと試してみた。
秋月での説明を引用すると
YMZ294はYMZ2149とソフトウエアコンパチブルの音源LSIで、 3系列の矩形波発生器と1系列のノイズ発生器、エンベロープ発生器を内蔵しており、 メロディ音効果音の発音が可能です。
=特徴=
◆矩形波3音+ノイズ1音の音源
◆5ビットDACを3個内蔵し、3音ミキシング出力
◆CS、WR制御信号と8ピットデータバスによる汎用CPUインターフェース
◆8オクターブの広い発音域
◆エンベロープ発生器による滑らかな減衰感
◆5V単一電源
とのこと。
まったくチンプンカンプンだ(分からずに買うなよ<毎度のこと)。
で、検索して見つかったサンプルにおんぶにだっこでとりあえず鳴らしてみることにした。
まずはこちらを拝見して、全くそのままブレッドボードに組んで、これまた頂いたASMファイル(なぜかHEXはリンク切れだったので)をビルドしてPICに書き込んで実行してみたのがこれ。
鳴ることは鳴る。
が、いかんせんアセンブラなので、ソースを追う気にもならず、Cで書いてあるのは無いかなあと、また検索する。
PIC16F88を使った例が見つかったが、ソースのコンパイラが不明だったのと、PIC16F88に空きが無かったのとで、さらに検索して見つけたPIC16F1938を使った例を試させていただくことにした。
PIC16F1938はピン数が多めでちょっと嫌だったが、ソースがMPLAB環境であることが確認できたので乗り気になった。
結果がこれ。
いただいた例のコードでは、可変抵抗を接続して電圧を変えることでAD変換値を変化させて音程を決める仕様だったが、うちのブレッドボードはあまり大きなものではないために、可変抵抗を置くスペースが確保できなかった。
んじゃあ、そのままピンを開放でとりあえず鳴らしてみようということで電源投入したのが上の結果だ。
AD変換の入力ピンの状態が不定なので、何だか面白い鳴り方をし、奇妙な感じがちょっと気に入った。
動画の途中からは開放状態のPINの配線に手で触れてみて奇妙な鳴り方を楽しんでみた。
そういえば、こうやってランダム値を発生させる際のタネを得るという方法を目にしたような気もする。
なお、どの例もスピーカー周りに工夫が凝らされていて、オペアンプで増幅などされているのだが、面倒だったので YMZ294 の出力端子にスピーカー直結で鳴らしている。
ここを工夫すると音も良くなるのだろうか。
ちなみに、スピーカーは100均で買ったものをばらして取り出したもの。
8Ω 0.5W と刻印されている。