[posted] Polaron DIY drum machine

a_guy_called_tom

Active member
Hi all,

To round off the recent wave of teensy based DIY drum machines, here's my take on the subject, the polaron (one can never have too many drum machines). The project is driven by my curiosity to understand and experiment with interaction patterns on digital musical instruments and how to achieve playful workflows that foster experimentation with sound and yield surprising results.

The polaron is a circular 16 step, 6 track digital drum machine and it combines features from other drum machines that i know and love (e.g. parameter locks / ctrl-all style editing of the elektron machinedrum) with some unique new features that i found useful while developing the polaron (e.g you can switch patterns for each instrument track individually).

sideview.jpg

topview.jpg


https://vimeo.com/302283771

The project is an ongoing effort and fully open source, see: https://github.com/zueblin/Polaron

Thanks Paul and everyone involved in making the teensy so awesome for audio projects. Working with the audio-library really was a breeze and almost feels like patching a modular synth.
 
Last edited:
looks interesting. on github you have a note that this is W.I.P. and not working correctly yet. can you talk a bit about what the issues are? thanks.
 
The PCB/hardware works fine for me (but i'm not a electrical engineer, so there might be things a pro would do differently). There is an annoying ground loop, when the polaron is powered via Laptop USB and the audio goes back into the laptop via soundcard. I don't think i can do much about this, apart from trying out one of those audio ground loop noise isolators. The software also works fine, timing of the sequencer is fine and i haven't had any crashes. But the software is still in constant development, the sounddesign might change, features might be added, changed or dropped. So no major blockers IMO, just an evolving thing (which is why its fun)
 
ok. one other thing i noticed, (and i'm not an e.e. so if there is an obvious valid reason for this i would not know), is the teensy/chip sector is flipped in relation to the rest of the board and was wondering why? also, is the bare pcb something you have extras of at this time you might want to sell to interested parties to increase testing? thanks.
 
The main reason for putting the chip and shiftregisters on the back is of aesthetic nature, i didnt like the green pcb of the teensy combined with the black of the main pcb. Secondly, i want to keep the front as flat as possible, so that its possible to put everything behind a faceplate or even inside a case. Also it is possible that the space above the teensy on the front might be used for other user-interface elements in a future iteration of the pcb.
i only have 4 extra pcbs at the moment, and need around 2-3 of them for myself, but if you're interested in the last one, please send me an email with your post address (my email is on the github page) and we can probably arrange something. My plan is to order a bigger quantity of pcbs somewhen before christmas.
 
Made another video of the Polaron and Blofeld both synced to ableton live. The patterns have been programmed in advance and during the video i'm playing with track mutes and pattern switches and of course the cutoff knob on the blofeld :D

 
@a_guy_called_tom
in your github i see that you use the delay function for the step's leds..
but this introduce a latency? is not better with millis()?

I ask you because i have the same problem, i have 2 shift register for the steps led but the leds are lid only for a fraction on seconds without the delay
 
@a_guy_called_tom
in your github i see that you use the delay function for the step's leds..
but this introduce a latency? is not better with millis()?

I ask you because i have the same problem, i have 2 shift register for the steps led but the leds are lid only for a fraction on seconds without the delay

I use delay() only in the setup function. Its used for a short animation that lights up all leds when the unit its powered on. In the main loop i don't use delay (for reading the shiftregisters i use delayMicroseconds(5), but this is so short, it should not matter in the timing of the sequencer).
The timing/stepping of the sequencer is handled in Sequencer::shouldStepInternalClock(). This method doesn't block the main loop like a delay() call, it just returns false until it is time for the next step of the sequencer.
 
Ah, ok
I need to check my code because the shift registers that drive the led do not keep the LED lid but only make a very brief (almost invisible) pulse.
 
Great project! Is this obligatory 3.6 or could I squeak by with a 3.5, perhaps with overclocking?
 
Great project! Is this obligatory 3.6 or could I squeak by with a 3.5, perhaps with overclocking?

I've never tried to run the polaron with a teensy 3.5. In terms of hardware layout, i don't see any problems, as the 3.6 / 3.5 seem to be pin compatible (as far as i can see) and i only use 3.3v everywhere. In terms of performance: I don't know how much room i have left now using the 3.6. My strategy is to just add features/audio-objects until i start to notice drop-outs/glitches/bad timing. So far that hasn't happend. I assume that most of the cpu cycles are currently used by the audio-synthesis part of the instrument – so if you run into a bottleneck you could always make some of the voices a bit simpler by removing some audio objects. Next time i order some teensys i'll add a 3.5 to test this, but if you feel lucky i would say just give it a try :) If your interested in buying a pcb, send me an email, my address is on the github page.
 
I've never tried to run the polaron with a teensy 3.5. In terms of hardware layout, i don't see any problems, as the 3.6 / 3.5 seem to be pin compatible (as far as i can see) and i only use 3.3v everywhere. In terms of performance: I don't know how much room i have left now using the 3.6. My strategy is to just add features/audio-objects until i start to notice drop-outs/glitches/bad timing. So far that hasn't happend. I assume that most of the cpu cycles are currently used by the audio-synthesis part of the instrument – so if you run into a bottleneck you could always make some of the voices a bit simpler by removing some audio objects. Next time i order some teensys i'll add a 3.5 to test this, but if you feel lucky i would say just give it a try :) If your interested in buying a pcb, send me an email, my address is on the github page.

I can confirm what @drjohn has already reported to me a while ago (thanks for trying this @drjohn!): The current Polaron Hardware and Firmware work fine with a teensy 3.5, no problems at all so far (they even run in sync :D ). I'll probably stick with the 3.6 as the default for futher development, but will test with the 3.5 from time to time.
 
parts list

The main reason for putting the chip and shiftregisters on the back is of aesthetic nature, i didnt like the green pcb of the teensy combined with the black of the main pcb. Secondly, i want to keep the front as flat as possible, so that its possible to put everything behind a faceplate or even inside a case. Also it is possible that the space above the teensy on the front might be used for other user-interface elements in a future iteration of the pcb.
i only have 4 extra pcbs at the moment, and need around 2-3 of them for myself, but if you're interested in the last one, please send me an email with your post address (my email is on the github page) and we can probably arrange something. My plan is to order a bigger quantity of pcbs somewhen before christmas.


Can you publice a parts lists; i cannot find one
 
Hallo, ich habe folgendes Problem bei der Compilierung:

Arduino: 1.8.13 (Windows 10), TD: 1.53, Board: "Teensy 3.6, Serial + MIDI, 180 MHz, Faster, US English"





















In file included from C:\Users\TomPC\AppData\Local\Temp\Polaron\Polaron.ino:27:0:

C:\Users\TomPC\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003

# pragma message "FastLED version 3.003.003"

^

In file included from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerStep.h:26:0,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerPattern.h:27,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerPattern.cpp:23:

C:\Users\TomPC\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003

# pragma message "FastLED version 3.003.003"

^

In file included from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\Sequencer.h:30:0,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\ProjectPersistence.cpp:4:

C:\Users\TomPC\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003

# pragma message "FastLED version 3.003.003"

^

In file included from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\Sequencer.h:30:0,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\Sequencer.cpp:24:

C:\Users\TomPC\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003

# pragma message "FastLED version 3.003.003"

^

C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\ProjectPersistence.cpp: In member function 'void ProjectPersistence::init()':

ProjectPersistence.cpp:13: error: 'BUILTIN_SDCARD' was not declared in this scope

sdCardInitialized = SD.begin(BUILTIN_SDCARD);

^

In file included from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerStep.h:26:0,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerStep.cpp:23:

C:\Users\TomPC\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003

# pragma message "FastLED version 3.003.003"

^

In file included from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerStep.h:26:0,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerPattern.h:27,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerTrack.h:29,

from C:\Users\TomPC\AppData\Local\Temp\arduino_build_480554\sketch\SequencerTrack.cpp:23:

C:\Users\TomPC\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003

# pragma message "FastLED version 3.003.003"

^

Mehrere Bibliotheken wurden für "FastLED.h" gefunden

Benutzt: C:\Users\TomPC\Documents\Arduino\libraries\FastLED

Nicht benutzt: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\FastLED

Mehrere Bibliotheken wurden für "Audio.h" gefunden

Benutzt: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Audio

Nicht benutzt: C:\Users\TomPC\Documents\Arduino\libraries\Audio

Mehrere Bibliotheken wurden für "SD.h" gefunden

Benutzt: C:\Users\TomPC\Documents\Arduino\libraries\SD

Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\SD

Nicht benutzt: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SD

'BUILTIN_SDCARD' was not declared in this scope
 
The problem seems to be with the SD library. Its seems you have installed an additional SD library which is used during compilation, and not the default SD Library that is part of the Teensyduino installation. Try to remove this library here (save it somewhere else, if you need it again) C:\Users\TomPC\Documents\Arduino\libraries\SD.
See if that helps
-tom
 
The problem seems to be with the SD library. Its seems you have installed an additional SD library which is used during compilation, and not the default SD Library that is part of the Teensyduino installation. Try to remove this library here (save it somewhere else, if you need it again) C:\Users\TomPC\Documents\Arduino\libraries\SD.
See if that helps
-tom

Vielen Dank Tom!

Ja, das war das Problem, der Teensy ist jetzt bereit.
Ich warte nur noch auf die Platine, dann SMD löten....


Klasse Projekt, danke für Deine schnelle Antwort!

Tom
 
Hello. I am looking to make a polaron that uses only though-hole components. Do you have any suggestions for a THT version of the LEDs that you use in the project? Or any other advice on making a thru-hole version of the polaron?
 
Hi
The polaron uses WS2812b LEDs. Apparently there are through hole versions of this LED, just google for WS2812b through hole. I have never worked with them so far. If you want to use these, you'd need to create a new PCB, replacing the SMD footprints with throughhole footprints (or a footprint that allows both formats). Before doing so, I'd test the LEDs on a breadboard. The polaron has some other SMD components that you'd also have to replace in the same way.
What is the reason you need everything throughhole?
Tom
 
Back
Top