更新

このページは現在更新していません。私だけの電子オルゴール」のページに移行しましたのでそちらをご覧ください。

AVRで作る電子オルゴール

2002.6.29-2005.3.20 小山智史(弘前大学)

 以下、AVR版の電子オルゴールです。C言語[1]で5つのプログラムを作ってみました。音楽データは、インターネットで入手した着メロデータから自動生成しました。3和音やピアノ音や正弦波音の音楽が楽しめます。正弦波音の作り方は[2]の資料を参考にしました。2kBのAVR(AT90S2313)に3和音で5曲、単音で16曲入りました。曲の数というよりも、合計の音符の数で制限されます。AT tiny2313版も作ってみました。

 なお、正弦波音では圧電素子からの音が小さく、大型の圧電素子を使うか外部アンプに接続する必要があります。

○実装例(左がAT90S2313版、右がAT tiny2313版):

AVR版電子オルゴールの写真 tiny版電子オルゴールの写真

○回路図(左がAT90S2313版、右がAT tiny2313版):
AVR版電子オルゴールの回路図

○プログラム:
注 ATtiny2313版はクロック周波数が8MHzとなるにもかかわらず、音階データ(melotab*.c)を従前のものと共用しているので、音程が低くなります。

ソースプログラム(WinAVR20060421, WinAVR20100110対応)
(batファイルはコンパイルと書き込みの参考)
説明
AT90S2313版AT tiny2313版共通部分
melo1.c, melo1.bat melo1tn.c,melo1tn.bat melotab1.c 矩形波単音1曲(楽譜をプログラム中に記載)
melo2.c, melo2.bat melo2tn.c,melo2tn.bat melotab2.c, bach.c, condol.c, ... 矩形波単音15曲
melo3.c, melo3.bat melo3tn.c,melo3tn.bat melotab3.c, bach.c, condol.c, ... ピアノ単音15曲
melo4.c, melo4.bat melo4tn.c,melo4tn.bat melotab3.c, violin.c, yesterda.c, mizuiro.c, oncemore.c, takefive.c 矩形波3和音4曲(主旋律はピアノ音)
melo5.c, melo5.bat - melotab5.c, violin.c, yesterda.c, mizuiro.c, oncemore.c, takefive.c正弦波3和音4曲

○楽譜データファイル作成プログラム(参考): meloc.bat, meloc.awk
楽譜ページgakufu.htmをホームページで入手し、
  C>meloc gakufu
と操作すると楽譜データファイルgakufu.cが作られます(別途jgawk.exeが必要)。楽譜データファイルを数曲分作成し、そのファイル名に応じてプログラムの先頭部分を書き換えます。なお、このプログラムは不完全なもので、うまく作成できた楽譜データのみを使いました。

(参考)
[1] WinAVR, http://sourceforge.net/projects/winavr/
[2] AVR314: DTMF Generator, http://www.atmel.com/atmel/acrobat/doc1982.pdf


PICで作る電子オルゴール

2000.8.31-2001.6.18 小山智史(弘前大学)

 PIC版の電子オルゴールです。音楽データは、インターネットで入手した着メロデータから自動生成し、3和音の音楽が楽しめます。PIC16F84Aに3曲入りました。

○実装例:
PIC版電子オルゴールの写真

○回路図:
PIC版電子オルゴールの回路図

○プログラム:melo4.asm, melotab.asm, macro.asm, ...

 アセンブル: mpasm /q /c /w2 /rDEC melo4

○楽譜データファイル作成プログラム(参考): melopic.awk

のように変換します。なお、このプログラムは不完全なもので、うまく作成できた楽譜データのみを使いました。また、アセンブル後のLSTファイルで確認し、1曲が256バイトを超える場合はデータをカットします。


(参考) 着メロデータ