音声メッセージ付 電子オルゴール MyMelo2 ☆☆PLUS☆☆ |
1. 概要 2. ソフトウェアの準備 3. 音声データと楽譜データの作成 4. 電子オルゴールの組み立て 5. プログラムの書き込み 6. 使い方 7. 製作例 (付録1) ADPCMによる音声の圧縮 (付録2) 製作のTips |
MyMelo2 Plus は、「私だけの電子オルゴール MyMelo2」に「
オルゴールの音はピアノに似たきれいな音(減衰正弦波)です。
挿入できる音声メッセージは、中品質で最大1.3秒、低品質で最大2.6秒程度です。
音声メッセージはオルゴールのメロディーの任意の場所に挿入できます。異なる音声を別々の場所で再生することもできます。
ArduinoUNO/NANO, Digispark, ATtiny85, ATtiny4313, ATmega328P などで動作します(下表)。
下の写真は ハッピーバースデー♪ のメロディーの途中に音声メッセージを挿入した「誕生日プレゼント」の例で、ATtiny85を使って作りました。
![]() 「誕生日プレゼント」の製作例[音を聴く(mp3)] 「あまちゃん」のサンプル[音を聴く(mp3)] |
|
製作時のパソコン操作は概ね次のとおりです。
MyMelo2のソフトウェアに同梱されています(ダウンロード)。
ダウンロードしたファイルを解凍し、「mymelo2plus.wsf.txt」のファイル名を「mymelo2plus.wsf」に変更します。ファイル名を変更する際は、エクスプローラの[フォルダオプション][表示]で「登録されている拡張子は表示しない」のチェックをはずしておくことをお勧めします
その他は、「私だけの電子オルゴール」と同様です。
「テキスト音楽サクラ」または「メモ帳」などのテキストエディタで「ドドソソララソー」のように楽譜ファイル(〇〇.mml)を作成します。このような楽譜の書き方は「MML形式」と呼ばれます。2和音や3和音も可能で、下図は2和音の例です。
![]() サクラで作成(再生しながら作成できます) |
![]() メモ帳で作成 |
---|
音声メッセージの箇所は n0, n1, ... のように書き(上図および下表)、この機能が「私だけの電子オルゴール」に追加されています。なお、サクラを使った場合も、音声メッセージが再生できるわけではありません(n0, n1,...は音をMidiのノート番号で表す記法なので対応する低い音がでます)
書き方 | 例 | 説明 |
---|---|---|
n0, n1, ... | 録音音声0, 1, ...。和音の場合は、トラック1~3の同じ箇所にn0~を記載します。 |
Audacityなどのソフトを使い、パソコンで音声を録音し、wavファイルに保存します。その際、サンプリング周波数8000Hz、モノラルとします。スマホで録音したファイルをFFMPEGなどのソフトを使って変換することもできます。
録音した音声は、先頭と末尾の雑音や無音区間を削除したり、音量を調整(Audacityでは[エフェクト][音量と圧縮][ノーマライズ])や、必要に応じて音声区間の短縮(Audacityでは[エフェクト][ピッチとテンポ][テンポの変更])などの加工をしておきます。
はじめにmymelo2plus.wsfをダブルクリックし、楽譜データファイル(mymelo2plusフォルダのmymelo2.h)と音声データファイル(mymelo2plusフォルダのmyvoice.h)を初期化します。
音声ファイル(〇〇.wav)をmymelo2plus.wsfにドラッグ&ドロップします。ダイアログボックスが現れるので、中品質か低品質かを選択します。mymelo2plusフォルダのmyvoice.hに音声データが記録されます。
引き続き別の音声ファイル(〇〇.wav)をmymelo2plus.wsf にドラッグ&ドロップすると、音声データがmyvoice.hに追加記録されます。記録できる時間は合計で最大1.3秒程度(中品質)または2.6秒程度(低品質)です。
楽譜ファイル(〇〇.mml)をmymelo2plus.wsfにドラッグ&ドロップします。mymelo2plusフォルダのmymelo2.hに楽譜データが記録されます。
引き続き別の楽譜ファイル(〇〇.mml)をmymelo2plus.wsfにドラッグ&ドロップすると、2曲目、3曲目、...の楽譜データがmymelo2.hに追加記録されます。
音声データまたは楽譜データを変更する場合は、(3)の初期化からやり直してください。
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。ピアノ音(減衰正弦波)の音を出したい場合は、圧電サウンダではなくスピーカーを接続してください。
![]() | ![]() |
以下は小型のスピーカー(UGSM23A)を接続する様子で、スピーカーのピンをペンチで折り曲げておくと、差すだけでOKです。
![]() |
![]() |
![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
書き込み装置とArduinoIDEの操作については、こちらのページをご覧ください。
※ ATtiny85の場合、メモリ容量は8kBです。この中にプログラムと楽譜データと音声データを格納することになり、挿入できる音声メッセージは、中品質で最大1.3秒、低品質で最大2.6秒程度です。8kBを超えてしまうと次のようなエラーメッセージが現れます。
電源を投入すると、(1曲目の)メロディーが再生されます。
スイッチをつなぐと、スイッチを押したときに再生されます。再生中にスイッチを押すと停止します。
複数(2つ)の曲を登録した場合、スイッチを「短押し」すると1曲目、「長押し」すると2曲目のメロディーが再生されます。スイッチを2つ接続すれば、一方のスイッチ(swA)を押すと1曲目、もう一方のスイッチ(swB)を押すと2曲目のメロディーが再生されます。
100均のフォトフレームとクリアボックスを使った製作例です。こんな風にちょうどいいケースを探して、この中に組み込んで作り、最後にフォトフレームと両面テープで合体させるのがオススメの方法です。
| ![]() 回路図 |
「私だけの電子オルゴール 7章」でさまざまな製作例を紹介していますので参考にしてください。
[1] Rodger Richey, Adaptive Differential Pulse Code Modulation using PICmicro Microcontrollers, Microchip Application Note 643, http://ww1.microchip.com/downloads/en/AppNotes/00643b.pdf, 1997.
音声はADPCMという方法で圧縮して記録しています[1]。
mymelo2plus.wsf でwavファイルの音声データを符号化して myvoice.h に記録し、mymelo2plus.ino でこれを読み込み、プログラムと共にATtiny85に書き込んでいます。プログラムはこの符号化されたデータを復号しながら、サンプリング周波数8000Hzでスピーカーに出力しています。
ATtiny45/85, ATtiny2313(A)/4313, ATmega328PなどマイコンICを使って作る場合、4章ではコンデンサを入れていませんが、電池が消耗してきた時などにも安定して動作するよう、以下のようにコンデンサを入れた方がいいです。Arduinoを使う場合はその必要はありません。
スピーカーを使う場合、4章では68Ωの抵抗を直列に入れていますが、とりあえず動作確認をする際は無くても動作します(大きな音がします)。音量を小さくしたい場合は、この値を大きくします。
以下は、ATtiny85用に作った片面プリント基板のレイアウトです。GND端子はもうひとつ付けた方がよかったですね。