Source code for jdxi_editor.devel.system_midi_test
#!/usr/bin/env python3
"""
System MIDI Test using macOS built-in tools
This test uses macOS built-in MIDI monitoring tools to check if the controller
is sending messages.
"""
import subprocess
import sys
import time
[docs]
def test_with_system_tools():
"""Test using macOS system tools"""
print("SINCO VMX8 Controller Test using System Tools")
print("=" * 50)
# Check if we're on macOS
if sys.platform != "darwin":
print("❌ This test is designed for macOS")
return False
print("Checking MIDI ports using system tools...")
# Use system_profiler to check MIDI devices
try:
result = subprocess.run(
["system_profiler", "SPAudioDataType"],
capture_output=True,
text=True,
timeout=10,
)
if result.returncode == 0:
audio_info = result.stdout
if "SINCO" in audio_info.upper() or "VMX8" in audio_info.upper():
print("✅ SINCO VMX8 detected in audio devices")
else:
print("❌ SINCO VMX8 not found in audio devices")
else:
print("❌ Could not check audio devices")
except Exception as e:
print(f"❌ Error checking audio devices: {e}")
# Check MIDI ports using system tools
try:
result = subprocess.run(["ls", "/dev/"], capture_output=True, text=True)
if result.returncode == 0:
devices = result.stdout
midi_devices = [d for d in devices.split("\n") if "midi" in d.lower()]
if midi_devices:
print(f"MIDI devices found: {midi_devices}")
else:
print("No MIDI devices found in /dev/")
else:
print("❌ Could not list devices")
except Exception as e:
print(f"❌ Error listing devices: {e}")
# Try to use the built-in MIDI monitor
print("\n=== Using Built-in MIDI Monitor ===")
print("To test your controller manually:")
print("1. Open 'Audio MIDI Setup' (Applications > Utilities)")
print("2. Look for your SINCO VMX8 in the MIDI devices list")
print("3. Open 'MIDI Monitor' (if available)")
print("4. Move controls on your controller")
print("5. Check if messages appear in MIDI Monitor")
return True
[docs]
def main():
try:
success = test_with_system_tools()
if success:
print("\n✅ System test completed!")
else:
print("\n❌ System test failed!")
sys.exit(1)
except KeyboardInterrupt:
print("\nExiting...")
except Exception as e:
print(f"Fatal error: {e}")
sys.exit(1)
if __name__ == "__main__":
main()