ジワジワとやりたいことに近づいて行く作戦。
前回→Arduino de MIDI楽器 1 まずは音を出せるようになろう
ArduinoでMIDI楽器、ここで具体的にやりたいことを説明。
KORGのCLIPHITという商品があって、振動センサーを
取り付けたものを叩くとドラムなどの音が出る、というもの。
これのMIDI版を作りたい。
センサーをつけたものを叩くとそれに対応した
MIDIノートを送信して、ソフトシンセからドラムや
パーカッションの音が出せると。
いわゆる電子ドラムと同じものなんだけど、
センサーをつけるものはなんでもいいし、
その辺のものを叩いて楽器にするというのは
とても面白いと思ったので、目標はそこ。
最初の難関は、振動センサーの入力だ。
…と思ったのだが、これも先人がいらっしゃったので
まずは丸パクリ参考にして圧電ブザーからの入力を
Arduinoで周波数値に変更して別の圧電ブザーから発音する実験。
参考(圧電スピーカ(圧電ブザー)を振動センサーにしてみます)
素晴らしい。
それではこれを応用して、振動センサーからの入力を
MIDIベロシティに変換してMacからドラム音を出してみよう。
#includeMIDI_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信号を送信、までは成功!
しかし、ここまでの内容は他の人のコピペに
ちょっと手を加えただけの内容。
ここから先の精度を上げる作業は
電気の知識が必要になる、多分。
というわけで、ここからの進化は
きっと時間がかかるのだろうなぁ…
とは言えここまでならあっさりたどり着けるのが
Arduinoの素晴らしい所だと思う。
以降はチマチマと勉強しながら進めていく所存。
〈Arduino関連〉Arduino UNO |
コメントを残す