Skip to content

SolderedElectronics/Anything2MIDI-Workshop

Repository files navigation

Soldered Anything2MIDI Workshop

soldered-logo

Code files and resources for the Soldered workshop on building a custom MIDI controller using Arduino/Dasduino boards and sensors! This workshop is being done at TearDown 2025!

Workshop Requirements

To participate in this workshop, it's mandatory to bring the following

  • Laptop Computer - To write, compile and upload Arduino code from
  • Headphones - So that we don't all hear each other's synthesizer playing at the same time :)

Installation Requirements

💻 Required Software (Windows):

🍎 Required Software (macOS):

🐧 Required Software (Linux):

  • ttymidi, for Serial-to-MIDI bridging via ALSA
  • ALSA Utilities (aconnect), to route MIDI ports
  • (Optional) timidity, for acting as a software synth if DAW support is limited

Setting Up Serial to MIDI Bridge

💻 Windows

  1. Install LoopMIDI and run it.

  2. Create a new virtual MIDI port (e.g., Dasduino MIDI).

  3. Install and launch Hairless MIDI Serial Bridge.

  4. In Hairless:

    • Select your Arduino/Dasduino's serial port (e.g., COM3) under Serial port.
    • Select your LoopMIDI port (e.g., Dasduino MIDI) under MIDI Out.
    • Enable Serial<->MIDI Bridge On.
  5. Open your synthesizer/DAW (e.g., Surge XT), and select Dasduino MIDI as MIDI input.

🍎 macOS

  1. Download and install Hairless MIDI Serial Bridge.

    • Note: You may need to allow Hairless under System Preferences > Security & Privacy if macOS blocks it.
  2. macOS has built-in support for virtual MIDI ports via Audio MIDI Setup:

    • Open Audio MIDI Setup (Applications > Utilities).
    • Open MIDI Studio (from the Window menu).
    • Double-click IAC Driver and enable the “Device is online” checkbox.
    • Create a new port (e.g., Dasduino MIDI) if one doesn’t already exist.
  3. Launch Hairless:

    • Select your Arduino/Dasduino's serial port under Serial port.
    • Select the IAC port (e.g., Dasduino MIDI) under MIDI Out.
    • Enable Serial<->MIDI Bridge On.
  4. Open your DAW or synth (e.g., Surge XT) and enable the IAC port (Dasduino MIDI) as MIDI input.

🐧 Linux

Thanks to j3d1n4 for the original Linux instructions!

You can use ttymidi and ALSA tools instead of LoopMIDI and Hairless:

  1. Identify your Arduino/Dasduino serial port (e.g., /dev/ttyACM0).

  2. Run ttymidi with appropriate options:

    ttymidi -s /dev/ttyACM0 -b 115200 -v
  3. This creates a virtual ALSA MIDI port. Check available ports with:

    aconnect -l
  4. Connect the ttymidi port to your DAW/synth input:

    aconnect <ttymidi_client>:<port> <synth_client>:<port>

    Replace client and port numbers with those from aconnect -l.

  5. Alternatively, pipe into timidity to act as a MIDI synth:

    ttymidi -s /dev/ttyACM0 -b 115200 | timidity -iA -B2,8

Tutorial: Sending MIDI Notes with a Button

  1. Connect your Arduino/Dasduino board to your computer via USB.
  2. Open the relevant example sketch from the /examples folder in this repository.
  3. Modify the sketch if necessary (e.g., change the button pin number if it's not connected to the default pin specified in the example). Upload the sketch to your board.
  4. Set up MIDI routing:
    • Launch LoopMIDI and create a new virtual MIDI port (e.g., "Dasduino MIDI").
    • Launch Hairless MIDI Serial Bridge. Select your Arduino/Dasduino's serial port under "Serial port" and select the LoopMIDI port you created (e.g., "Dasduino MIDI") under "MIDI Out". Ensure the "Serial<->MIDI Bridge On" toggle is enabled.
  5. Open your synthesizer or Digital Audio Workstation (DAW), such as Surge XT. Go to its audio/MIDI settings and enable the virtual MIDI port ("Dasduino MIDI") as a MIDI input device.
  6. Press the button connected to your Arduino/Dasduino. You should now hear sound from your synthesizer, triggered by the MIDI note sent from the board!

Linux Alternative Setup (via ttymidi)

For Linux users, ttymidi can be used as an alternative to LoopMIDI and Hairless MIDI:

  1. Identify your Arduino/Dasduino's serial port (e.g., /dev/ttyACM0).
  2. Run ttymidi in a terminal, specifying the port and baud rate (matching your Arduino sketch, typically 9600 or 115200):
    ttymidi -s /dev/ttyACM0 -b 115200 -v
  3. This creates an ALSA MIDI port. You can list available ports with aconnect -l.
  4. Connect the ttymidi output port to your synthesizer/DAW's input port using aconnect:
    aconnect <ttymidi_client>:<port> <synth_client>:<port>
    (Replace client and port numbers accordingly)
  5. Alternatively, you can use a program like timidity in ALSA server mode, which some DAWs like Surge XT can connect to directly:
    ttymidi -s /dev/ttyACM0 -b 115200 | timidity -iA -B2,8

Here's a neatly formatted set of instructions for setting up the Serial to MIDI bridge on macOS and Linux, just like the Windows section, with proper credit for the Linux instructions:

Let me know if you'd like this formatted as Markdown for the actual README.

(Thanks to j3d1n4 for the initial Linux pointers!)


About Soldered

soldered-logo

At Soldered, we design and manufacture a wide selection of electronic products to help you turn your ideas into acts and bring you one step closer to your final project. Our products are intented for makers and crafted in-house by our experienced team in Osijek, Croatia. We believe that sharing is a crucial element for improvement and innovation, and we work hard to stay connected with all our makers regardless of their skill or experience level. Therefore, all our products are open-source. Finally, we always have your back. If you face any problem concerning either your shopping experience or your electronics project, our team will help you deal with it, offering efficient customer service and cost-free technical support anytime. Some of those might be useful for you:

Have fun!

And thank you from your fellow makers at Soldered Electronics.

About

A Workshop where attendees create their own MIDI controller using Soldered products

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published