Module: MIDICommunications

Defined in:
lib/midi-communications.rb,
lib/midi-communications/input.rb,
lib/midi-communications/device.rb,
lib/midi-communications/loader.rb,
lib/midi-communications/output.rb,
lib/midi-communications/version.rb,
lib/midi-communications/platform.rb,
lib/midi-communications/adapter/jruby.rb,
lib/midi-communications/adapter/linux.rb,
lib/midi-communications/adapter/macos.rb,
lib/midi-communications/adapter/windows.rb,
lib/midi-communications/type_conversion.rb,
lib/midi-communications/input/stream_reader.rb

Overview

Platform-independent realtime MIDI input and output for Ruby.

MIDICommunications provides a unified API for MIDI communication across different platforms (macOS, Linux, Windows, JRuby). It automatically detects the current platform and loads the appropriate low-level adapter.

This library is part of the MusaDSL MIDI suite:

Examples:

List all MIDI outputs

MIDICommunications::Output.list
# 0) IAC Driver Bus 1
# 1) USB MIDI Device

Send a note to the first output

output = MIDICommunications::Output.first
output.puts(0x90, 60, 100)  # Note On, middle C, velocity 100
sleep(0.5)
output.puts(0x80, 60, 0)    # Note Off

Receive MIDI from an input

input = MIDICommunications::Input.first
loop do
  messages = input.gets
  messages.each { |m| puts m.inspect }
end

Interactive device selection

output = MIDICommunications::Output.gets  # Prompts user to select
input = MIDICommunications::Input.gets

See Also:

Defined Under Namespace

Modules: Adapter, Device, Platform, TypeConversion Classes: Input, Loader, Output

Constant Summary collapse

VERSION =

Current version of the midi-communications gem.

'0.7.0'.freeze