Giter VIP home page Giter VIP logo

dinoctopus's Introduction

Dinoctopus

PlatformIO CI

Official documentation

This is a RP2040 based USB-Midi interface that also allows for Midi merging and other MIDI tools (coming, I'm porting them from an Arduino Mega).

It is currently still highly experimental (but works well for me) and comes with no support.

The noticeable things here is that:

  • MIDI interfaces are using the PIO state machines. We can have up to 8 MIDI I or O (or 4 duplex ports)
  • Up to 16 virtual USB interfaces (duplex) that allow connecting things together
  • 2 additional physical duplex ports with the RP2040 UARTs (only one is setup currently)

That's 22 duplex MIDI interfaces (6 physical) on a $4 board ($1 microcontroller if you like soldering small things).

I've not stressed tested it yet, but it handles normal playing with multiple controllers so far.

It works out of the box on Linux with no driver installation. I do not have a Windows or MacOS machine to test on them.

Building

I'm using Jetbrains Clion and PlatformIO to code and upload it to my board using a picoprobe programmer.

This should probably get you started:

pio project init
pio run -e pico -t upload

Most of the configuration you care about is in include/config.hpp

It used to have a UI, but I switched to a pure SysEX approach, that may have a web UI to set it or just a tiny python program.

Testing

I made a tiny Python tool to test the SYSEX commands that could help you configure it:

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
python3  test_sysex.py

Careful this will erase your matrix and set it as a diagonal (so the physical ports are replicated to their matching number).

Thanks

DiyElectroMusic - About the idea of using PIOs for MIDI

Ha Thach - For TinyUSB (I had to extract some code from there to get virtual cable workings)

dinoctopus's People

Contributors

bjonnh avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.