
質問させていただきます。
ArduinoのMIDIライブラリを使って手持ちのシンセサイザにMIDIの信号を送りたいのですがうまくMIDIの信号が送信できてていないのか信号が反映されません。
理想はシンセサイザの鍵盤を押さえ続けると1秒ごとにモジュレーションがかかるイメージだったのですがうまくいきません。
プログラムは下記のとおりです。
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
void setup() {
// put your setup code here, to run once:
MIDI.begin();
int i = 0;
}
void loop() {
if(i % 2 == 0){
MIDI.sendControlChange(1, 64, 1);
}
i++;
delay(100);
}
またピッチを変更する場合もうまく動きません。
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
void setup() {
// put your setup code here, to run once:
MIDI.begin();
int i = 0;
}
void loop() {
if(i % 2 == 0){
MIDI.sendPitchBend(64, 1);
}
i++;
delay(100);
}
MIDI.sendNoteOnとMIDI.sendNoteOffは動いた(指定したノートの音が鳴って止まった)ので配線の問題はないかと思います。
MIDIライブラリの使い方がおかしいのでしょうか…回答いただければ幸いです。
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
リファレンスをコピペすると
void MIDI_Class::sendControlChange (
byte ControlNumber,
byte ControlValue,
byte Channel
)
Parameters:
ControlNumber The controller number (0 to 127). See the detailed description here: http://www.somascape.org/midi/tech/spec.html#ctr …
ControlValue The value for the specified controller (0 to 127).
Channel The channel on which the message will be sent (1 to 16).
ControlNumberは0始まりみたいですが、操作したいコントロールは1で合ってますか?
sendNoteOnが効くということは、Channelは合っている。と仮定すると
sendPitchBendが動作しない理由がいまいち紐づきませんでした。
※sendPitchBendの第1引数PitchValueはint型なら-8192~8192が指定可能です。もしかして指定値が小さくて変化が分かりにくい?
ディレイがms指定なら、ループの条件を見る限り1秒かけてピッチが3.2%程の変化する処理です。MIDIや音楽の事は知りませんが、念の為数秒かけてピッチ変化を確認してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LNK2019:未解決の外部シンボル ...
-
スレッドの作成について(pthre...
-
C言語:double型での戻り値は小...
-
Arduinoでの圧電スピーカーとタ...
-
静的でないメンバ関数の呼び出...
-
gcc: incompatible pointer type
-
プログラムを教えてください。...
-
const_castのつかいどころを教...
-
戻り値を返す関数の前に(void)...
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
プログラムでの数字につく”f”の...
-
「Aに対するBの割合」と「Aに対...
-
C++のfor文について
-
変数とパラメータとは違うもの...
-
C言語のプログラミングですが、
-
main.c:7:43: warning: implici...
-
For文の終了値を関数にしても問...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
既定のコンストラクタがありま...
-
戻り値を返す関数の前に(void)...
-
C++にてtemplateで受け取った任...
-
【gcc・cygwin】multiple defin...
-
const_castのつかいどころを教...
-
多重定義が起きている?--lnk20...
-
gcc: incompatible pointer type
-
(void)0 はどんな意味ですか
-
C# KeyDownイベントでショート...
-
pictureboxの画像を削除するには?
-
Notepad++の関数リスト表示の変...
-
C#でテンキーの操作は可能でし...
-
アドレスを指定して関数を呼び...
-
ウインドウの移動禁止
-
画面上をクリックするとクリッ...
-
C# Controls.Addで動的に配置し...
-
別ソースファイル、同クラス名...
-
DLLの関数呼び出しで引数がある...
-
プログラム作成教えてください...
おすすめ情報