Revision history for perl module MIDI::RtMidi::FFI

0.10 2026-02-25

  - Incompatible change: Minimum Perl version is now 5.26, with Feature::Compat::Class. This means any subclasses of Device will no longer work as expected. The API is otherwise largely compatible with previous versions.
  - Incompatible change: Specifying $data in rtmidi callbacks is no longer supported.
  - Incompatible change: Sending (N)RPNs has been updated - see docs for rpn() and nrpn() methods of the output device class.
  - Refactoring: Input and Output devices are now separate classes - they may still be instantiated directly from the Device class with the 'type' constructor parameter. RtMidiIn and RtMidiOut operate as before.
  - New method: RtMidiIn->get_fh() - returns a nonblocking IO::Handle which receives MIDI bytes as they arrive, for integration into event loops (see examples/async_*.pl). This is an alternative to librtmidi's own callback mechanism, which does not integrate cleanly with other event loops.
  - MIDI messages are now encoded/decoded with MIDI::Stream. This is compatible with the previous MIDI::Event message handling by default.
  - As part of migration to MIDI::Stream, 14-bit MIDI modes have been removed. The only supported mode is equivalent to the old 'await' mode. Supplying a 14 bit mode options to the constructor results in a deprecation warning, enables 14-bit CC handling, and otherwise has no effect.
  - MIDI::Stream should handle concatenated and running messages more reliably than MIDI::Event, due to the hackish way the latter was integrated (this issue was not a shortcoming of MIDI::Event, just my code).
  - get_compiled_api() now always returns an arrayref of available APIs (RtMidiApi enum).
  - Default buffer size for input devices is now 4096 bytes.
  - Thanks to Gene Boggs (OLOGY) for testing help on MacOS!

0.08 2025-01-20

  - Method open_port_by_name now croaks if an error was detected
  - Require Alien::RtMidi 0.08

0.07 2025-01-19

  - Docs fixes and minor updates
  - Removed panic example, added list_devices example
  - Allow array ref param in send_event / send_message_encoded
  - ::Device should now croak if creating a device or opening a port fails
  - New convenience methods: clock, start, stop, continue

0.06 2024-07-02

  - Support for RtMidi v6
  - Support for send / receive of 14-bit control changes
  - Support for sending RPN / NRPN parameters
  - Support for encode / decode of timecode, clock, start, continue, stop and more
  - Methods to retrieve all available device info (->get_all_port_{nums,names})
  - "Shortcut" methods for send_message_encoded: ->note_on, ->note_off, ->cc ...
  - MIDI-panic methods
  - New example : drum circle - thanks to Gene Boggs (GENE), lfo.pl
  - Expanded docs
    
0.05 2023-09-18

  - Removed Linux-only tests from release - thanks to Lukas Mai (MAUKE)

0.04 2023-03-14

  - MIDI::Event encoded/decoded messages now include channel (breaking change!)
  - Added support for RtMidi v5
  - Enabled limited SysEx support in MIDI::Event encoded/decoded messages
  - Fixed some data handling issues in callback messages
  - Using FFI::Platypus API v2
  - Removed runtime dependency on Alien::RtMidi

0.03 2020-09-02

  - Updated for FFI::Platypus API v1
  - Neater integration with MIDI::Event
  - New get_event method attempts to decode incoming messages

0.01 2019-10-12

  - Initial release
