Module: MIDICommunicationsMacOS

Defined in:
lib/midi-communications-macos.rb,
lib/midi-communications-macos/api.rb,
lib/midi-communications-macos/device.rb,
lib/midi-communications-macos/entity.rb,
lib/midi-communications-macos/source.rb,
lib/midi-communications-macos/version.rb,
lib/midi-communications-macos/endpoint.rb,
lib/midi-communications-macos/destination.rb,
lib/midi-communications-macos/type_conversion.rb

Overview

macOS-specific MIDI I/O using the Core MIDI framework.

This library provides low-level access to MIDI devices on macOS through Apple's Core MIDI framework via FFI bindings. It is typically used through the higher-level midi-communications gem.

The main classes are:

  • Source - MIDI input endpoints for receiving messages
  • Destination - MIDI output endpoints for sending messages
  • Device - Physical or virtual MIDI devices
  • Entity - Logical groupings of endpoints within a device

Examples:

List all MIDI sources (inputs)

MIDICommunicationsMacOS::Source.all.each do |source|
  puts "#{source.id}: #{source.display_name}"
end

List all MIDI destinations (outputs)

MIDICommunicationsMacOS::Destination.all.each do |dest|
  puts "#{dest.id}: #{dest.display_name}"
end

Send a MIDI message

output = MIDICommunicationsMacOS::Destination.first
output.open
output.puts(0x90, 60, 100)  # Note On
output.puts(0x80, 60, 0)    # Note Off

Receive MIDI messages

input = MIDICommunicationsMacOS::Source.first
input.open
messages = input.gets
# => [{ data: [144, 60, 100], timestamp: 1234567890.123 }]

See Also:

Defined Under Namespace

Modules: API, Endpoint, TypeConversion Classes: Destination, Device, Entity, Source

Constant Summary collapse

VERSION =

Current version of the midi-communications-macos gem.

'0.7.0'.freeze