[追記]
processing3.4.5で実行してみましたところ、添付した画像のようにvoid noteOn(int channel, int pitch, int velocity)内のプログラムが実行されました。大学側がprocessing3.4.5の使用の許可がありましたら、1の問題は解決されたことになります。私の回答に少しでも時間を使ってくださった方々に感謝申し上げます。ありがとうございました。
私は9月の中旬にある大学の発表に向けて、電子ドラムとパソコンをMIDIで接続してプログラムを作りたいと思っております。電子ドラムでたたくことをマウスのクリックにみたて、太鼓の達人のような音楽ゲームやVJを作りたいと思っております。
扱う電子ドラムはyamahaのDD75で扱うMIDIインターフェースはMIDIMATE eXです。
そのために、私はまず電子ドラムでの出力データをprocessing4で標準出力させたいと考えています。
現段階ではprocessing上でMIDIデバイスを使用するために必要なMidiBusのインストールは完了し、pocketMIDIというアプリケーションを使用して電子ドラムをたたくとPCに信号が入力されていることが確認できています。以下がその信号が出ている時の画像です。
参照ページに記載されているプログラムを参考にして、標準出力をするプログラムを以下のように書きました。出力した時の画像も添付しておきます。
import themidibus.*;
MidiBus myBus; // MidiBusインスタンス
void setup() {
size(300, 300); //ウインドウのサイズ
background(0); //ウインドウ背景の色
MidiBus.list(); //MIDIデバイスのリストを表示
myBus = new MidiBus(new java.lang.Object(), 2, 5); //MIDIデバイスのinput,outputを指定
}
void draw() {
int channel = 0;
int pitch = 64;
int velocity = 127;
myBus.sendNoteOn(channel, pitch, velocity); // Send a Midi noteOn
delay(200);
myBus.sendNoteOff(channel, pitch, velocity); // Send a Midi nodeOff
int number = 0;
int value = 80;
myBus.sendControllerChange(channel, number, value); // Send a controllerChange
delay(2000);
}
void noteOn(int channel, int pitch, int velocity) {
// Receive a noteOn
println();
println("Note On:");
println("--------");
println("Channel:"+channel);
println("Pitch:"+pitch);
println("Velocity:"+velocity);
}
void noteOff(int channel, int pitch, int velocity) {
// Receive a noteOff
println();
println("Note Off:");
println("--------");
println("Channel:"+channel);
println("Pitch:"+pitch);
println("Velocity:"+velocity);
}
void controlChange(int channel, int number, int value) {
// コントロールチェンジメッセージを受信したときに呼び出される
println("Control Change Received");
println("Channel: " + channel);
println("Number: " + number);
println("Value: " + value);
参照ページ:https://github.com/sparks/themidibus/blob/master/examples/Basic/Basic.pde
問題点として以下の3点があります。
1.void controllerChange(int channel, int number,int value)、void noteOn(int channel, int pitch, int velocity)、void noteOff(int channel, int pitch, int velocity)のコードが読み込まれない。エラーが出ていないが、イベント内に標準出力のコードを入力しても標準出力されない。
2.そもそも、上記の引数であるchannel,number,value,pitch,velcityが扱う電子ドラムDD75とどう関係しているのかわからない。
3.アプリケーションpocketMIDIの使用方法が不明。音の出力は分かるが、表示の意味が分からない。
そこで以下の三つについてお伺いしたいです。
1.void controllerChange(int channel, int number,int value)、void noteOn(int channel, int pitch, int velocity)、void noteOff(int channel, int pitch, int velocity)のコードが読み込まれない理由は何だと考えられますか?
(追記)
myBus = new MidiBus(new java.lang.Object(), 2, 5);の部分を
myBus = new MidiBus();
myBus.registerParent(this);
myBus.addInput(2);
myBus.addOutput(5);
に書き換える方法を試してみました。エラーメッセージは表示されませんが電子ドラムを叩いても信号を出力しません。
また、inPutの指定番号を1、outPutの指定番号を4にした場合、以下のような表示がされてしまいます。
2.void controllerChange(int channel, int number, int value) 、void noteOn(int channel, int pitch, int velocity)、void noteOff(int channel, int pitch, int velocity)のコードが意味する内容は何ですか?MIDIの知識不足のためchannel,number,value,pitch,velocityについてもよく分かっておりません。(追記)pitchは音の高さ、velocityは音の大きさを表すことがわかりました。
3.pocket MIDI を利用して表示された文字は何を意味しますか?上のchannel,number,valuesに対応しているのでしょうか?
(追記)pocket midiのfileからpreferenceからdetailsで詳細を表示することができました。
ですが、channelは10で出力されていることがわかりました。また一行目の三つ目の数字71番が音の強さによって変化するので、velocityに関係していると考えられます。しかし、どこがpitch,number,valuesに対応しているかどうかは分かっておりません。
以下がその表示です。
お時間ある時に回答をよろしくお願いします。
補足情報
電子ドラム(DD75)の取扱説明書
https://jp.yamaha.com/files/download/other_assets/6/892376/dd75_ja_om_c0.pdf
DD75のMIDI同期リファレンス
https://jp.yamaha.com/files/download/other_assets/5/892625/dd75_ja_mr_a0_web.pdf
pocketMIDIの説明ページ
https://www.morson.jp/pocketmidi-webpage/manual/pocketmidimobile/pocketmidimobile_operation_manual_ja.html
またこの投稿は他の質問サイトに投稿をしてしまいました。
理由はマルチポストの非推奨については知らず、より多くのサイトに投稿をすることで様々な意見が得られると思ったためです。
他サイトのリンクは以下の通りです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12302479777
https://qiita.com/laclac/questions/7e773799ad5cfaed4d47
https://ja.stackoverflow.com/questions/99914/processing%e3%81%a8midi%e3%83%87%e3%83%90%e3%82%a4%e3%82%b9%e3%81%ae%e5%90%8c%e6%9c%9f%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e8%b3%aa%e5%95%8f%e3%81%a7%e3%81%99-%e8%a6%81%e7%b4%84%e3%81%97%e3%81%9f%e8%b3%aa%e5%95%8f%e3%81%8c%e9%95%b7%e3%81%99%e3%81%8e%e3%81%a6%e3%82%bf%e3%82%a4%e3%83%88%e3%83%ab%e3%81%ab%e6%9b%b8%e3%81%91%e3%81%aa%e3%81%8b%e3%81%a3%e3%81%9f%e3%81%ae%e3%81%a7%e6%9c%ac%e6%96%87%e3%81%ab%e8%a8%98%e8%bc%89%e3%81%97%e3%81%be%e3%81%99