
質問させていただきます。
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で質問しましょう!
似たような質問が見つかりました
- その他(パソコン・周辺機器) DTMとMIDIキーボードについて。 ハードオフでジャンク品のmidiキーボードを見つけました。Ro 1 2022/06/25 13:24
- 作詞・作曲 DTMとMIDIキーボードについて。 ハードオフでジャンク品のmidiキーボードを見つけました。Ro 1 2022/06/25 11:35
- 作詞・作曲 DTM DAWとmidiキーボードについて 1 2022/10/20 16:41
- ノートパソコン MIDI関係 1 2022/04/04 19:00
- 作詞・作曲 MIDIキーボード内蔵オーディオインターフェイス 1 2022/06/04 08:35
- ノートパソコン いつもありがとうございます。 MIDI端子がある電子ピアノを、Mac BookプロでMIDIを使って 1 2022/03/26 10:33
- 楽器・演奏 dtm初心者です。 MIDIは入力機器に録音機械が ないと midiは打ち込み出来ないんですか? 1 2022/04/18 21:30
- その他(パソコン・スマホ・電化製品) ios専用のbluetooth機器をandroidで接続する方法 4 2023/01/09 16:50
- Bluetooth・テザリング ios専用のbluetooth機器をandroidで接続する方法 1 2022/11/04 22:53
- 画像編集・動画編集・音楽編集 MIDI メッセージレベルで編集できるソフト 1 2022/10/30 20:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
見た目は同じソースなのにエラ...
-
静的でないメンバ関数の呼び出...
-
VC++でGetKeyboardStateがうま...
-
C++でイベントドリブンなコード...
-
_beginthread()の使用について
-
void **(char や intのアドレ...
-
C で、関数の中から、別の関数...
-
C#でラジオボタンを設定に記録...
-
既定のコンストラクタがありま...
-
Arduinoを使ってMIDI機器のコン...
-
ArduinoでMouse関数を使用して...
-
プログラミング教えてください
-
c言語の問題です。ファイルから...
-
pictureboxの画像を削除するには?
-
リージョンのフレームを描画す...
-
C# Controls.Addで動的に配置し...
-
H8マイコンでC言語で、パルスモ...
-
C# KeyDownイベントでショート...
-
GDI+の使用方法について
-
ソケット通信時のWSACleanup処...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
【gcc・cygwin】multiple defin...
-
戻り値を返す関数の前に(void)...
-
多重定義が起きている?--lnk20...
-
C++にてtemplateで受け取った任...
-
const_castのつかいどころを教...
-
既定のコンストラクタがありま...
-
C# Controls.Addで動的に配置し...
-
(void)0 はどんな意味ですか
-
C#でラジオボタンを設定に記録...
-
ウインドウの移動禁止
-
Notepad++の関数リスト表示の変...
-
Delphiの定数とローカル変数の...
-
typedef unsigned int UINT;が...
-
int main()、void main()、void...
-
C言語 extern について
-
void*型の配列について
-
VC++でGetKeyboardStateがうま...
-
_beginthreadにて発生するコン...
-
gcc: incompatible pointer type
おすすめ情報