Source code for jdxi_editor.devel.fresh_midi_test

#!/usr/bin/env python3
"""
Fresh MIDI Test - No Existing Infrastructure

This test starts completely fresh without any existing MIDI infrastructure
to avoid callback conflicts.
"""

import sys
import time

import rtmidi


[docs] def fresh_midi_callback(message, data): """Fresh callback function""" message_data, timestamp = message print(f"FRESH MIDI: {message_data}") print(f"Timestamp: {timestamp}") print(f"Data: {data}") print("-" * 40)
[docs] def main(): print("Fresh MIDI Test - No Existing Infrastructure") print("=" * 50) # Create a completely fresh MIDI input midi_in = rtmidi.RtMidiIn() # List ports port_count = midi_in.getPortCount() print(f"Available ports: {port_count}") ports = [] for i in range(port_count): port_name = midi_in.getPortName(i) ports.append((i, port_name)) print(f" {i}: {port_name}") # Find SINCO ports sinco_ports = [ (i, name) for i, name in ports if "SINCO" in name.upper() or "VMX8" in name.upper() ] if not sinco_ports: print("❌ No SINCO ports found") return print(f"\nFound SINCO ports: {sinco_ports}") # Test each port for port_index, port_name in sinco_ports: print(f"\n=== Testing {port_name} ===") try: # Open the port midi_in.openPort(port_index) print(f"✅ Opened {port_name}") # Set callback midi_in.setCallback(fresh_midi_callback) print("✅ Callback set") # Set ignore types midi_in.ignoreTypes(False, True, True) print("✅ Ignore types set") print("Move controls on your SINCO VMX8 controller...") print("Monitoring for 10 seconds...\n") # Monitor start_time = time.time() message_count = 0 while time.time() - start_time < 10: time.sleep(0.1) # Close port midi_in.closePort() print(f"✅ Closed {port_name}") except Exception as e: print(f"❌ Error testing {port_name}: {e}") try: midi_in.closePort() except Exception: pass
if __name__ == "__main__": try: main() except KeyboardInterrupt: print("\nExiting...") except Exception as e: print(f"Fatal error: {e}") sys.exit(1)