DIY Volca - POlca

Hi Folks, I have created something like a Volca to play Samples.
I know this is not “Modular”-Stuff.
As others use a more expensive Sampletrigger-Board and put behind a modular frontplate, I have created a complete 16 Step Drum-Thing which includes the ability to play up to 12 Samples 16Bit Mono which could be panned in the Stereo Field.
Currently it is more like a TR727 which is not the main Drum-Computer but adds a lot of texture with its samples.
With some inside effects and filters and all the variables to manipulate each sound, it could sound like a Disco-Drum, FM-Drums or like really other strange things - or very natural.


  • 16 Steps, MIDI Clock Slave
  • 12 WAV-Samples per Sampleset ( 4-5 Samplesets should work )
  • Variables per Sound: Pitch, Decay, Attack-Cut, Volume, Pan, Pitch-follows-decay, Midi-Note, Midi-Channel
  • Arduino-IDE (Code)
  • 3 Effects: Filter LP/HP with Resonance, Bitcrusher, PCM-Speed
  • ESP32 ( any model should work)
  • 16 Step-Buttons with 16 LEDs
  • 5 Control-Buttons, F1, F2, Start, Cont, etc.
  • OLED Display 128x64 Pixels
  • Midi-In, Midi-Out

The Sample-Engine is based on the code from Marcel Licences Drum-Computer.


Latest Video with very low Volume!

Is this information enough to rebuild it or should I create a board-layout?
Is it to complex?

Should I use Touch-Pads or better Tactile Switches as I did?
What Do You prefer?
Is this something to be in a modular setup?
Should I add Sync In / Sync Out?
Do You need more Pots? I tried to get it working with 4 because this was the space on the oled-display.

Planned features for the next days:
Sync In/Out
Switching the Sound-Sets
Load/Save of Patterns


Awesome work dude :+1: :+1: :+1:


Good stuff! I think the layout is great for actually building the thing DIY, and doesnt compromise on the interface of using it.


Superb layout and design!
Really flexible project.
Please keep the buttons which I prefer to the touch keys (less to test)
Very taken with the use of small pots and the case.

Updated my German vocabulary too …
Rotary encoder
Midi in
Midi out and multiplexer :grinning:

Wer wusste???


Hi, thanks, excuse me for posting a german video in a english speaking discourse-board. In that stage, I have connected all the UI-Elements, Pots, Buttons, LEDs using multiplexers using the same I2C-Bus. … only 2 wires.
For the I2S - Audio I use 3 wires, 2 Wires for Midi In and Out. That way it could be used with most Dual-Core ESP32-DEV-Boards.
The Encoder wasn´t that good as expected and the Pots work great. First it was only a LAB-Boards without a housing but I thought to try to build one after buying a simple 3d-printer. The Github-Page is in english :slight_smile: only a few old comments in the code are german.


Hmm, there would be more space if you would not spend one line per pot on the title of the pot. If instead you would precede the dial with the first letter of the pot’s title that would save you 4 lines. E.g. if you would want to show ADSR values you could do it like this:


Note the - signs are meant to be the graphical representation of the value here.
But instead this would take up less space:

A: ---------
D: ---
S: ---------
R: ------

This might look a bit condensed, but who would not know what A, D, S, and R stand for?
You now have 4 more lines on the display. You could do this for the already existing pots.

B.t.w.: really nice project !


Hi, I have changed the Display like You mentioned but the height of the chars was too big. I wasn´t able to get more 2 lines of space.
Finally, after testing different option I came to this:
I came to this as I did not have all first characters as unique and well known chars:

Vol ===== Dec ========
Pit ========== Pan =====

That way I had one more line for other things to display!
In most menus I used that free line to add some margin/spacing between all the informations.
The last step was to replace the too small OLED.
Replaced the SSD1306 OLED 0.96" with a bigger SH1106 OLED 1.3".

You could see the difference between the small one ( laying loosely on the box) and the newer bigger one.
I am still updating the funktionality on github.
Last features: Delay and Reverb and Changing the Soundsets ( TR727-Like, TR6xx, TR8xx, TR9xx)


@erichheinemann Hi! How to upload your code on esp?
I”m instal LittleFS.jar, mklittlefs, esp32fs, driver ch34xser. Code upload fine, serial monitor displayed .ino -filed to open directory.

Esp32 sketch Data upload - LittleFS Upload Filed

ESP32 Dev Module
Upload Speed 115200
CPU 240Mhz
Flash 80Mhz
FlashMode QIO
FlashSize 4MB(32MB)
Partition Scheme:Default 4mb with spiffs (1.2mb APP/1.5MB SPIFFS)
Core Debug Level None
PSRAM Disabled

Hi, You have to install the Arduino IDE, then the Module for the ESP32.
LittleFS.jar …

Upload the Code with the Arduino-IDE and afterwards the Samples using the Little-FS-Tool. Thats all… The Samples have to placed into a directory “data” and subdirectory “0”, “1”, “2” for the Sample-Kits.

Are You able to upload other simple Arduino-Sketches well? In my case, my last esp32 needs to get “boot” pressed to accept new programs.

Yes, blink, and test oled display worked

can i contact you by mail or other messengers?

there are errors in this project, most likely on the circuit side! I do not recommend repeating! The author refuses to help correct errors!

This is not a commercial product, it’s a do-it-yourselfer describing a project they did. Mistakes happen, and unlike with a commercial designer/vendor of a finished product there is no reason to expect them to expend their effort to get yours to work. If you want assistance it’s best to post something here, something more informative than a screen shot of error messages. If someone thinks of a possibility and has time to do so they might be able to help. See General advice for troubleshooting a module and asking for help .

1 Like

I understand, but what’s the point of posting a project with a lot of errors without checking yourself?

Hi Nugravity,
I didn’t get the first emails. Excuse me.
I developed it, it worked fine but I did not make any progress with the project in the past 12 month.

In my case, I really uploaded the code which I am using.
From Hardware-side, some OLED-Displays swap some Pins for the I2C, so You have to check them and connect the pins which are labelled.

As others send me emails, it won’t work, we figured out that they are using different ESP32-Models which do not all support I2S.
Or I got emails that mentioned to check code which was changed a lot an was not comparable with my one.

I have used an old ESP-32 DEVKIT with 2 cores. Not a modern Single-Core!

As I can say, I am able to rebuild it by the given details on GitHub without any problems.

Best Regards