Developing a powerful digital looper project for the DIY community

Started by Taylor, November 02, 2009, 05:00:48 PM

Previous topic - Next topic

Lurco


Taylor

There's nothing even remotely solid yet, but this project (that of a powerful, modern, high fidelity looper) may be on again.

With that in mind, let's start discussing the feature set. Here's the basis that I'd plan for:

High sampling quality - somewhere around 32khz sample rate, 12 bit or higher.
At least a minute of sampling time
Overdubs
Reverse
Loop playback speed change - I'd want continuously variable speed/pitch, but a half speed button might be possible as well
Feedback control


Here's some other stuff I'd want personally, but let me know whether you like these ideas or not:
Multiple parallel loops with individual feedback, volume, and playback speed controls - maybe 2 to 4 loops.
Stuff like punch-in, replace, insert for putting in snippets of sound into a loop - this is borrowed from the Echoplex Digital Pro.


Feel free to add your own thoughts on features. But keep in mind that the overarching concept for this unit is to be a pedal looper in the style of the Boomerang, DL4, Echoplex Digital, eHX 2880, etc., and aimed at live use by instrument players. To that extent, studio-oriented stuff like USB sample backup and stereo operation will probably not be included. The key is to not add features which would vastly increase the cost and build complexity, but which would only be useful to a small number of people.

Once some ideas have been posted, I'll make a little poll so we can gauge interest in various features and concepts to get a consensus on the core feature set.

cloudscapes

Figured I'd work a little on my looper project today, here's a 3-second aphex twin loop getting mangled:

http://www.youtube.com/watch?v=eka7dL_mH2M

The two pots define both the start and end loop points, thoguh right now they're buggy. the pushbutton reverses. Slowing down and speeding up is planned, as well as other stuff. It'll have delay functions too.

Right now I'm mostly working in code. I'm using an AVR clocked at 12MHz. I tried clocking it faster but I had problems. Sound is 8-bit and I'm using the AVR's own ADC for conversion. It's then stored in an external RAM (23K256, only 32KB, around 3 seconds worth at 11khz lo-fi) and then outputted on an external DAC (MCP4921).

I'm kinda pushing the chip's limits right now, and the additional functions I want to add will bog it down even further (meaning less khz), so I ordered an xmega kit which will be MUCH beefier! Only problem is that they're surface-mount only. But the advantages are nice! 32mhz (some people push it to 40 with no stability problems), it's supported by my compiler so porting will be easy, direct memory access, more faster memory, longer loop times, etc! I'll aim for 12bit 22khz top speed.

I figured an easy way to change the speed is to simply use an analog clock to drive the MCU instead of a crystal! like an opamp and squarewave, or some CDxxxx.
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor

Awesome! ucephalus sulahpecuB ceph cephbbbbbbbbbbbbbb

Did you see that:

http://www.diystompboxes.com/smfforum/index.php?topic=86729.0

? Might provide some ideas for you, as it's similar. The guy who designed is cool and helpful, and his code and hardware are all open. narrat1ve.com.

cloudscapes

yep, I knew about it! that stuff is an inspiration right there!
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor

This is from the other thread but I think it makes more sense to reply here:

Quote from: cloudscapes on September 12, 2010, 08:13:19 PM
nice job! I've been keeping a close eye on this, studyign the schematic, etc.
it's sort of what I want to achieve with my own looper, but done "my way"
the window-shifting is great! the timefactor has that too.

Here are a few things that I'd like to see that the WTPA doesn't do:

- Separate playback speeds for each loop (this can probably be done with the WTPA using MIDI, but not with the built-in interface)
- Feedback control. The WTPA essentially has 100% feedback, so if you add overdubs they just stack up, and there's no way to fade out older layers.
- Copy one loop to the other/another loop location, so you can phase them against each other, mangle one up and then go back to the original, etc.

Of course, this is your thing and I know you'll do it your way, so these are just some ideas I've had since I've been using the WTPA.

Even though we disagree on the subject of Roman Polanski, I always enjoy seeing the stuff you're doing.  ;)

cloudscapes

I'll probably start small. like a version without separate loops and loop shifting, or midi. mostly just a compact digital looper/delay with loop window/grain mangling stuff. there will definitely be feedback control. not that difficult. if I can, I'll do this with these small AVRs. if I have to bring the max samplerate down to 6 or 8khz, then so be it.

then several months down the line I can make a WTPA-like looper. ;) we'll see. plans can always change.
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

cloudscapes

experimenting with time stretching

http://nearworlds.org/stuff/glitcher_test_2.mp3

what I'm doing is moving a very sample short window forward in the loop (slowly!), and inside the window the "playback head" is pingponging back and forth and a normal speed.
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor

Ah cool. Are you able to move through the loop automatically or are you scrubbing through with a pot? i can do this with the WTPA manually, but if it could be automated to do jungle-style time stretch that would be really useful.

Something I just thought of that might be cool is to randomize playback speed per grain, so if you jumble up a bunch of segments of a loop, they not only play in the wrong order but each at a different speed.

cloudscapes

right now the scrubbing is manual-ish... hard to explain. I found the time-stretching by accident. I have two pots (start point and end point), keep them close together and I push the reverse button very rapidly all throughout the manual scrubbing of my two pots. no random playback speed planned I'm afraid, and it'll be hard to do that with how I want to set it up. playback speed will be analog. it'll be an opamp generating a MHz pulse pretending to be the AVRs crystal clock. this way I can have smooth sample/playback speed bending and no need for code (saving precious cycles). down side is I cant do any fancy tricks to the speed.

adding an LFO to the grain window shifting along with feedback and continuous recording (turning it into a delay basically) should give pretty interesting results! if the grain window is only 300ms long (typical short delay length), we'll hear older samples (2-3 seconds old) bleed into the delay as it sweeps back and forth!  :icon_mrgreen:
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor

Hmm, that does sound interesting.

The WTPA actually does it's clock the way you say: the sample rate knobs are controlling an analog oscillator's frequency. And he has implemented a random grain playback thing, but I do think he said it was difficult, so I can see why you wouldn't want to mess with it.

cloudscapes

the WTPA uses an analog clock source?  ??? thats weird, because I'm looking at it's schematic and it's very much a crystal (along with the mandatory 20pf caps to ground). and I'm pretty sure I see a crystal to the left of the big chip in the picture on the WTPA site
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor

If you look on the last page of the PDF, you can see the analog oscillator which goes to the analog clock input of the AVR. But, there's also a crystal. So I guess it uses both - I think maybe it uses the analog one when working with the built-in controls, and uses the xtal when using MIDI. I don't have the midi hooked up yet so I can't check if this is true.

wavley

So I had to take my RDS-900 out of my rig because it is just to danged noisey, while I was looking for a schematic for it so I could think about making some changes (a fet input op amp, cap values, and maybe some 5532s instead of 4558s should do it) I found this site about the RDS-7.6 that has some info that might help you considering that RDS stuff fits some of your parameters.  The schem on that site doesn't apply to much to my 900 because the later models use 4164 RAM and mine uses 4116, sucks because I have some 4164.  There's a guy that shows how to make an adapter for them to fit, but I have two Apple ][+'s and they have 4116 as motherboard ram.  Unfortunately, while re-seating all my chips trying to find the cracking noise, my hand slipped and I mangled my 570 compandor, I have a 571 I can pull out of something this weekend that may do, but I haven't measured my voltages yet, if that 570 was running over 18 volts then I'm just gonna have to wait and order one before I can mess with upgrades.  I was thinking about putting a pot on the front panel to replace the clock trimmer on the board so that I can chose how much bit crushing is going to happen on the fly.  And I'm going to work on shoving a little more memory in the thing.
New and exciting innovations in current technology!

Bone is in the fingers.

EccoHollow Art & Sound

eccohollow.bandcamp.com

cloudscapes

effectivly doubled ram space, but had to rewrite half the code.  :icon_cry:

Quote from: Taylor on September 13, 2010, 11:59:33 PM
If you look on the last page of the PDF, you can see the analog oscillator which goes to the analog clock input of the AVR. But, there's also a crystal. So I guess it uses both - I think maybe it uses the analog one when working with the built-in controls, and uses the xtal when using MIDI. I don't have the midi hooked up yet so I can't check if this is true.

thanks. I think the PDF I have is missing some graphics (where the analog CLCK can be switched int othe oscillator), but I'll go ahead anyway.
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

cloudscapes

here's a neat little feature/knob I added today. pushing time-stretching and mangling to the limit

http://nearworlds.org/stuff/wtf_looper.mp3

what happens when you "virtually" push the reverse button up and down really fast? how about hundreds or thousands of times a second? this.

this "looper" is gonna be fun to play  ;D
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor


cloudscapes

I'm having a schmitt trigger feed a square wave into the reverse/don't reverse input pin. anywhere between a few hz to 1 khz.  ;D the duty cycle isn't a perfect 50% which is why it drifts a bit.

I did away with the 'reverse' pushbutton. it's now a pot, where one extreme is forward and the other is reverse. in the middle is varing degrees of what you can hear in my last sample, who's speed is set by another pot.

now trying to implement overdub. I'm trying to feed the output back into the input (to hell with sound quality), but unfortunatelly am not getting anything. even when I buffer all my inputs/outputs. that's my biggest weakness in this I think. the stuff that should be easy but actually has a lot of theory behind it.
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}

Taylor

For something nasty, I think analog overdubbing is cool, because it allows to effect each repeat progressively with an effects loop. As you note, resampling is bad practice from a hi fi perspective, but that's obviously not the point of 8 bit sampling to begin with.

cloudscapes

looks like I'm going to have to forget about overdubbing though. I've spent 7 (yes, 7) hours today trying to get only that working. something with the micro just doesn't seem to want to accept feedback. tried digital overdubbing as well. nonsensical results.
~~~~~~~~~~~~~~~~~~~~~~
{DIY blog}
{www.dronecloud.org}