illusion – Ambient sound from Pi Granular Synth (Pure Data), Arduino, Volca Bass, NTS-1

Here is first sound made using simple granular synthesizer I have written in Pure Data running on Raspberry Pi 3b+.

Arduino synth using Mozzi library adding some noise, Volca Bass for lower notes, arpeggio sound from NTS-1 (and reverb), Zoom MS-70CDR (reverb, delay), Arturia Keystep sequencer.

You can download original audio file from soundcloud & feel free to use it.

Free Custom Oscillators for Korg NTS-1

I tried few custom oscillators (free) on NTS-1.

Some oscillator have more parameters (long-push OSC button) and you can do lot more but I couldn’t include all of them in one video (too long).

All sound direct from NTS-1 through Behringer audio interface (reverb effect in NTS-1) and no post effects.

Arturia Minilab MK2 trigger NTS-1 via USB MIDI host (NTS-1 Arp).

Volca Sample MIDI Mapper using Arduino

The Korg Volca Sample uses 10 MIDI channels for the each sound. This can not be changed.

This is annoying if you want to use Volca as a external drum machine using a external sequencer or DAW.

This arduino code listen notes from single MIDI channel (16) and send to each channel on Sample (support velocity).

The new code support chromatic play through MIDI channel 1-10.

You need to build MIDI In / Out circuit(or get a MIDI shield). Check out this link for the detail how to build.

Check out other similar project here and here.


Arduino MIDI In & Out Circuit


  • 1 x Arduino
  • 1 x 6N138 Optocoupler
  • 1 x 1N4148 (or 1N914) diode
  • 3 x 220 Ohm resistor
  • 2 x 1K Ohm resistor
  • 2 x 5-Pin DIN MIDI connector (female)

The Code

Note & Update

I’ve change two resistor value in MIDI IN circut.

220 Ohm resistor between optocoupler’s pin 6 & pin 8 to 1K Ohm and 4.7K Ohm between pin 7 & GND to 1K Ohm. It’s eliminate jitters and getting much sharper signals without drop.

And it’s not strictly required but I added a small capacitor between optocoupler’s pin 2 & GND for filtering out high frequency noise.

I think there’re some errors and not optimal part choice in the many MIDI circuit using a 6N138 opto floating around Arduino community. I’ll test with different opto like H11L1 or 6N137 soon.

Added velocity support. Volca Sample don’t listen velocity but support level change with CC msg so it’s now mimicking(?) velocity.

06 Mar 2020 : Now it’s filter out notes from other channels and only listening channel 16 (you can use any note on channel 16 to trigger 1~10 sounds on Sample). All other midi message will not getting through except clock, start, stop and continue(if you don’t need it just comment out from the code).

09 Mar 2020 : More compact code using setThruFilterMode(). Now all message passthru to Sample if it’s from MIDI Channel 16 (VolcaChannel).

12 Mar 2020 : New chromatic notes playing code. You can use MIDI Channel 1-10 for chromatic play each sounds or each note will trigger different sounds on MIDI channel 16.