Cortex-M4 based Musical Instrument Digital Interface project
See this for an updated version.
Presentation video (in Polish): Video
Authors:
Mirosław Wiącek - @Soberat
Łukasz Kowalczyk - @lucas6smith
Any updates to this project will be located in Project Updates.md file
This project is based around a Teensy 3.2 - a Cortex-M4 equipped board in a very small form factor. It has multiple features, including:
- native USB MIDI support including up to 16 virtual cables (essentially 16 virtual devices),
- a hardware I2S interface for 2-channel USB audio,
- 64K of RAM allowing us to easily drive 2 OLED I2C displays,
- a clock as fast as 120MHz.
All of those features and more allow us to create a high performance, low latency MIDI controller without compromises. It will be used with Traktor Pro 3, a DJing program described in Traktor Pro Overview.md
We'll be using the Control Surface library licensed under GPL-3.0 License because of its' capabilities related to reading System Exclusive Messages - a protocol specific message carrying information different than typical MIDI message - in our case it will carry information about music loaded in the given deck like artist, title, time, beats per minute (BPM).
- Implement basic input functionality - potentiometers, buttons and rotary encoders,
- Add WS2812 LEDs as outputs,
- Implement display functionality,
- Debug protocol described in MIDI Protocol.md
- Implement USB audio interface functionality using I2S,
- Verify full project functionality
- 2 SSD1306 OLED displays:
- TCA9548A I2C multiplexer (required due to displays using the same address):
- CD74HC4067 multiplexer due to large amount of inputs:
- PCM5102 - an I2S audio interface
- WS2812 addressable RGB LEDs in two forms - either single LED or 8:
- assorted tactile buttons, potentiometers and rotary encoders as typical input devices