廣島家の絵日記ブログ6和音出るワンチップ音源作ったこんばんは、デジタルとしえです。あるものを作りたいなーーーーという構想がありまして、そのためには音源が必要なのです。PSG音源のICなんかも買ってはみたのですが、音を出すためにはコマンドを送らないとダメで、めんどくさいわけです。わたしとしては、ドとミとソのスイッチをONにしたら、ドとミとソがすぐに鳴って欲しいわけです。いちいち、分周率をチャンネルごとにセットしてからドン☆とトリガして音を出すみたいなのはやってらんないのです。ないものは仕方がないので、自分で作ります。今回は久々にマイコンを使います。・エンベロープはかけない・ビブラートもかけない・ノイズも付加しないこれを2個作って12チャンネルにすれば、1オクターブの12セミトーンがカバーできます。(15個作れば理論上は90音出せるので、88鍵盤をカバーできます。クロックの都合で高い音の精度が出ないので実際にはムリです。真ん中のPIC16F84A(U2)が今回の要となるマイコンです。上の抵抗たち(R9~R16)はラダー型の4ビットD/Aコンバータになっています。今回は、鍵盤代わりにDIPスイッチ(SW1)を繋いでいます。クロック周波数は手持ちの水晶(X1)の都合で12MHzにしました。C3とC4の容量はイイカゲンです。これマイコンですから、これだけじゃ動きません。ファームウェアが必要です。今回の開発環境はMPLABを使い、アセンブリ言語でコーディングしました。(4)へ戻るPIC16F84Aはクロック周波数(今回は12MHz)の1/4の周波数が1サイクルになります。よって、1サイクルあたり1/3000000秒です。上のアルゴリズムの(4)~(11)のループ1周で84サイクルあります。波形のデューティー比を50%にするため、波形を2分周しています。f))とすればよいことがわかります。248.0んで、土曜日に秋葉原の秋月電子通商さんで買った下の機械でPICにファームを書き込みます。基板にPICを挿してテスト。実測値は設計値にほぼ一致しました。比較的低い周波数を分周していますので、どうしても(設計値自体が)誤差を含んでしまいます。(B)の音が約-8.7セントずれています。(ドレミファソラ)の6音が出るようにしてチップを焼きました。単音でも、和音でも、全部同時に鳴らしても、一応大丈夫そうです♪ファームウェアのソースコードじゃ、寝るわ☆(ソースコードの説明は追記にございます。Notesコメントとトラバは、ひろしまとしえの承認後に表示されます。即時性なくてごめんなさい。不承認のときもごめんなさい。間違って投稿された場合は、続けて修正版または削除指示等のコメを再投稿いただければ、それらしくファジィに対応いたします。鍵コメは投稿できなくしてありますのでメールフォームをご利用ください。Code携帯電話からはいま一つご覧いただけません。