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