{"library":"pyobjc-framework-coremidi","title":"PyObjC CoreMIDI Framework","description":"PyObjC CoreMIDI provides Python bindings for Apple's CoreMIDI framework on macOS, enabling Python applications to interact with MIDI devices and services. It is part of the larger PyObjC bridge, which allows full-featured Cocoa applications to be written in pure Python. The current version is 12.1, with releases typically tied to macOS SDK updates and Python version support changes.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install pyobjc-framework-coremidi"],"cli":null},"imports":["import CoreMIDI","from CoreMIDI import MIDIObjectGetStringProperty"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import CoreMIDI\nimport objc\n\ndef list_midi_devices():\n    \"\"\"Lists all available CoreMIDI devices.\"\"\"\n    print(\"MIDI Devices:\")\n    num_devices = CoreMIDI.MIDIGetNumberOfDevices()\n    if num_devices == 0:\n        print(\"  No MIDI devices found.\")\n        return\n\n    for i in range(num_devices):\n        midi_device_ref = CoreMIDI.MIDIGetDevice(i)\n        if midi_device_ref:\n            # MIDIObjectGetStringProperty returns a status code and the string value.\n            # PyObjC automatically bridges CFStringRef to Python string.\n            (name_result, name_str) = CoreMIDI.MIDIObjectGetStringProperty(\n                midi_device_ref, CoreMIDI.kMIDIPropertyName\n            )\n            if name_result == 0: # noErr\n                print(f\"  Device {i}: {name_str}\")\n            else:\n                print(f\"  Device {i}: (Error getting name, code {name_result})\")\n        else:\n            print(f\"  Device {i}: (Could not get device reference)\")\n\nif __name__ == \"__main__\":\n    list_midi_devices()","lang":"python","description":"This example demonstrates how to import the CoreMIDI framework and iterate through the available MIDI devices, printing their names. CoreMIDI is a low-level API; more complex interactions often require a deeper understanding of its C API and manual resource management.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":null,"pypi_latest":"12.1","is_stale":null,"summary":{"python_range":"3.10–3.9","success_rate":0,"avg_install_s":null,"avg_import_s":null,"wheel_type":null},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.9,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.1,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.9,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.5,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyobjc-framework-coremidi","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.6,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}