[sharing der Niebelungen] Looper with gen~

Roald Baudoux's icon

A first step towards a bounce simulation: a simple looper with speed and direction control, random speed deviation, short ramps to avoid clicks...

Max Patch
Copy patch and select New From Clipboard in Max.

Got some headaches building it. Happily it was made during summer holiday and I had some spare time. Now I have to figure out again how it works exactly in order to improve it. Gasp !

Andrew Pask's icon

Nice one!

-A

vichug's icon

Hey, very cool ! Though ( :p ) when i have max set at 48000 of samplerate and i try to loop a sample recorded at 44100 Hz sr, inconsistency appears when manipulating the looppoints on the waveform. I don't see a way to get the samplerate of a sample from inside gen~, then to solve that problem one would need to use info~ outside gen, then plug in the samplerate information :/ ...

Wetterberg's icon

I get very long ramps instead of short ones - sawtooth ones, to be specific.

Graham Wakefield's icon

@vichug, yes, currently there is no way to get the samplerate of a sound file from within gen~ (I've added that as a feature request). But you could easily do that from the MSP patch using buffer~, and pass it into gen~ through a param.

do.while's icon

Hi !
Its really great idea to stay in samlpe's domain . awesome patch .

Is there a way force this circuit to loop forward then backward ? im really having problems to remix it ,as i could not find any proper way to switch "deplacement" to negative values . or maybe there is a different solution ?

Roald Baudoux's icon

You need to change "current" every repetition of the loop, not according to "deplacement".
You might use a variable you change to 1 when its value is 0 and conversely after every repetition of the loop, and set current according to this value.

I don't give you the code because even if it appears simple sometimes it takes me hours to achieve simple things with gen~...

    if (deplacement >= 0)
    {
        current = mstosamps(startpos);
}
    else
    {
        current = mstosamps(endpos);
    }
}

do.while's icon

All right , this make a lot of sense , will give a try ! thank you for your time

do.while's icon

I could come up with something like this . it was good suggestion of yours for this idea .
now
"current" is a "ghost" template for actual position . i dont know if its efficient and done properly , but you have directed me in a right way . thanks

Max Patch
Copy patch and select New From Clipboard in Max.

edit :
im not sure if two statements checking the same condition is a good idea of mine

edit 2 :
your "amp" circuit would be useful to provide loop crossfading .

drrain's icon

Thanks for this gen looping solution!

larryseyer's icon

Thank you for this wonderful Gen example!

I'm trying to figure out how to 'overdub' using this patch.

How can that be done?

Larry