簡體   English   中英

如何將時鍾消息從 arduino 發送到 MIDI 合成器?

[英]How to send clock message from arduino to MIDI synth?

我正在嘗試以120 bpm定期將時鍾從 arduino 發送到 Electron Digitakt 合成器。 這意味着我需要每 21 毫秒發送一次0xF860000/bpm/ppq -> ppq = 24 pulses per quarter

我的代碼看起來像

void setup() 
{
  Serial.begin(31250);

  for (int i=0; i<10; i++) { Serial.write(byte(0xFF)); } // reset the slave
  
  Serial.write(byte(0xFA)); // send start command
  delay(10);

}

void loop () {
    Serial.write(byte(0xF8));
    delay(21);
}

但我看到我的合成器切換到 Play 但BPM沒有改變。 我使用邏輯分析儀檢查輸出,它顯示這個字節每 21 毫秒發送一次(+- 1.2 毫秒,通常是半毫秒)。 用 midi 管理為 arduino 嘗試了幾個庫,沒有任何幫助

你能幫我理解問題出在哪里嗎?

從這個面向程序員的 MIDI 教程看來,應該謹慎使用 Reset 消息:

  • MIDI 重置信息
    • 這是一個狀態字節消息 0xFF,沒有數據字節。 它應該將合成器重置為其開機默認設置,因此它也會停止所有音符的播放。 謹慎使用此消息,因為它會重置完整的合成器,而不僅僅是播放的音符。

我會建議:

  • 僅發送一條重置消息
  • 發送后添加延遲。 您將不得不測試一個適當的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM