Let's Turn a MIDI Keyboard Into a Standalone Synth!
Share
Takumi Ogata · 10/22/26
If you have a MIDI keyboard with 5-pin DIN out, you can turn it into a programmable standalone synth using the Daisy Seed! How it works is that you code a synth program on your computer and then you compile and flash it to the Seed. Now, the program that you coded is running inside it.

You can then play that synth with knobs, buttons, and, of course, a MIDI keyboard. Today, let's use the Daisy Pod which comes with a bunch of components already connected to the Seed.

This board is great for this project since it has a MIDI input jack, so you can play the programmed synth with the keyboard! And because it can be powered by a USB power bank and has a headphone output, you can play it with no laptop in sight.
Items Needed
- Daisy Pod x1 [Daisy]
- MIDI Keyboard with 5-pin DIN output x1
- MIDI cable (5-pin DIN and TRS) x1 [Amazon]
- USB C cable x1
- 3.5mm TS Cable (if using an audio interface) x1 [Perfect Circuit]
- Computer
- Audio interface and/or headphones
- USB Power Bank (optional but recommended)
Project File
The project folder (download zipped folder) includes Plugdata patches.
Software
For this tutorial, let's use Plugdata as it is quick to set up and easy to program with any Daisy board. You can install it from their download page.
Let’s begin by creating an oscillator, the sound source of your synthesizer. After creating a new patch in Plugdata, double-click and type “osc~”, followed by a space and “440”, to create a sine tone generator.

To hear this, you need the [dac~] object. This object will output the incoming signal that’s connected to its inlets.

To make a connection, hover over the outlet of [osc~ 440], which is the orange part on the bottom, click, hover over to the [dac~]’s first/left inlet, and click. Because the laptop speaker is stereo, connect the oscillator’s output to the right inlet as well. You should now hear a beep!

By connecting the [floatbox] object to the [osc~]'s first inlet, you can change the frequency, which will affect the pitch.

Flashing a Program to the Pod
Ok, let’s hear this beep coming out of the Pod! To compile and flash this patch, first click the "Main menu" icon at the top and select "Compile". After installing the toolchain, select “Pod” as the target board. Before flashing a program, the Daisy needs to be put into a flashable state. Hold down the BOOT button while inserting the USB cable into the Daisy. Now, click the "Flash" button in Plugdata.

To hear the output, you can either connect your headphones or the line out to your audio interface. The firmware we programmed earlier is running on the Pod itself now! No laptop is required…unless you’re using it to power the Pod. Though, speaking of that, you may hear some noise if you do that since USB power from a laptop can be noisy. So, I recommend powering the Daisy from a power source such as a USB power bank!

MIDI Programming
Let’s make this beep synthesizer playable with the MIDI keyboard! The first task is to see how MIDI input works with plugdata. First, make sure Plugdata is getting MIDI from your keyboard via the USB cable. Go to the "Main menu" and click on "Settings". Then, select "MIDI" and check if your "(USB MIDI)" device is set as "Port 1".

In your patch, add the [notein] object. The first output is the MIDI pitch note, which you should see change depending on the key you're playing. Then, connect the first outlet to the [mtof] object, which converts a MIDI note to a frequency value, and connect its output to the oscillator! You can now change the pitch with the keyboard!

But as you noticed, the note doesn’t turn off! Let's fix that. The [notein]'s second outlet outputs a value between 1 and 127 depending on how hard you press on a key. And when you let go, 0 is outputted. This is the velocity parameter! You can turn a note on and off with this combination of objects. The velocity value is normalized between 0.0 and 1.0 with [/ 127]. The [line~] will smooth out the change in value to prevent clicking when a note is turned on and off. The normalized value is mapped to the [*~] object which sets the amplitude. You should hear a difference in volume depending how hard you press on a key.

You may have noticed that a note can get cut off pretty often. This can be addressed by adding the [poly] object.

Let's flash this to the Pod and see if it works! Because the patch size is getting bigger, assuming it's due to the MIDI objects, you need to change “Patch size” to “Big + SDRAM”.

By the way, this setting will also flash the Daisy Bootloader, which you can learn more about in this documentation.
After flashing, connect the keyboard’s 5-pin DIN out to the Pod’s TRS input with a cable. Then, play a note on the keyboard and see if the synth is working!

Analog Synth Inspired Sound Design
Let's make this synth sound richer by taking inspiration from a traditional analog synth! First, let’s create a sawtooth oscillator, which generates a harmonically rich tone.

It sounds jagged and bright but maybe a little too much. We can attenuate the high-frequency content of the tone with a low-pass filter ([vcf~]) to make it rounder and darker. The second inlet of [vcf~] controls the cutoff frequency, or how much filtering is applied. You can add a similar set of objects to what you had for the amplitude but scale the value to 100 hertz and 16,000 hertz. The third inlet controls the resonance.

Move the [hsl] slider object at the top to hear the filter in action
To make it sound more alive, we can add another oscillator, but with a slightly different frequency ([*~ 1.005]). This is called detuning!

Finally, let’s map the mod wheel to the filter’s cutoff frequency parameter. Add [ctlin 1], which outputs the value of the mod wheel. Also, bring in the set of objects used in 2_Beep_MIDI_Synth.pd, such as [notein], to make this synth playable using the keyboard.

Let's flash! Because the Daisy Bootloader is already flashed, only the patch will be flashed this time. But, you need to press the Reset button and then immediately press the Boot button beforehand. You should see the User LED slowly glow and fade repeatedly. After flashing, hold a note and move the mod wheel to hear a filter sweep. This feels like an actual synth now!

Adding Effects
Now, you can start to think “what features can I add that are suited to my style?” If you’re into ambient music, you can add an internal chorus effect to make the synth more dense. And to make it sound more atmospheric, like you’re playing in a big space, you can add a reverb! Or you may be into aggressive electronic music and want to add a bit crusher and comb filter! So, think about what kind of music you like to make and design a custom synth that fits your needs! That’s the fun of building your own synth!
For today, let's add chorus and reverb to the patch.


Inside of [pd Chorus]. [fx.chorus~] is by MikeMorenoDSP

Inside of [pd Reverb]
To control the amount of the effects, let’s use the Pod’s knobs! [r knob1] outputs the value of the first knob on the Pod, and [r knob2] outputs the value of the second knob. You can map the knob’s output to the dry/wet amount of the effects (the second input of each effects abstractions). Let’s flash!
Multiple Synth Engines?
Now you may be thinking, “This is exciting! What can I add next? I love FM synths, so can I just add that to this?“ Yeah, of course! The sky is the limit. An exciting approach you can take is to put all your favorite synthesis into a single piece of hardware as long as the CPU is chill with it! So here’s a very basic FM synth.

To switch back and forth between the analog-inspired synth and FM, here’s an abstraction that crossfades between two inputs.


Inside of [pd xfade]
When the third input is 0 and not 1, the first input (analog-inspired synth) passes through while the second input (FM synth) is blocked, and vice versa.
You can use the Pod's button ([r_Button1 @hv_param]) to switch between the two synths!

And to visually indicate which synth you're on, you can turn the Pod's first LED red ([s led1_red @hv_param]) for the analog-inspired synth, and blue ([s led1_blue @hv_param]) for FM.

Ok, let’s flash!

Conclusion
I hope this video demonstrated the workflow of using Plugdata and the Pod to create a custom synth!
If you want to hear this synth in action now, you can watch the video version of this tutorial linked at the start of this blog!
I hope you have fun turning your MIDI keyboard into a custom standalone synth!
If you have any questions, please feel free to ask in this forum thread about the project.
