実現したいこと
Processing実行中に1キーを押したらLogicPro(DAWソフト)でC4の音が、2キーを押したらD4の音が出る・・・という風にしたいです。
発生している問題・分からないこと
setup関数内のmyBus = new MidiBus(this, 1, 2);でNullPointExceptionが出て実行画面が固まってしまいます。
エラーメッセージ
error
1NullPointerException 2Could not run the sketch (Target VM failed to initialize). 3For more information, read Help → Troubleshooting. 4
該当のソースコード
Processing
1import themidibus.*; 2 3MidiBus myBus;//MidiBusインスタンスを作成 4int midiChannel = 1;//使用するMIDIチャンネル 5 6void setup() { 7 size(400, 400); 8 9 MidiBus.list(); 10 myBus = new MidiBus(this, 1, 2); //1番の入力と2番の出力を使う 11 12 println("MIDI設定が完了しました。"); 13} 14 15void draw() { 16 background(200); 17 textAlign(CENTER); 18 text("Press 1-7 to send MIDI notes to Logic Pro", width/2, height/2); 19} 20 21void keyPressed() { 22 int note = -1; 23 switch (key) { 24 case '1': 25 note = 60; //C4 26 break; 27 case '2': 28 note = 62; //D4 29 break; 30 case '3': 31 note = 64; //E4 32 break; 33 case '4': 34 note = 65; //F4 35 break; 36 case '5': 37 note = 67; //G4 38 break; 39 case '6': 40 note = 69; //A4 41 break; 42 case '7': 43 note = 71; //B4 44 break; 45 default: 46 println("Key not mapped to a note."); 47 return; 48 } 49 50 //MIDIノートオン(音を鳴らす) 51 myBus.sendNoteOn(midiChannel, note, 127); // チャンネル、ノート番号、ベロシティ 52 println("MIDI note sent: " + note); 53} 54
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
MidiBus.list();で使用可能なMIDIデバイスをコンソールに表示しているのですが、
Available MIDI Devices:
----------Input----------
[0] "Real Time Sequencer"
[1] "Bus1"
[2] "Unknown name"
----------Output----------
[0] "Gervill"
[1] "Real Time Sequencer"
[2] "Bus1"
という風に出ます。MIDI設定でIACDriverのバス名をBus1にしているので入出力は1,2で間違いはないのだと思います。LogicPro側の入力もIACDriverにしているのでProcessing上でのエラーな気がしてなりません
補足
Processingバージョン4.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。