top of page

Stupid Looper Experiment

Behold! My lofi sampler/pitch-shifter/pseudo-delay abomination, eked from a feverish CBD daydream and cast in silicon, aluminium and shitloads of electrical tape.

The basic idea is to have two cheapo answering machine chips that continuously record and play alternately (one plays while the other records and vice versa).

The ISD1820 from Winbond is the ideal candidate for the loop chips, being cheapest, as well as having a really wide pitch shifting spectrum and the ***least*** audible pop in "one shot" mode.

Pinout of the loop chip

The chip is contolled by +5v pulses sent to it's REC and PLAYTRIG pins. In order to create the desired effect, we need a very specific square waveform with prolonged positive duty cycles,* and then to separate every second positive pulse into a different signal.

*We need a short 0v pause between each high pulse, so the ISD1820 can "power down" the pin we just sent a pulse to, and recognise the rising edge of the following pulse on another pin.

The TAPLFO3 chip by Electric Druid gives us exactly such a waveform. It's also 0-5v, has tap tempo and allows us to control the length of the positive duty cycles. Good stuff.

Now how do we split every second pulse as described above? One way is to divide the frequency of the original square wave (called "O" from now on) by two and to use a couple of logic gates.

Now we have the desired alternating waveforms, and can send one wave to PLAYTRIG of our first loop chip and REC of our second loop chip, and send the other waveform to PLAYTRIG of the second loop chip and REC of the first. Easy alternating loopers!

But three extra chips (one for half frequency, one for AND gate, one for XOR gate) just for that waveform separation is bulking up our parts count considerably. Wouldn't it be nice to cram all three into one 8pin DIP package?

Well, with a microcontroller and some simple programming, we can!

Here's my C code for splitting the waveform...

This was my first toe-dip into programming, I read into the basics of C just for this project, so while it works, there may well be much simpler/ more efficient ways to do what I've done. I found Coda Effects' write up of his relay bypass code to be EXTREMELY helpful as an intro to C/microcontrollers, and I even used the exact same configuration bits as in his project.

***

void main(void) { // main loop ANSEL = 0; // no analogue GPIO CMCON = 0x07; // comparator off ADCON0 = 0; // ADC and DAC converters off TRISIO3 = 1; // GPIO 3 & 1 are inputs TRISIO1 = 1; TRISIO2 = 0; // GPIO 2, 4, 5 & 0 are outputs TRISIO4 = 0; TRISIO5 = 0; TRISIO0 = 0; GPIO = 0; while (1) { while(GP3 == 1) { // while "O" is high __delay_ms(20); // wait } __delay_ms(10); while(GP3 == 0) { if(GP5 == 1) { // if "h" is high GP5=0; // send low break; } else if(GP5 == 0) { // if "h" is low GP5=1; // send high break; } } if(GPIO3 == 1 && GPIO5 == 1) // AND gate with ("O") and ("h") as inputs {GPIO4 = 1;} else {GPIO4 = 0;} // ... and GPIO 4 as the output if(GPIO4 == 0 && GPIO3 == 1) // XOR gate with GPIO 3 and 4 as inputs {GPIO2 = 1;} else {GPIO2 = 0;} // ... and GPIO 2 as the output while(GP3 == 0){ // while loop prevents "h" state "bouncing" while "o"... __delay_ms(12); // ...is low } if(GPIO3 == 1 && GPIO5 == 1) // AND gate with ("O") and ("h") as inputs {GPIO4 = 1;} else {GPIO4 = 0;} // ... and GPIO 4 as the output if(GPIO4 == 0 && GPIO3 == 1) // XOR gate with GPIO 3 and 4 as inputs {GPIO2 = 1;} else {GPIO2 = 0;} // ... and GPIO 2 as the output } }

***

The most fun aspect of these loop chips is the ability to change the pitch, but recording with the "Pitch" knob cranked and playing back at the same setting won't pitch shift our signal. Also the chip will only record with the Pitch knob more or less in the centre.

Therefore we need a DPDT to switch each loop chip's "ROSC" pin (which controls playback pitch) to the default setting (100k resistor to ground) during recording and then to the Pitch pot during playback.

A CD4066 will work for this task, connected like so:

(I never noticed before but it looks a lot like the 4066 is designed with a DPDT in mind, as the pins are perfectly aligned for where each signal needs to go.)

Finally (because at this point, why not?) I've used a second TAPLFO3 chip to control the playback pulses. The 'CV Out' of the first tap tempo chip controls the frequency of the second, and I've hooked a pot to the second tap chip's 'Multiplier CV input", meaning we can play each loop back multiple times and in sync with the master tempo. This is extra useful as cranking the loop's playback pitch also increases playback speed, so we can fit much more than one playthrough after each record when the pitch is turned up.

Okay so all very complicated for a dumb daydreamed idea, huh. But is it worth it? Mmmm... (lol) The finished pedal is very buggy, sometimes record or play misfires (It doesn't work at all at faster tempos!) but sometimes the glitching can be kinda cool.

On the plus side, I now have something very unique and fun(ny) and I've ingested some programming basics along the way. For me the greatest part of DIYing is making bizarre creations that no big company - being tethered to profit incentives - would ever have the nerve to produce. And this pedal is definitely that - a glitchy freaky tempramental robot, the first and last of its kind :)

Here are my (very, very messy!) stripboard layouts for the Stupid Looper, though I pray no-one out there is masochistic enough to follow me down this rabbit hole!

And the additional amp board:

Recent Posts
Search By Tags
Glowfly_Logo_RGB_inv.png
bottom of page