音物の電子工作をしてみようと思い、以前秋月で購入したヤマハ製FM音源のYMZ294を使用してテスト演奏をしてみました。
ハードですが、shield.ioさんのPSGシールドを参考にしました。
回路図です。
オリジナルからはいくつか変更しました。
D0~D7のポートの割り当てを変更、/ICの制御は省略しました。
また、/CSと/WRを1つのポートにまとめました。
ポート数は沢山余っていますので、オリジナル通りでも構いません。
電源は携帯用のLiイオン充電池2個で8V仕様としています。
LM386はゲインを下げた方がいいでしょう。
![](https://blogimg.goo.ne.jp/user_image/0e/9e/593c6882806a32f4084e0cf3dd7de053.jpg)
ソフトはサンプルスケッチが公開されていますので、これを使用させて頂きました。
shield.ioさんありがとうございました。
ポートの変更に伴い、いくつか変更しました。
/ICは使用しないので、PIN_ICに関連する処理は全部コメントアウト、Reset();も不要です。
D0~D7ポートへの出力箇所も順番を逆にしたので、変更しました。
digitalWrite(PIN_D0-i, HIGH); ⇒ digitalWrite(PIN_D0+i, HIGH);
また、NoteNumber[128]テーブルでノートNoに対応する周波数を設定していますが、NoteNumber[0](一番低い音)を休符に割り当てますので、一番高い音の10辺りに変更します。(0でもいいようです)
実際は休符の時に高い音が出ていますが、耳には聞こえません。
完成した基板です。
中央の空きはYMZ294をもう1個追加して6和音にするためのスペースです。
右のDTRGのコネクタでUSBシリアル変換アダプタとの接続ようで、このままでプログラムの入れ替えができます。
![](https://blogimg.goo.ne.jp/user_image/1e/72/51e2297d1806039aca9549641a7197d6.jpg)
ケースに入れました。
![](https://blogimg.goo.ne.jp/user_image/0d/2a/fd45a729b77b38b91d3412abdc5bcf71.jpg)
中身です。
![](https://blogimg.goo.ne.jp/user_image/78/20/1f35e7412020dc1fec4580b0f0aaba03.jpg)
さて、テスト演奏ですが、ドレミは簡単に出たので、楽曲を捜したところ、kazuya_aさんのサイトに「カエルの歌」を演奏するためのデータが公開されていましたので、早速コンパイルして演奏してみました。
kazuya_aさんありがとうございました。
C言語入門の例題では「hello,World」、PICやAVRの入門ではLEDピカピカが定番ですが、FM音源入門では「カエルの歌」のようです。
「カエルの歌」の演奏はできたので、他の楽曲にしようと思ったのですが、#や♭、何とか長調など、音楽の知識に乏しいので、楽譜を読むのも大変ですし、楽譜の入手も難題です。
そこでよそ様の成果を流用します。
フリーでMIDIファイルをダウンロードできるサイトを捜して好きな曲をダウンロードします。
YMZ294は3和音しか出ないので、単純で短い曲の方が良さそうです。
検索したところ、kalshagarさんのサイトでMIDIファイルをYMZ294用に変換するソフトを公開されていたので、これを使用させて頂きました。
SequencerDemoPlusVamp.zipをダウンロードしてください。
MIDIファイルを開いてSTARTボタンを押すと演奏が始まりますので、最後まで聴いたらSTOPボタンを押すと、Arduinoのスケッチが出力されるので、スケッチに貼り付けてコンパイルすればOKです。
![](https://blogimg.goo.ne.jp/user_image/4c/e3/c2f92da8f9df6a7687189119b2bc0878.jpg)
音を鳴らす関数の記述がPSGシールドのサンプルとは異なりますので、下のような関数を介して鳴らします。
#define ADDR_FREQ_A CH_A
#define ADDR_FREQ_B CH_B
#define ADDR_FREQ_C CH_C
void set_ch(int ch, int note) {
YMZ294.FreqTone(ch ,NoteNumber[note]);
}
動画です。
ATMega168では長すぎて入りきらないので、ATMega328に変更しました。
Tanukino+YMZ294でテスト演奏
ハードですが、shield.ioさんのPSGシールドを参考にしました。
回路図です。
オリジナルからはいくつか変更しました。
D0~D7のポートの割り当てを変更、/ICの制御は省略しました。
また、/CSと/WRを1つのポートにまとめました。
ポート数は沢山余っていますので、オリジナル通りでも構いません。
電源は携帯用のLiイオン充電池2個で8V仕様としています。
LM386はゲインを下げた方がいいでしょう。
![](https://blogimg.goo.ne.jp/user_image/0e/9e/593c6882806a32f4084e0cf3dd7de053.jpg)
ソフトはサンプルスケッチが公開されていますので、これを使用させて頂きました。
shield.ioさんありがとうございました。
ポートの変更に伴い、いくつか変更しました。
/ICは使用しないので、PIN_ICに関連する処理は全部コメントアウト、Reset();も不要です。
D0~D7ポートへの出力箇所も順番を逆にしたので、変更しました。
digitalWrite(PIN_D0-i, HIGH); ⇒ digitalWrite(PIN_D0+i, HIGH);
また、NoteNumber[128]テーブルでノートNoに対応する周波数を設定していますが、NoteNumber[0](一番低い音)を休符に割り当てますので、一番高い音の10辺りに変更します。(0でもいいようです)
実際は休符の時に高い音が出ていますが、耳には聞こえません。
完成した基板です。
中央の空きはYMZ294をもう1個追加して6和音にするためのスペースです。
右のDTRGのコネクタでUSBシリアル変換アダプタとの接続ようで、このままでプログラムの入れ替えができます。
![](https://blogimg.goo.ne.jp/user_image/1e/72/51e2297d1806039aca9549641a7197d6.jpg)
ケースに入れました。
![](https://blogimg.goo.ne.jp/user_image/0d/2a/fd45a729b77b38b91d3412abdc5bcf71.jpg)
中身です。
![](https://blogimg.goo.ne.jp/user_image/78/20/1f35e7412020dc1fec4580b0f0aaba03.jpg)
さて、テスト演奏ですが、ドレミは簡単に出たので、楽曲を捜したところ、kazuya_aさんのサイトに「カエルの歌」を演奏するためのデータが公開されていましたので、早速コンパイルして演奏してみました。
kazuya_aさんありがとうございました。
C言語入門の例題では「hello,World」、PICやAVRの入門ではLEDピカピカが定番ですが、FM音源入門では「カエルの歌」のようです。
「カエルの歌」の演奏はできたので、他の楽曲にしようと思ったのですが、#や♭、何とか長調など、音楽の知識に乏しいので、楽譜を読むのも大変ですし、楽譜の入手も難題です。
そこでよそ様の成果を流用します。
フリーでMIDIファイルをダウンロードできるサイトを捜して好きな曲をダウンロードします。
YMZ294は3和音しか出ないので、単純で短い曲の方が良さそうです。
検索したところ、kalshagarさんのサイトでMIDIファイルをYMZ294用に変換するソフトを公開されていたので、これを使用させて頂きました。
SequencerDemoPlusVamp.zipをダウンロードしてください。
MIDIファイルを開いてSTARTボタンを押すと演奏が始まりますので、最後まで聴いたらSTOPボタンを押すと、Arduinoのスケッチが出力されるので、スケッチに貼り付けてコンパイルすればOKです。
![](https://blogimg.goo.ne.jp/user_image/4c/e3/c2f92da8f9df6a7687189119b2bc0878.jpg)
音を鳴らす関数の記述がPSGシールドのサンプルとは異なりますので、下のような関数を介して鳴らします。
#define ADDR_FREQ_A CH_A
#define ADDR_FREQ_B CH_B
#define ADDR_FREQ_C CH_C
void set_ch(int ch, int note) {
YMZ294.FreqTone(ch ,NoteNumber[note]);
}
動画です。
ATMega168では長すぎて入りきらないので、ATMega328に変更しました。
Tanukino+YMZ294でテスト演奏
方形波出力なのを忘れていつものゲイン設定でした。
高調波がたっぷり入った音はこれ以上歪ようが無いようですね。
LM386のゲインは確かにチョイ下げたほうがよさそう
でも、大音量でも全然歪んでいませんでしたね。
寄り道をしながらですが、相変わらず、毎月何か作っています。
相変わらず色々と工作されてますね。
懐かしい音色に笑ってしまいました。
私は滅多に使わないだろうにVX-6を買っちゃいました(^^;