Arduino de MIDI楽器 2 圧電ブザーでMIDI送信

ジワジワとやりたいことに近づいて行く作戦。

前回→Arduino de MIDI楽器 1 まずは音を出せるようになろう
 
ArduinoでMIDI楽器、ここで具体的にやりたいことを説明。
KORGのCLIPHITという商品があって、振動センサーを
取り付けたものを叩くとドラムなどの音が出る、というもの。

これのMIDI版を作りたい。
センサーをつけたものを叩くとそれに対応した
MIDIノートを送信して、ソフトシンセからドラムや
パーカッションの音が出せると。
いわゆる電子ドラムと同じものなんだけど、
センサーをつけるものはなんでもいいし、
その辺のものを叩いて楽器にするというのは
とても面白いと思ったので、目標はそこ。
 
最初の難関は、振動センサーの入力だ。
…と思ったのだが、これも先人がいらっしゃったので
まずは丸パクリ参考にして圧電ブザーからの入力を
Arduinoで周波数値に変更して別の圧電ブザーから発音する実験。
2015-05-25_20-27-45
参考(圧電スピーカ(圧電ブザー)を振動センサーにしてみます


素晴らしい。
それではこれを応用して、振動センサーからの入力を
MIDIベロシティに変換してMacからドラム音を出してみよう。

#include 
MIDI_CREATE_DEFAULT_INSTANCE();

#define THRESHOLD   420            // 振動センサー信号の入力閾値約2.0V
#define NOUSESIGNAL 30             // この値以下の信号は利用しない(ノイズ対策)
#define BEAT        40            // 音を鳴らす長さ
#define PINNO       13             // 音出力用スピーカを接続したピン番号

void setup() {
    MIDI.begin();
}
void loop() {
     int val ;     
     val = analogRead(5) ;         // アナログ5番ピンから振動値を読取る
      val = abs(val- THRESHOLD) ;   // ソフト整流
          delay(BEAT) ;            // この分だけ音を鳴らす 
     if (val > 127) val = 127; 
     if (val <= NOUSESIGNAL) noTone(PINNO) ;        // 小さい振動値は音を鳴らさない
     else {
            MIDI.sendNoteOn(40,val,1);  //MIDIノートオン送信
          delay(BEAT) ;            // この分だけ音を鳴らす
        MIDI.sendNoteOff(40,64,1);  //MIDIノートオフ送信      
     }
}

ひとまずノートナンバーは40(ドラムの場合スネア)に固定。


Mac側ではMOTU DP8上にQuickTime音源を立ち上げて
Recボタンをつけている状態。

精度はともかく、振動を使ってMIDI信号を送信、までは成功!
2015-05-25_20-28-06

しかし、ここまでの内容は他の人のコピペに
ちょっと手を加えただけの内容。
ここから先の精度を上げる作業は
電気の知識が必要になる、多分。

というわけで、ここからの進化は
きっと時間がかかるのだろうなぁ…
とは言えここまでならあっさりたどり着けるのが
Arduinoの素晴らしい所だと思う。
以降はチマチマと勉強しながら進めていく所存。

〈Arduino関連〉Arduino UNO

〈Arduino関連〉Arduino UNO
価格:3,326円(税込、送料別)

作成者: necobit(ねこびっと)

音楽と電子工作でMIDI寄りものづくりをするユニット。MIDI制御基板の開発・販売、製品作例として自動演奏化楽器の展示・音とメカのパフォーマンスを行なっています。

2件のコメント

Arduino de MIDI楽器 1 まずは音を出せるようになろう | へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください