↑ミニブレッドボード上がオルゴール 左はバッテリー
音色が美しい!
Attiny85へブートローダーやスケッチが書き込めるようになり、Arduino化ができたので、さっそくこれを使って何かやってみたいと思います。
パーツを買い足さなくてもできそうなことはとはないかと考え、見つけた一つがオルゴールでした。
電子工作の定番でもあるようですね。自分でも、日本橋がまだ電気屋街だった頃に買ってきた光が当たると鳴るメロディーICが、朝になると毎日鳴っていたと娘が言っていたのを思い出します。
電子オルゴールの奥深さー3つの方式
バネで回る突起が金属板をはじいてメロディーを奏でるという割とわかりやすい仕組みのオルゴールも、電子式になるとなにやら難しいものです。
電子オルゴールには3種類の方式があるんだとか。減衰矩形波、減衰正弦波にWaveTableだそうです。
目も悪けりゃ、耳も悪く、ついでに頭も悪いとくれば、芸術的なことは大の苦手になります。そのせいで、映像やサウンドからは遠いところに身をおくようにしてきましたから。
和音や正弦波とか言われてもさっぱり理解ができませんが、聞きくらべれば、和音が豊で、矩形波より正弦波の方がより美しいことくらいはわかります。サンプリング音源を使うWaveTableもすごいですね。
電子オルゴールの奥深さをはじめて知りました。
ただし、電子工作としてはいたって簡素。マイコンチップのATtiny85と圧電ブザーもしくはスピーカー、電源となる電池があればできるということで、作ってみる気になったのです。
今回は、弘前大学の小山智史先生の減衰矩形波、減衰正弦波方式による電子オルゴールソフト「MyMelo2」を試してみることにしました。
「テキスト音楽サクラ」または「メモ帳」などのテキストエディターで、「ドドソソララソー」のように楽譜ファイル(〇〇.mml)を作成し、このmmlファイルをmymelo2.wsfにドラッグ&ドロップすることで、ATtiny85で利用できる形に変換できるのが特徴です。
ど素人にも書けそうな気がしませんか。3和音までトラックを使って実現できるそうですから、わかる人にはありがたいことでしょう。試していませんが、音声を録音しメッセージとして添付できる「MyMelo2 PLUS」というものもあります。オルゴールに音声が入るなんて、さすがマイコンですね。
最終的に変換されたファイルをArduino IDEで開き、AVRプログラマーを使ってATtiny85に書き込みます。下に手順を載せます。
なお、ChanさんのWaveTable方式も捨てがたいのですが、如何せんAVRマイコンに特徴的なヒューズの設定方法が不勉強でまだわからず、使用チップもATtiny45であったため、今回は見送っています。小山さんの方式では、手順通りにすすめればヒューズ設定が書き込まれるようです。
MyMelo2を使う
それでは、「MyMelo2」を使って電子オルゴールを作ってみましょう。
①「MyMelo2」のダウンロード
まず、小山さんのサイト「私だけの電子オルゴール」から、zipファイルをダウンロードし、解凍します。生成したMyMelo2フォルダ中の「mymelo2.wsf.txt」ファイル名称を「mymelo2.wsf」に変更します。
②楽譜ファイルの用意
↑楽譜ファイル作成中のブラウザ版「ピコサクラ」。スクリーンショット中の3和音の例は、「和音のできる電子オルゴール」から拝借しました。
楽譜のmmlファイルは、「メモ帳」や「テキスト音楽サクラ」で作成することができますが、サクラで演奏できる楽譜のすべてがオルゴールにで使えるわけではありません。MyMelo2では使用できる命令に制限があります。
五線譜が読めず、楽譜を入力する自信はありませんから、今回は手抜きしてMyMelo2に入っていた「kira2.mml」を使います。
③楽譜データへの変換、追加
mymelo2.wsfをダブルクリックすると、楽譜データが初期化されます。
その際画像のようなダイアログボックスが開きますので、矩形波、正弦波、正弦波(伴奏は3角波)のいずれかを選択します。選択ボタンは、「はい(Y)」、「いいえ(N)」、「キャンセル」がそれぞれに対応しています。
次いで、楽譜ファイル(〇〇.mml)をmymelo2.wsfの上にドラッグ&ドロップします。
私のように間違える人はないと思いますが、ダイアログボックスの上ではなく、当該フォルダ内のファイルの上です。やり直しの際に、すっかり忘れて書き込めないとまごついたものです。
これで、変換された楽譜データーが楽譜データーファイルに記録されます。
引き続き別の楽譜ファイル(〇〇.mml)をmymelo2.wsf上にドラッグ&ドロップすれば、2曲目、3局目と楽譜データーファイルに追加されます。
ATtiny85への書き込み
①mymelo.inoを読み込む
起動したAeduino IDEのウインドウ画面上部のメニューにある[ファイル]をクリック、開いたドロップダウンメニューの中の[開く]をクリックし、mymelo.inoを探して開きます(解凍してできたmymelo2フォルダー下のmymelo2ファルダー内にあります)
②「ボード」と「チップ」、「Clock Source」を選択
次は、上部のメニューから[ツール]を開き、「ボード」と「Chip」、「Clock Source」を選びます。
ボードを[ATTinyCore]、ついで[ATtiny25/45/85(No bootloader)]とし、「Chip」を[ATtiny85]とします。次に「Clock Source」は、減衰矩形波の場合は[8MHz(internal)]、減衰正弦波の場合は[16MHz(PLL)]とし、減衰正弦波(伴奏は三角波)の場合ではさらに「Timer 1 Clock」を64MHzとします。
③書き込み装置の接続
次に、書き込み装置(ここではAVRプログラマーとしてUSBaspを使用)を介してパソコンとマイコンをつなぎます。USBポートをパソコンに、ケーブルをマイコンに接続します。
ピン同士の接続は、下記の表のとおり。
|
ATtiny85のピン番号は、チップの切欠きのある方の横、〇印のついたピンが1番ピンで、反時計回りに2,3,4、…、と8番ピンまで。
なお、USBaspではジャンパー接続端子が3箇所あり、うちハンダ付けされた5本のピンは電圧の設定ピンで、画像の茶色のジャンパー線部分の2本を短絡(5Vに設定)させておく必要があります。
④「ポート」の選択、[書き込み装置]の指定
書き込み装置を接続したら、Arduino IDE上部のメニューから[ツール]を開き、[ポート]をクリックして適切なポートを選び、さらに[ツール]から[書き込み装置]をクリックして書き込み装置を指定します(今回の例では[USBasp(ATTinyCore] )。
④プログラムの書き込み
ブートローダーを一度も焼いたことがない生のマイコンチップの場合は、[ツール]から[ブートローダを書き込む]を実行します(これにより②の設定がマイコンのヒューズビットに書き込まれるそうです)。
最後は、先にArduino IDEに読み込んであったプログラム(mymelo.ino)の書き込みです。上部のメニューにある[スケッチ]から[書き込み装置を使って書き込む]を実行します。通常のスケッチの書き込み方法とは異なるので注意!
完成
後は、実際にATtiny85にスピーカー(あるいは圧電ブザー)と電池をつなぎ、音を鳴らしてみるだけです。
ATtiny85の3番ピンと6番ピンをスピーカーにつなぎ、電池は8番ピンに「+」、4番ピンに「-」をつなぎます。
私の場合は、スムースにはいきませんでした。1度目は音がでたのに、矩形波、正弦波の違いを試そうとしたら、書き込みに失敗したり、書き込めても音が出ず、何か誤ってチップを壊してしまったかと思うくらいでした。
原因は、ICソケットを使わずに直にATtiny85をブレッドボードに挿していたせいか、接触不良で信号が流れていなかったようです。しっかり押し込んでいたつもりでしたが、見た目ではわからないほどほんのわずかに浮いていて、押せばチップが沈み、手を離せば浮くのです。
微妙なもので、ブレッドボード上の位置を変えれば大丈夫なところもあり、これにはまいりました。今後の教訓にしたいと思います。
なお、小さな圧電ブザーでは音が小さくよく聞こえませんでした。ガラクタの中から見つけてきた小型のスピーカーにつないでみたところ、クリアな音でよく聞こえました。もともと音が小さく使い物にならなかったスピーカーから大きく聞こえたのは驚きです。
↑正弦波です
動画では、スピーカーからの音をパソコンのマイクで拾ったものなので、せっかくの音色も音質が悪いのが残念です。
今回は、お試しということでとりあえずブレッドボード上につくって済ませ、スイッチも設けませんでしたが、長押しすれば曲が順次変わるプログラムになっているようです。小さいのに思いの外良い音色なので、手抜きせずにつくればそれなりの電池で動く可愛いオルゴールができそうです。
《参考サイト》
3種類の方式の電子オルゴール -- その音の違いは|人生に出会う7WAYS+α (fc2.com)
ELM - WaveTable電子オルゴール (elm-chan.org)
テキスト音楽「サクラ」 (sakuramml.com)
《追記》
自分では楽譜が書けないもので、公開されている方のmmlファイルをコピーさせていただいてます。下記のサイトでは、6曲分の楽譜ファイルが掲載されています。













