teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

さらに追記

2021/05/05 00:36

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -14,4 +14,4 @@
14
14
  MIDI.begin();
15
15
  Serial.begin(115200);
16
16
  ```
17
- MIDIライブラリがSerialを使ってMIDI通信しようとしているのに、`Serial.beign(115200);`でシリアルポートを横取り?しちゃよろしくないのでは。
17
+ MIDIライブラリがSerialを使ってMIDI通信しようとしているのに、`Serial.beign(115200);`でシリアルポートを横取り?しちゃよろしくないのでは(CDCだとボーレート設定は関係ないかも)

1

追記

2021/05/05 00:36

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -1,2 +1,17 @@
1
1
  PCからみたArduino Leonardoのシリアルは、USBのCDCつまり仮想シリアルです。MIDIライブラリが仮想でないシリアル(UARTのTX/RX端子)を使う前提のものであるならその構成ではMIDIに信号が得られないのかもしれません。
2
- 使っているMIDIライブラリの仕様を確認してみてください。
2
+ 使っているMIDIライブラリの仕様を確認してみてください。
3
+
4
+ ---
5
+ (そういえばMIDI機器とヤマハのMIDI-USBコンバータが押し入れの奥にあったはず...と思ったけど見つからない)
6
+
7
+ MIDI Libralyのソースを覗くと、serialMIDI.h中に
8
+ ` // Leonardo, Due and other USB boards use Serial1 by default.`
9
+ という文言が見えますね。Serial1はD0/D1のところの(物理)UARTですから...
10
+ ライブラリのExampleを見ると、AltPinSerialというのがあって、SoftwareSerialを割り当てている例がありますからそれを参考にMIDIをSerialに割当てなおしてみてはいかがでしょう。(しかしSoftwareSerialが31.5KbpsのMIDIでまともに使えるのか?)
11
+
12
+ それと、
13
+ ```Arduino
14
+ MIDI.begin();
15
+ Serial.begin(115200);
16
+ ```
17
+ MIDIライブラリがSerialを使ってMIDI通信しようとしているのに、`Serial.beign(115200);`でシリアルポートを横取り?しちゃよろしくないのでは。