電子音楽用のドラムシーケンサーインターフェースを作成しています。
マイクロプロセッサとしてarduino megaを使用しており、現在、シリアル通信用に作成した処理プログラムにインターフェイスしています。そこから、OSCメッセージがMax / MSPプログラムに送信され、共同作業を行うパートナーがmidiデータストリームを作成するために作成しました。
そう:
私の物理インターフェイス-> Arduino Mega->シリアルI / O->処理-> OSC-> Max / MSP-> Midi(->音楽アプリ)
このパスを選択した理由の一部は、ステップを削除するのに十分なほど巧妙ではないこと、および物理インターフェイスを希望どおりに更新できること、物理インターフェイスを多目的にできること(複数のモードをフェーダー、ノブ、音声選択ボタンなど)、およびミッションクリティカルなタイミングとリズムの変更(別名「スイング」)を確実にできるようにします。
私のシリアルメッセージは次のように設定されています。
PL,1; // transport control: play
PL,0; // transport control: stop
SW,30; // swing value 30
TM,130; // tempo value 130
SD,1,8,04,0; // Step sequencer data, pattern 1, voice 8 (of 8), step 04 (of 16), off
MU,8,1; // Mute, voice 8 (of 8), on
SO,4,0; // Solo, voice 4 (of 8), off
VL,3,127; // Velocity, voice 3 (of 8), value 127
CC,1,127; // Midi CC, controller 1, value 127
NN,1,36; // Note number, voice 1 (of 8), value 36 (usually a kick drum)
したがって、セミコロンあたりのコンマの数に基づいて、処理プログラムでarduinoからのシリアルデータを解析する方法を決定できることがわかります。これらの種類のメッセージは、Processingから次のようにOSCに変換されます。
/beatseqr/play 1
/beatseqr/play 0
/beatseqr/swing 30
/beatseqr/tempo 130
/beatseqr/matrix/1/8/04 0
/beatseqr/mute/8 1
/beatseqr/solo/4 0
/beatseqr/velocity/3 127
/beatseqr/midicc/1 127
/beatseqr/midinn/1 36
そして、それはすべて問題なく動作しますが、非効率的です。中央に処理アプリが本当に必要ですか?
現在、ProcessingとOSCの部分を方程式から切り離そうとしましたが、シリアルデータプロトコルの設計に関する知識が不足しています。
udpreceive
Max にはオブジェクトがあることを知っています。そして、それはうまくいくと思いますか?多分私はそれを間違って使用しています。
ある時点で、すべてのarduinoコードを切り替えて、すべてのシリアルメッセージの最後に改行を送信しないようにしましたudpreceive
。これは、Maxのオブジェクトに特別な意味があるわけではないためです。実際、正しく思い出せば、最初の改行までの最初のメッセージのみを受け入れ、データの処理を停止します。だからそれを回避するために、私はすべての改行文字を取り出し、それがmax / mspに継続的に吐き出されました。
次に、このメソッドの次の問題は、udpreceive
オブジェクトが一度に1文字しか受け入れないことです。したがって、js
JavaScriptオブジェクトを使用して着信文字を連結し、セミコロンとコンマで解析しようとしました。そこで遭遇した問題は、それが予測不可能で不安定であるということでした。文字が欠落し、メッセージが処理できなくなります。それで、シリアルデータプロトコルをより堅牢なものに変更する必要があるのかどうか、本当に疑問に思っています。それとも私がそれを完全に間違っているのですか?
それをすべてスクラップして、Firmataファームウェアを使用して最初からやり直す必要がありますか?Max / MSPでfirmataを使用するためのチュートリアルをいくつか見てきたので、ボックスのコードが何をしているか、またそれを実行する必要があるかどうかを再確認できたと思います。ファームウェアは、オンボードシリアルLCDに送信するピンの文字列データを受け入れることができますか?LCDをmax / mspから制御できれば、うまくいくかもしれません。
何かアドバイスはありますか?
OMGWTF
ボタンだけを+1しますが、非常によく考えられ、詳細な質問も行われます。