Skip to content

2.0.0

Latest
Compare
Choose a tag to compare
@tttapa tttapa released this 27 Apr 21:24
· 1 commit to main since this release

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)
    The pin_t type is now a distinct type rather than an alias to an integer.
    This improves type safety, because pin_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 as mux.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)
    Replace MIDI_Notes::X(n) by MIDI_Notes::X[n] to avoid issues with the Arduino F(...) 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 for BluetoothMIDI_Interface on the Raspberry Pi Pico W.
  • (196b5fc)
    Added ArduinoBLE backend for BluetoothMIDI_Interface.
  • (d4d7435)
    Completely refactored BluetoothMIDI_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 of CONTROL_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 case CHANNEL_x and CABLE_x constants have been deprecated in
    favor of the title case versions Channel_x and Cable_x. This was done to
    avoid conflicts with macros defined by the ArduinoCore-renesas.
    For the same reason, the CS namespace has been renamed to cs.
  • (47b2d5e)
    The Encoder class has been replaced by AHEncoder.
    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
    are SoftwareSerialMIDI_Interface.hpp
    and SoftwareSerialDebugMIDI_Interface.hpp.
    This prevents redefinition errors of pin change interrupt vectors even if
    SoftwareSerial is not used.
  • (bf8fb66)
    The abbreviated MIDI send functions (such as sendCC()) 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 the SPI
    object as a constructor argument. This allows you to use SPI1 or SPI2
    (if available for your hardware).
  • (c6e35b9)
    The NoteBitmapDisplay class has been renamed to BitmapDisplay.
  • (37b6901)
    The NoteValueLED and CCValueLED classes (and similar) have been replaced
    by NoteLED and CCLED respectively.
    The display elements BitmapDisplay, 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 of LCDDisplay 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 was 0 and the
    second line was 1.)
  • (40e3d7a)
    Control Surface now comes with an Encoder library out of the box. You no
    longer have to install or include Encoder.h in your sketches.

Other significant changes

Full Changelog: 1.2.0...2.0.0