Arduino MIDI Library v4.3
This release brings support for RPN/NRPN sending, as well as an experimental external parser for RPN and NRPN input messages (provided in an example).
One of the major changes under the hood is that Running Status is now disabled by default, as it caused a lot of issues for some people. If your receiving hardware supports it and you want to enable it again for the extra performance, have a look at how to use custom settings.
It also adds a very early experimental native USB demo by tapping into MIDIUSB (therefore will require the dependency to run the example). Full-fledged low-latency native USB MIDI is planned for the next release.
Most of the changes were internal, to fit into the new Arduino library structure guidelines and to leverage modern FLOSS development facilities (unit testing, code coverage, continuous integration).
Changelog
New Features
- #37 - Send RPN & NRPN (select controller number, send plain values or increment/decrement directives).
Bug Fixes
- #53 - Fixed
sendPitchBend(-1.0)which did not output a zero value. - #58 - Fix detection of interleaved
Undefinedbytes. - #61 - Don't invalidate Running Status when not sending anything (invalid send data).
API Changes
Breaking Changes
- Negative range of float/double signature of
sendPitchBendextended to fix #53. - Sending Tune Requests through
sendRealTimeis no longer supported. ReplaceMIDI.sendRealTime(midi::TuneRequest);withMIDI.sendTuneRequest();
RPN / NRPN API
- Replaced
midi::RPNwithmidi::RPNLSB - Replaced
midi::NRPNwithmidi::NRPNLSB - Replaced
midi::DataEntrywithmidi::DataEntryMSB
Non-Breaking Changes
The following changes mark the following old parts of the API as deprecated.
They are kept for backwards compatibility, but should not be used for new sketches. The old definitions will be removed in the next release.
- Added
sendAfterTouchwith note, value and channel arguments as an alias ofsendPolyPressure(now deprecated). - Moved Thru definitions to own sub-scope.
- Replaced
midi::Offwithmidi::Thru::Off - Replaced
midi::Fullwithmidi::Thru::Full - Replaced
midi::SameChannelwithmidi::Thru::SameChannel - Replaced
midi::DifferentChannelwithmidi::Thru::DifferentChannel
- Replaced
Other Changes
- Default value for
UseRunningStatussetting is nowfalse. To benefit from Running Status again, use custom settings.