Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

Techniques for Real-time Data-driven Synthesis

I should say, the zipper sound is not with the manual grains, but with the sample player. Ideally I’d like to keep the same speed while changing the pitch.

Sorry, missed that part. A 10ms buffer wraps at 100Hz which means you are starting a new fade 100 times a second. No wonder it doesn’t sound good.

Wait a minute. Why did we start talking about time-stretch in this thread about @kilchhofer’s clicking looper? So confused. :space_invader:

Heh, sorry for the confusion. Completely my fault.

I asked if it was possible to pitch a sample down without slowing it’s speed. bc3 and I have both been working on pitch warbler/lo-fi junky type effect units for live processing.

I noticed the same thing kilchhofer did when making a patch like that sharing a buffer with a looper (especially a short buffer).

I’ve just been looking for a way around it and Joe suggested the Manual Grains time-stretching patch as a way to manipulate the time while changing the pitch. Haven’t tried this yet.

Needless to say, the “zipper” sound almost sounds like a record needle hitting a groove, so in the context of the effect it sort of works.

Here’s a version of the patch I put on Instagram a few weeks ago. The zippering is there, but barely audible https://www.instagram.com/p/BXhdRnrjrG3/?taken-by=austinthecairns

the pitch modulation sounds nice! and with all that vinyl static the zippering doesn’t matter!

1 Like

Just an update, I tried this experiment last night and didn’t quite get the results I was hoping for. No problemo.

If anyone wants to give the vinyl unit a try-out. I’ve uploaded it here. It’s a definite work in progress, but there’s at least control over the warbles and the vinyl dust.

vinyl.lua (52.2 KB)


Thanks for sharing the patch, @rbeny! Will check this out.

This actually inspired me to go try my external oscillator cloning experiment again, this time using manual grains. I did not quite get the results I hoped for either. I did manage to eliminate the clicking sound I was getting before when using the sample player. But instead of an exact clone, I got something more like a “facsimile” of the oscillator.

It kind of sounded like a lower quality version. But I’m having trouble putting to words in exactly what way it was lower quality. It kind of sounded cool in its own right.

Maybe I’ll post a video or some audio results.

1 Like

Yes please!! Sounds interesting :slight_smile:

thanks @rbeny, i like the warble and the crackle but there is quite alot of these clicks, zipper sounds.
i tried now different buffer lengths but i think at the moment with this method (shared buffer looper - player) we can’t avoid these. as described by brian the record head and play head inevitably collide at some point if there’s no synced recording eg playback, but sync isn’t the solution for live treatment of incoming audio, especially non clocked material. so i hope that @odevices finds a way to solve this issue!

@Joe i’m curious about your experiment, did you use the grain unit?

anyway, maybe we can merge this thread with this one Techniques for Real-time Data-driven Synthesis, since i started this thread and wasn’t quite aware of the other one but it seems to be the same topic, cloning, eg real time playback and manipulation of incoming audio signals using the recorder and player?

1 Like


Great discussion - following with interest :slight_smile:

1 Like

i took @rbeny’s vinyl unit and changed the warble controls to wow and flutter on a variable delay and kept the speed control of the sample player untouched so there are no zipper sounds. i added a sync control to sync up recorder and player just to be sure, it’s on A2. for this vinyl or tape warble thing it’s maybe a better solution but for real time pitch shifting it’s of no use.


i must have had a brain fart, of course with this custom unit the whole recording playback isn’t necessary, so here’s the wow and flutter unit with the variably delay and rbeny’s crackle addons, forget all the above with the sync etc:

Wow Flutter.lua (60.3 KB)

and here’s a short recording of how it sounds, input is a rings drone:


Most recently, yes. I’ve tried this experiment using the sample player, pitch shifting delay, and manual grains.

So far nothing has been perfect - each method has some trade offs in the form of either artifacts of some sort, or lag behind any adjustments or modulations to the source oscillator.

I should probably mention [just in case it’s not obvious] that I’m not necessarily expecting any of this to work. I realize I’m off in left field here, seeing what I can coerce the ER-301 to do. :slight_smile:

1 Like

Nice work! Sounds fantastic! Can’t wait to try it out!

thanks, well the idea is yours!
i just realized that it’s a mono unit only so by making a stereo unit there are of course left and right delay times to be modulated so by adding different modulation the wowandflutter could either be too extreme or too diffused…but maybe it would sound great nonetheless, i will try.


Stoked to finish writing papers for the day and try this out :paintbrush:

ooo! We can embed audio now? :smiley:

just wanted to ask @odevices if you think it’s possible to have this recorder - player setup without the occasional clicks? i use my 301 more and more as real time audioinput processor and find it fits my workflow best this way. you mentioned earlier that maybe you find a way around that colliding record-play head problem, is this still a possibility?

I consider it an important usage scenario so I will expend quite a bit of energy solving it. I have a bunch of ideas on how to do it too.

The basic idea will be to push a copy of the un-dubbed audio that is about to be overdubbed into a ring buffer. Then whenever a play-head approaches the record-head, fade into the un-dubbed material that was saved on the ring buffer instead. So by the time the play-head reaches the record-head’s position the mix will be 100% of the un-dubbed material in the ring buffer and 0% of the looper buffer (which has the click in it). If the play-head is going in reverse you would fade out instead.

This technique will only allow one record-head per buffer but allow multiple play-heads.


sounds good, complicated but great! this undubbed material in the ring buffer still has the same speed information i assume?

When i read all this awesome stuff from this forum, I’m beginning to be pretty sure that this module will be one of the future classics because of all these wise and genious people in this community. This module has so much potential and I’m really happy to see that how many clever people it has gathered in the same place! This module is like a sandbox and everyone has their own way to play with it!