MIDI信号送信したらリセットしました。
接続は以下です。
PC→USB-MIDI(UM-1 EX) → MIDI Unit Mini for GROVE → かんぷれ
https://necobit.com/denshi/midi-unit-mini-for-grove/
MIDIはLLMからMCPサーバ(mcp-midi-server)を経由して出力しています。
https://github.com/necobit/mcp-midi-server
以下が動画です。5回ほど試しましたが、どれも1音だけなってリセットしました。
https://x.com/karaage0703/status/1932807109298794856
MIDI信号の詳細や波形などは見れていないのですが、一旦投稿させていただきます。
rtmidiだとリセットして、midiだとリセットしませんでした。
以下でリセットしました。
```
#!/usr/bin/env python3
"""
rtmidiライブラリで直接MIDI信号を高速送信するテスト
MCPサーバーと同じライブラリを使用
"""
import rtmidi
import time
import sys
def test_rtmidi_rapid_fire():
"""rtmidiで高速MIDI信号送信テスト"""
try:
midi_out = rtmidi.MidiOut()
available_ports = midi_out.get_ports()
print(f"利用可能なMIDI出力ポート: {available_ports}")
if not available_ports:
print("MIDI出力ポートが見つかりません")
return
# 最初のポートを使用
midi_out.open_port(0)
port_name = available_ports[0]
print(f"使用するポート: {port_name}")
# テストシーケンス: C4, D4, E4, F4, G4
notes = [60, 62, 64, 65, 67]
print("\n=== rtmidi 高速送信テスト ===")
# BPM 120での計算
beat_duration = 60.0 / 120 # 0.5秒
note_duration = beat_duration * 0.5 # 0.25秒
note_gap = beat_duration * 0.25 # 0.125秒
print(f"ノート長: {note_duration * 1000:.1f}ms, 間隔: {note_gap * 1000:.1f}ms")
for note in notes:
print(f"Note {note} 開始")
# Note On (MCPサーバーと同じ形式)
midi_on = [0x90, note, 64]
midi_out.send_message(midi_on)
print(f"Note {note} ON送信")
time.sleep(note_duration)
# Note Off
midi_off = [0x90, note, 0]
midi_out.send_message(midi_off)
print(f"Note {note} OFF送信")
time.sleep(note_gap)
print(f"Note {note} 完了")
print("\n=== 極短時間テスト (10ms間隔) ===")
for note in notes:
midi_on = [0x90, note, 64]
midi_out.send_message(midi_on)
print(f"Note {note} ON (10ms)")
time.sleep(0.01) # 10ms
midi_off = [0x90, note, 0]
midi_out.send_message(midi_off)
time.sleep(0.05) # 50ms間隔
midi_out.close_port()
print("\nrtmidiテスト完了")
except Exception as e:
print(f"エラー: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
test_rtmidi_rapid_fire()
```