OpenDeck is a platform suited both for prototyping and developing custom MIDI controllers with easy to use web configurator

Overview

OpenDeck MIDI Platform

OpenDeck is a platform suited both for prototyping and developing custom MIDI controllers with easy to use web configurator. Platform uses class-compliant USB MIDI which makes it compatible with any MIDI software on any OS. Main part of the platform is board on which various components used to build a MIDI controller can be connected. The platform also supports DMX output so it can be used as DMX interface through usbserial plugin in Open Lighting Architecture.

Features

The following components are supported:

  • Buttons
  • Encoders
  • LEDs (single color or RGB)
  • Potentiometers
  • FSRs (force-sensitive resistors)
  • LCD/OLED displays
  • Touchscreen displays (Nextion and Viewtech/Stone)

OpenDeck supports sending of both 7-bit and 14-bit Non-Registered Part Numbers (NRPN), latching messages on buttons, various encoding modes for quadrature encoders, LED control using MIDI In, configurable MIDI channels for each component individually etc. Full list of supported features can be found here.

Web configurator

Click the image to watch the video

Watch the video

Source code for OpenDeck web configurator is located in OpenDeckUI repository. It's written by wyrd-code. Web configurator can run in any browser which supports WebMIDI specification (Chromium based browsers only). Utility needs access to MIDI devices so that it can communicate with OpenDeck boards. All communication is done with custom SysEx protocol explained in detail in Wiki section.

Latest stable version of the UI is always available on this link.

Supported boards

OpenDeck firmware is compatible with official OpenDeck board, as well as various other boards:

Support for custom boards can be easily added using YAML descriptors.

Documentation

Available on dedicated Wiki section.

Discussion

Need help? Want to show off your OpenDeck based builds? Head over to Discussions!

Credits

Licence

Most of the code is available under Apache Licence v2.0, with the following exceptions:

  • src/board/arch/stm32/gen: Code licenced by ST. Depending on the source file, the licence is mostly BSD 3-Clause or ST Ultimate Liberty license. Check individual files for details.
  • modules:
    • avr-libstdcpp: GNU GPL v3 or later with GCC Runtime Library Exception 3.1
    • core: MIT
    • dbms: MIT
    • dmxusb: MIT
    • EmuEEPROM: MIT
    • lufa: Modified MIT, see modules/lufa/LUFA/Licence.txt for details
    • midi: MIT
    • sysex: MIT
    • u8g2: Two-clause BSD
    • unity: MIT
Comments
  • LED Local - CC/S not working after update

    LED Local - CC/S not working after update

    Hi Igor,

    I have a v1.1 board and had some issues accessing the configurator, so I just updated the board to v3.2.1

    I have a very minor issue now that I can not get the led's to activate with "Local - CC/S". I have some momentary buttons with build in led's set up as "Latching" type, Midi message type "CC/0 off".

    Before I updated it was all working fine, the corresponding led's where lit when activating the button and the correct midi CC value were sent. Pushing it again set the midi CC value to 0 and turned the led off. (Nice of you to implement this btw, it was a feature I asked for).

    Now the led's only blink very shortly and only once in a while.

    Hope this makes sense to you and that you can help me.

    Also: 1.1 boards can not be updated beyond v3.2.1 as I understand it?

    Thanks,

    Morten

    opened by Momecmusic 29
  • MIDI IN trouble

    MIDI IN trouble

    Hi Igor,

    your project is amazing and I already made a few midi controllers thanks to it. Now I’m using Arduino Mega2560 and I have an issue with MIDI IN through DIN connector. In Web UI I activated MIDI DIN a connected pin 18 and 19 as described in your Wiki. MIDI OUT works fine but MIDI IN doesn’t react at all. My goal is to control LEDs connected to Arduino over MIDI DIN from another device. Specifically I’d like to connect OpenDeck to another similar project - PedalinoMini. I’m running out of ideas what I’m doing wrong and will be grateful for any advice you can give me.

    Thanks

    Jim

    opened by Kubbik1 22
  • Add support for RealTime messages

    Add support for RealTime messages

    Hi again Igor,

    so I have now testet all of the new functions and everything is great and works really well, except the MMC messages.

    I can not get the Analog Rytm to accept any Start/stop action.

    I have used the Arturia Beatstep pro for a long time to sync and control the Analog Rytm, and this is the message that it sends out: mmc_beatsteppro

    The OpenDeck sends out this: mmc_opendeck

    I know that the MMC send by OpenDeck is right and should work, but I don't know why the Beatstep Pro works and what type of message that is. The Analog Rytm manual does not mention anything about the MMC implementation in the MIDI appendix, but I could try to contact Elektron support in case you don't know what's going on either.

    Do you have any insight in to this matter?

    Best,

    Morten

    enhancement 
    opened by Momecmusic 19
  • Feature wishes

    Feature wishes

    Hi Igor,

    thank you for this awesome project, I love my opendeck board and the configurator is super solid.

    I have a few wishes that I hope you will consider implementing:

    1. The possibility of having transport controls. Start/Stop in particular would be a very nice option to have.

    2. This is a very specific request, one that relates directly to controlling an Elektron Analog Rytm drummachine. So, my request goes to the possibility of having upper and lower CC limits on the LED's. This is because Analog Rytm has a scene mode function with 12 scenes, activated by each of the 12 pads on the Rytm. Oddly enough, they chose to have all 12 scenes controlled on the samme CC value, namely 92, and then being able to trigger each scene with the velocity of CC92. Therefore, if I want to make a controller with buttons for the Scene modes, I have to use the analog inputs on the OpenDeck, which is fine since we have the CC limit controls, but if I want to activate a separate LED for each button this is not yet possible.

    I hope this makes sense and that you will consider my suggestions.

    And thanks again for this project.

    Best,

    Morten

    proposal 
    opened by Momecmusic 19
  • STM32F4 Discovery

    STM32F4 Discovery

    Hi ! I did put the discovery.bin file into my (new) STM32F4 Discovery, seen the blinking LED, unplugged my MINI-USB, linked PA9 to 5V, plugged the MICRO-USB and then... nothing. No device into windows, into my midi software or into the configuration page.

    DETAILS.TXT say that : Version: 0221 Build: Nov 19 2015 15:23:07

    Do you have an idea of what could be wrong ? Thanks !

    EDIT: it blink FOUR time and not THREE as written.

    opened by Wapata 13
  • RPI Pico W + 4067 multiplexer

    RPI Pico W + 4067 multiplexer

    Hello! First of all, i'd like to thank you for this wonderful project! It kickstarted my entry to the vast electronic world! ^^

    With that being said, i'm a noob, just started fiddling with electronics. Now,i've got an issue with using multiplexers with the rpi pico w board. If i connect a single potentiometer to the ADC input of the Pico, everything is working correctly, but if i build a new firmware, with multiplexers enabled, i get really hectic behaviour once the pot gets under a certain threshold, as you can see here:

    https://user-images.githubusercontent.com/57779757/200574837-562322bb-f68f-431c-b88c-73aa296cf710.mp4

    My board is setup correctly ( as far as i'm aware ):

    image

    This is the build config: image

    Upon measuring voltages, the pot sends good values to the multiplexer, but on the z0 pin, the voltages are much smaller ( 3.3V on the channel pin, ~0.8V on the signal pin ).

    As i've said, i'm a noob, so i might be missing something fundamental/obvious! :)

    Thanks again for this beautiful piece of software, and your hard work!

    Regards, Marko.

    PS. The breadboard image configuration is just one of many combinations i've tried. I've tried to fill all 16 channels with potentiometers as well, tried only using channel 0, only channel 16 etc. The behaviour is quite erratic, sometimes nothing gets picked up on channel 1, but gets picked up on channel 16. If i enable every channel, this jumping from channel to channel happens on all of them.

    opened by walrusmustgo 12
  • Unable to configure SSD1306 connected to Mega2560

    Unable to configure SSD1306 connected to Mega2560

    Hi!

    I'm running OpenDeck 4.1.1 on a Mega2560 (a DIYMore Mega2560 Strong - very easy to hook up, so I recommend). I found some spare SSD1306 OLEDs in a parts box and thought I'd try and connecting one to the board, but the configuration stage is failing.

    Going to the Display tab, both controller and resolution show 'Invalid': image

    I set them accordingly (note, here I've not enabled it - that makes no difference): image

    Now, when I try to go to another tab, the details are blank: image

    The DevTools console has an angular error showing - Possibly unhandled rejection: {"errNumber":7}.

    Returning to the Display tab, that's completely empty now as well: image

    Clicking on the ℹ️ button at the bottom then throws the configurator back to the 'Searching for OpenDeck board' screen, but it's much darker than normal because a modal has tried to open, and the configurator is completely unresponsive. It also seems to crash the code on the board, as refreshing the configurator sees it unable to progress past the searching screen. The board needs to be unplugged and plugged back in before being able to use the configurator again.

    This happens whether or not the OLED is actually attached, and as soon as the resolution is modified (even if set back to Invalid). Tested on Chrome and the standalone configurator on Windows.

    opened by IrregularShed 12
  • configurator- analog

    configurator- analog

    only first analog port works. in configurator, if i enable say, 1 and 4 then when moving potentiometer in A0, configurator flashes both 1 and 4(same goes for signal screen). but when i try to use any other potentiometer in those other ports(A1-A5), nothing happens.

    ps. i have multiplexers, can i use them to increase amount of things i can attach(i.e. are they supported?)

    opened by quirosaur 12
  • Fail to flash arduino2560

    Fail to flash arduino2560

    Hello.

    I've been trying to flash the arduino 2560 for two days. The main problem is that the board always report as "OpenDeck DFU", and i can't understand why. As a result the 'configurator' only allows firmware updates.

    What I did: It kinda worked very well. Everything went fine: I used a fresh git checkout/clone. From there I used the ./scripts/flash.sh to burn both the mega16u2 and the mega2560. Flashing did not report any error.

    I tried connecting the board just after the mega16u2: it 'enumerated' as "OpenDeck", without the "DFU". But of course, it was not working as the main mcu was not yet flashed. Once the mcu was flashed, it reported as "OpenDeck DFU".

    What i tried to do to fix the problem:

    • restart it all over: no success
    • does it the other way around (flash 2560 then 16u2)
    • flash firmware using a webbrowser on the configurator. It sees to work (progress bar + success popup message)
    • i suspected a problem with eeprom content, so i : restored "arduino" configuration by reflashing both MCU, and used an arduino sketch to erase the whole eeprom (with '0'). Then re-install again.
    • i tried using several previous versions from git
    • wait very long after flashing, in reference to the note on https://github.com/paradajz/OpenDeck/wiki/Firmware-update#updating-firmware

    Do you have any hint on what could have went wrong ?

    opened by orzel 10
  • Blackpill flashing process completes, but device does not appear.

    Blackpill flashing process completes, but device does not appear.

    I have followed the very clear flashing guide for an STM32F401CCU6, on Windows 10, using v6.2.4 blackpill401.bin The experience goes exactly as described in the guide, except, that after the final message "Transitioning to dfuMANIFEST state", no new device appears in the Device Manager\Sounds After flashing I hear the USB device disconnection sound and 'STM32 BOOTLOADER' in the 'libusbK USB Devices' section disappears, but I do not hear a connection sound. If I unplug or reconnect the device, I do not hear any sound notifications and devices do not change.

    I have also tried v6.2.3 with the same result.

    Found DFU: [0483:df11] ver=2200, devnum=5, cfg=1, intf=0, alt=3, name="@Device Feature/0xFFFF0000/01004 e", serial="339D36483335" Found DFU: [0483:df11] ver=2200, devnum=5, cfg=1, intf=0, alt=2, name="@OTP Memory /0x1FFF7800/01512 e,01016 e", serial="339D36483335" Found DFU: [0483:df11] ver=2200, devnum=5, cfg=1, intf=0, alt=1, name="@Option Bytes /0x1FFFC000/01016 e", serial="339D36483335" Found DFU: [0483:df11] ver=2200, devnum=5, cfg=1, intf=0, alt=0, name="@Internal Flash /0x08000000/04016Kg,01064Kg,01*128Kg", serial="339D36483335"

    Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuERROR, status = 10 dfuERROR, clearing status Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Downloading to address = 0x08000000, size = 239192 Download [=========================] 100% 239192 bytes Download done. File downloaded successfully Transitioning to dfuMANIFEST state

    I have tried two different Blackpill devices, same model.

    Any ideas?

    opened by mattjoyce 9
  • STM32F4 Discovery don't AutoSave

    STM32F4 Discovery don't AutoSave

    Hi ! So I have a STM32F4 Discovery board with button 0 and pot 0 connected and working. If I change the note number (or the CC number) in the web or desktop or web-android UI, it work great but if i unplug or reboot... it goes back to "factory" settings.

    Did i miss a big save button anywhere ?

    Thanks

    opened by Wapata 8
Releases(v7.4.4)
Library and command line backend for the Raspberry Pi OPL3 emulator and midi player

About this repository This repository holds the source code for the pioplemidi backend. You can compile it if you only want to use the library or the

iAmInAction 2 Dec 2, 2021
A tiny, header only, easy to use, cross-platform, portaudio wrapper, sound and notation manager, tailored for the demo scene.

TDAW A tiny, header only, easy to use, cross-platform, portaudio wrapper, sound and notation manager, tailored for the demo scene. This header enables

kbx 13 Dec 2, 2022
Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux

Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux and other operating systems and is developed by a group of volunteers as open source software.

null 59 Jan 1, 2023
Wolf MidiCurve is a MIDI remapping plugin.

Wolf MidiCurve is a MIDI remapping plugin. It can be built as an LV2 or VST plugin and as a standalone Jack application.

Wolf Plugins 8 Oct 21, 2022
A C library to read standard MIDI files.

A C library to read standard MIDI files.

Philip Bennefall 21 Nov 1, 2022
This is a library for creating a MIDI controller using an Arduino or Teensy board.

MIDI controller This is a library for creating a MIDI controller using an Arduino board. It enables you to easily create MIDI controllers or instrumen

Pieter P 361 Dec 27, 2022
Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems

Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Audacity is open source software licensed under GPL, version 2 or later.

Audacity 8.7k Dec 31, 2022
Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems.

Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Sneedacity is open source software licensed under GPL, version 2 or later.

Sneed's Feed & Seed 874 Dec 30, 2022
A simple and easy-to-use audio library based on miniaudio

raudio A simple and easy-to-use audio library based on miniaudio raudio forks from raylib.audio module to become an standalone library. Actually, it w

Ray 67 Dec 21, 2022
A simple and easy-to-use fx sounds generator, based on the amazing Dr.Petter's sfxr

rFXGen A simple and easy-to-use fx sounds generator, based on the amazing Dr.Petter's sfxr. rFXGen can be used for free as a WebAssembly online tool a

Ray 333 Dec 27, 2022
Xan's NFS Music Player - Custom music player replacement and a BASS library interface for NFS.

Xan's NFS Music Player This is a custom music player replacement and a BASS library interface for NFS. FEATURES Custom playlist generation - put any n

Lovro Pleše 16 Dec 24, 2022
simple audio mixer for native and web

?? auph ?? Trivial audio mixer API for native and web targets. Online Demo ⚠️ Work in progress! API is constantly changing. The native playback at the

Elias Ku 13 Jul 1, 2022
C++ audio plug-in framework for desktop, mobile (iOS) and web

iPlug 2 C++ audio plug-in framework for desktop, mobile (iOS) and web iPlug 2 is a simple-to-use C++ framework for developing cross-platform audio plu

iPlug 2 Framework 1.4k Jan 2, 2023
CodeSpeak is a web-based code editor that lets users code with the power of their voice

Welcome to CodeSpeak! CodeSpeak is a web-based code editor that lets users code with the power of their voice. It's currently in an embryonic stage, b

Seth Wilson 134 Jun 4, 2022
Easy and efficient audio synthesis in C++

Tonic Fast and easy audio synthesis in C++. Prefer coding to patching? Love clean syntax? Care about performance? That's how we feel too, and why we m

null 482 Dec 26, 2022
An OBS plugin for removing background in portrait images (video), making it easy to replace the background when screen recording.

OBS Plugin: Background Removal Introduction Building MacOSX Linux / Ubuntu Windows Download Check out the latest releases for downloads and install in

Roy Shilkrot 1.4k Jan 8, 2023
Oboe is a C++ library that makes it easy to build high-performance audio apps on Android.

Oboe Oboe is a C++ library which makes it easy to build high-performance audio apps on Android. It was created primarily to allow developers to target

Google 3.2k Jan 3, 2023
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.

PendulumSynth PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music

Mohammadreza Anvari 3 Oct 7, 2022
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework for creating high quality desktop and mobile applications, including VST, VST3, AU, AU

JUCE 4.7k Jan 6, 2023