Skip to content

Releases: tttapa/Control-Surface

2.0.0

27 Apr 21:24
Compare
Choose a tag to compare

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

Version 1.2.0

08 Sep 17:26
Compare
Choose a tag to compare
  • 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 MIDICNChannelAddressMIDIAddress
  • Rename MIDICNChannelMIDIChannelCN
  • Type-safe MIDI USB cable numbers
  • More examples

Version 1.1.1

15 Jan 17:40
Compare
Choose a tag to compare
  • Shorter filenames for examples (Windows limitation)
  • Small bug fixes and improvements
  • Documentation improvements
  • More examples

Version 1.1.0

30 Nov 20:16
Compare
Choose a tag to compare

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

30 Nov 14:47
Compare
Choose a tag to compare

This is the last version before changing the structure to use the Arduino Helpers library.