2.0.0
This 2.0 release of Control Surface includes support for many new boards, adds new features such as MIDI over BLE, and improves some of the core components of the library.
Breaking changes w.r.t. version 1.2.0
- (7bd5268)
Thepin_ttype is now a distinct type rather than an alias to an integer.
This improves type safety, becausepin_tis no longer implicitly
convertible to an integer (although integers are still convertible to
pin_t), and it is no longer possible to accidentally use incorrect
constructs such asmux.digitalRead(mux.pin(0)). A new type,pin_int_t,
was added to represent sizes and offsets of pins (e.g. “the sixth pin of this
multiplexer)”, and the argument types of the member functions of the
ExtendedIOElement class have been modified accordingly. If you were using a
class that inherited from ExtendedIOElement, you should update the signatures
of any overridden methods. - (b0f4d63)
ReplaceMIDI_Notes::X(n)byMIDI_Notes::X[n]to avoid issues with the ArduinoF(...)macro. - (7b0eee1)
Speed up compilation by removing many source files that were only used for testing. - (07b8729)
Improved Mbed OS USB MIDI implementation. - (d7a4e69)
Added support forBluetoothMIDI_Interfaceon the Raspberry Pi Pico W. - (196b5fc)
AddedArduinoBLEbackend forBluetoothMIDI_Interface. - (d4d7435)
Completely refactoredBluetoothMIDI_Interface, with support for the NimBLE and ArduinoBLE backends. - (9c4cdd4)
More upper case constants and enumerators have been deprecated. For example,
ControlChangeshould be used instead ofCONTROL_CHANGE. If you continue
using the old versions, you will get a compiler warning. These old versions
will be removed in a future version of Control Surface. - (aaf6eea)
The upper caseCHANNEL_xandCABLE_xconstants have been deprecated in
favor of the title case versionsChannel_xandCable_x. This was done to
avoid conflicts with macros defined by the ArduinoCore-renesas.
For the same reason, theCSnamespace has been renamed tocs. - (47b2d5e)
TheEncoderclass has been replaced byAHEncoder.
The code has been cleaned up and support was added for newer boards like the
Raspberry Pi Pico. - (c35f29c)
The SoftwareSerial MIDI interfaces are now in separate header files that have
to be included explicitly if you want to use them. The headers in question
areSoftwareSerialMIDI_Interface.hpp
andSoftwareSerialDebugMIDI_Interface.hpp.
This prevents redefinition errors of pin change interrupt vectors even if
SoftwareSerial is not used. - (bf8fb66)
The abbreviated MIDI send functions (such assendCC()) have been deprecated
in favor of the full names (e.g.sendControlChange()). See the
MIDI_Sender documentation
for a full overview. - (cf32e7e)
Control_Surface.setMIDIInputCallbacks()now takes four arguments instead of
three, because a System Common callback was added. - (a81bd19)
Classes that make use of the SPI interface now require you to pass theSPI
object as a constructor argument. This allows you to useSPI1orSPI2
(if available for your hardware). - (c6e35b9)
TheNoteBitmapDisplayclass has been renamed toBitmapDisplay. - (37b6901)
TheNoteValueLEDandCCValueLEDclasses (and similar) have been replaced
byNoteLEDandCCLEDrespectively.
The display elementsBitmapDisplay,VPotDisplay,VUDisplayetc. are
now generic in the type of value that they display. In most cases, you should
be able to update your sketch by adding<>after the type names, e.g.
BitmapDisplay<>,VPotDisplay<>, etc. - (1a21d13)
The line numbers ofLCDDisplayare now one-based:1is the first line and
2is the second line. This is more consistent with the track parameter and
the API of the rest of the library. (Before, the first line was0and the
second line was1.) - (40e3d7a)
Control Surface now comes with an Encoder library out of the box. You no
longer have to install or includeEncoder.hin your sketches.
Other significant changes
- MIDI parser and pipe staller overhaul (63d51ef).
- ESP32 3.0.0 compatibility and updates (806beca, 48c87ad, e9c06a2, 3433451, 6e2c358).
- Full BLE MIDI support across multiple backends:
- USB MIDI multi-cable support (up to 16 cables) on RP2040 (5f492cf).
- Added encoder support for Arduino UNO R4 (e20e32f, e9d555e, 6f57a56).
- Support for Arduino Giga, MKR 1010 WiFi boards for BLE MIDI (43d4df6, 3aaab29).
- ESP32-S2/S3 USB MIDI Support (a2e4b95, 56b7d73).
- Added mutex use on ESP32 debug MIDI output (04a952d, fe45936).
- More careful handling of
pin_t,pin_int_t(7bd5268, ea17e80, 11c4198). - Add option to disable MIDI pipes, SysEx input buffers to reduce memory usage (1d6ca3d, f351bff).
- Correct System Common handling BLE (161064b).
Full Changelog: 1.2.0...2.0.0