I want to build a kind of a synthesizer, with a set of potentiometers connected to Pi via ADC, a set of momentary buttons that would toggle the modes and so on.

I could create a row of buttons as keyboard keys, but seems like it can be a better solution to use some modern simple and compact MIDI controller that is connected to the Pi via USB and then somehow my app (Python or anything) would catch its signals. Is it possible to connect it without having to modify hardware part of the MIDI keyboard or create a middleman block, just by setting up necessary libs on the Pi and linking them to my app?

  • 1
    USB MIDI devices should be plug&play. What software library to use depends on the language you're using. – CL. May 27 '15 at 12:24

You didn't mention what language you're planning to use, so this may or may not be of interest.

I just did something similar with my Pi in order to put together a simple audio synthesis demonstration for a local elementary school. I used an existing MIDI control surface (one of these) as the input device.

I ended up using PYO, an audio synthesis framework for Python, to handle all the signal generation and MIDI signal handling. It was relatively simple to work with, but seems to be a fairly flexible model. I only used some very basic functionality.

You can find all of my code online at https://github.com/larsks/python-siggen.

| improve this answer | |

I'd recommend using Csound or Pure Data, they both have fully functional (USB)MIDI, OSC, and Audio processing/generation functions.

Pure Data is pretty easy to get into, patches run the same on linux or other OS's, and you can run it on a headless Pi by using the no-gui option if you so choose.

https://puredata.info/downloads/pd-extended (look for the raspbian release)

Csound has a bit of a steep learning curve, and not too many people use it with real time midi, but once you get the hang of it there's a massive codebase to work with and most generators / effects sound better than a lot of VSTs. There's also the csound~ object in Pure Data for interfacing with your Csound code.


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.