curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

スーパーの焼き芋製造機近くで鳴っている音楽をArduinoとYMZ294で鳴らしてみた。

 

お疲れ様です。高橋です。

先日ArduinoでPSG音源 YMZ294を使って単音をピロピロと鳴らしましたが、今日は和音にチャレンジです。

和音を出すためにやる事

Arduino+YMZ294で周波数を使った音を鳴らすためには、

  1. Ch1に周波数440Hzをセット
  2. 1秒待つ
  3. Ch1に周波数0Hzをセット

とする事によって、周波数440Hz(ラ)が1秒出てきます。

和音、例えばドミソを1秒鳴らす場合は、

  1. Ch1に周波数330Hz(ド)をセット
  2. Ch2に周波数370Hz(ミ)をセット
  3. Ch3に周波数392Hz(ソ)をセット
  4. 1秒待つ
  5. Ch1に周波数0Hzをセット
  6. Ch2に周波数0Hzをセット
  7. Ch3に周波数0Hzをセット

って感じです。

非常にかったるい。

楽をするために

MIDIシーケンサーのピアノロールでスラスラ書いた後に、MIDIファイルをYMZで読ませられるようなコードが吐き出てくればいいのに、と思いながら「MIDI YMZ294」というキーワードでググると、ありました。

Tanukino328でYMZ294のテスト演奏」というサイトで同じような事に悩んでおり、解決策も書いてありました。「kalshagar」というサイトで、そのものズバリの「MIDIを読み込んで、Arduino+YMZ294用のソースコードを吐き出すツール」が公開されていました。詳細は上記サイトをご確認下さい。素晴らしいツールです。

手順をまとめると、

まずは、シーケンサーで楽曲を3和音(3トラック)で作成します。

waon01

んで、SMF(or MIDI)ファイルをexportし、上述したkalshagarさんの素敵なアプリで読み込みます。FileメニューでMIDIファイルを選択し、「Start」ボタンを押し、演奏が終わったら「Stop」です。すると画面下部にコードが生成されますので、Vampirization menuでコピーします。

waon02

最後に、Arduino側に生成したコードを貼り付ければokです。

waon03

自動生成されたコードはset_ch(ADDR_FREQ_A, 81);というメソッドで周波数とチャンネル指定を行っていますので、これのラッパー関数を作ります。(正確には周波数ではなくて、後述する、周波数が格納された配列へのindex(添え字))

このnoteFreq[note]という配列は、先日のYMZ294ライブラリのYMZ294.hの中にconstで定義されている周波数の配列です。

で、もろもろ準備終わって、コンパイル&マイコンへの書き込みを行った結果が、下記となります。

和音が鳴るのですが、3チャンネル目だけがどうしても鳴りません。あと、同じ音程の音を2つ連続で鳴らすと、くっついてしまいます。

くっつく問題はなんとなく対処方法が分かる(周波数0を音の終わりに毎回仕込む。そのためのラッパー関数を作ればOK)んですが、3ch目が鳴らない件は、かなり調べたのですが、あまり解決策が頭に浮かびません。

 

以上、よろしくお願い致します。

 - 耳コピArduino

  関連記事

音階に合わせてLEDを光らせてみた。

お疲れ様です。高橋です。 主旋律に合わせてLEDを光らせてみる実験を行いました。 …

Castlevania SotN “Dance of Pales”を耳コピ

お疲れ様です。高橋です。 久々に耳コピ。Castlevania Symphony …

Arduino+YMZでドラクエ2の「Lovesong探して」を鳴らしてみた。

お疲れ様です。高橋です。 先日作った「DQ2 – Lovesong探して」for …

異邦人をArduino+YMZ294で演奏させてみた

お疲れ様です。高橋です。 Arduino+YMZ294で、久保田早紀の異邦人(1 …

久々に耳コピ。FF4バトル2

お疲れ様です。高橋です。 超ひさしぶりに耳コピしました。 FF4のバトルテーマ2 …

「FF5/ビッグブリッヂの死闘」をArduino+YMZ294で鳴らしてみた。

お疲れ様です。高橋です。 先日「YMZ294で鳴らすためのビッグブリッヂの死闘を …

「DQ2 – Lovesong探して」for Arduino+YMZ294

お疲れ様です。高橋です。 最近、音系を全然やってなかったので、久しぶりに耳コピし …

グラディウスの音楽をArduinoとYMZ294で3和音で鳴らしてみた。

お疲れ様です。高橋です。 先日、「スーパーの焼き芋製造機近くで鳴っている音楽をA …

ArduinoでPSG音源(YAMAHA YMZ294)を鳴らしてみた。

お疲れ様です。高橋です。 先日秋葉原にて「Arduino」という物を買ってきまし …

Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験

お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …