Releases: tttapa/Control-Surface
Releases · tttapa/Control-Surface
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_t
type is now a distinct type rather than an alias to an integer.
This improves type safety, becausepin_t
is 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_Interface
on the Raspberry Pi Pico W. - (196b5fc)
AddedArduinoBLE
backend 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,
ControlChange
should 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_x
andCABLE_x
constants have been deprecated in
favor of the title case versionsChannel_x
andCable_x
. This was done to
avoid conflicts with macros defined by the ArduinoCore-renesas.
For the same reason, theCS
namespace has been renamed tocs
. - (47b2d5e)
TheEncoder
class 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 useSPI1
orSPI2
(if available for your hardware). - (c6e35b9)
TheNoteBitmapDisplay
class has been renamed toBitmapDisplay
. - (37b6901)
TheNoteValueLED
andCCValueLED
classes (and similar) have been replaced
byNoteLED
andCCLED
respectively.
The display elementsBitmapDisplay
,VPotDisplay
,VUDisplay
etc. 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 ofLCDDisplay
are now one-based:1
is the first line and
2
is the second line. This is more consistent with the track parameter and
the API of the rest of the library. (Before, the first line was0
and 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.h
in 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
Version 1.2.0
- Arduino Nano Every support
- Buffered Extended IO
- Support daisy-chained MAX7219 chips
- Support for rotary encoders connected through MCP23017 port expanders
- Thread-safe
Updatable
class - AppleMIDI support
- "Smart" bankable potentiometers
- MIDI pipes for routing MIDI traffic between Control Surface and MIDI interfaces
- Rename
MIDICNChannelAddress
→MIDIAddress
- Rename
MIDICNChannel
→MIDIChannelCN
- Type-safe MIDI USB cable numbers
- More examples
Version 1.1.1
- Shorter filenames for examples (Windows limitation)
- Small bug fixes and improvements
- Documentation improvements
- More examples
Version 1.1.0
This version adds support for Arduino Due and Arduino Nano 33.
The directory structure has been improved, and some parts of the library have been moved to a separate repository, Arduino Helpers.
Version 1.0.0
This is the last version before changing the structure to use the Arduino Helpers library.