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