ARDUINO MOZZIでオルゴール

前回に続いてARDUINO MOZZIで音を鳴らす。

今回は実際のオルゴールの作成だ。

MOZZIの場合、9番ピンとGNDにそのままイヤホンジャックを接続すれば音がでるので楽ちんだ。

気になる人はローパスフィルターを入れればよい。

問題は、音楽を鳴らすソフトと、音楽自体のデータだ。

音楽データは、どこかのWEBからMIDIファイルを探して変換した。

MIDIデータをそのまま持ってくると、ARDUINOに入りきらないので、以下のようなフォーマットで入れることとする。

最初のbitが0のときはチャネルの設定、1のときはdelay(待ち時間)の指定となる。

set_chでは、チャネルの番号(0-255)とともに、noteで音程の高さをMIDI番号(0-127)で指定する。

noteは0にすれば音を止めることとなる。

実はオルゴールの場合、各チャネルの音は同じなので、チャネル指定は必要ない。

データの順序で、音をチャネルを切り替えて音を鳴らしている。

また、ADSR指定をしているので、NOTE=0の指定も取り去ってしまった。

(実際にはNOTE=0でReleaseになるのだろうけど、Sustainの時間は固定)

ARDUINO UNO+MOZZIは、4和音が限度だった。

これ以上増やすとノイズが発生してしまう(だれか良いやり方があれ教えてプリーズ)

そのため、今回は4つの音をデータがくる順序で鳴らしている。

作ったオルゴールの音はこんな感じ。

なんちゃってオルゴール感はあるが個人的にはうまくいったと思う。

見る人がいるかわからないけど、ソースはこれ。

waon_sampleADSR_waonmax_tetris

シェアする

  • このエントリーをはてなブックマークに追加

フォローする