Sample playback speed without changing pitch (without groove~)

loop go's icon

I'm making a patch to chop and slice breaks, breakcore style.

You can chop and slice adding the chuck object to the groove (cant chop by itself) object but it lags behind the live.grid object. So for control in real time and rearranging on the fly doesnt work.

Wave object works but it changes the pitch.

How can you read a sample faster or slower without changing the pitch?

how do you implement that?

I'm aware of timestretching as an effect but i actually want to use a transport object to enter the bpm i want

thx

👽'tW∆s ∆lienz👽's icon

there's no quick/easy solution i can think of to patch or share,

that could be better than looking carefully at this example:

Help -> Examples -> sampling -> granular -> granularized.maxpat

to help you get to the timestretched sound quickest: in that patch, try durations of 100 or less, and mouse over the waveform to select the smallest grain you can(try to make the start and end 'location' of your selection, the same number).

leave the transposition at '64'(or hit the 'no pitch change' message to set it to that)

and over on the left-hand side of the interface, select a speed of less than 1.0, then hit the 'play' button.

this will show you a timestretched playback by overlapping short grains of the soundfile in order(i've heard it called a 'granular train' because the grains are not randomized in their playback-position to form like a 'cloud' as in more advanced uses of granular-synthesis, they're just connected in sequential order like a train of sonic grains).

also play with 'time between grains' to get a sense for the type of granular overlap you'd like(there's a certain thickness that's nice before it gets too loud, or introduces other amplitude-modulation style effects; similar to choosing too-short of a 'duration' might make it sound like a tin-can (because the granular-amplitude-windowing can start to effect the sound when it's too short)).

and then once you get to know the patch, you can just whittle it down to your needs(get rid of 'tranposition' option, and other parts of interface you don't need, etc.).

it's not the most ideal in sound, but it holds a very wide diversity of uses. and this technique is at the heart of all the other techniques used(FFT-based processing involves windowing segments of audio in a similar way).

last but not least, i feel breakcore is best with the dirtier styles of effects, such as bitcrush, loud-ass comb-filtering, interspersed suddenly in rhythmic ways over the beat, so this technique can get you a wider range of 'aggressive' as opposed to soft-and-clean solutions.

i probably rambled on too much 😆, but hope it can help 🍻

dequalsrxt's icon

This is something super crude in gen~. There's no windowing so it's pretty bitcrush-y, but if you added a window and some overlapping layers as above, you could probably get it smoother sounding. Somewhat similar to granular, slice the sample up super small and then move through the slices at whatever speed you want. I have jongly chopped up into 10,000 slices is this example. There's two counters - one is a free-running, looping counter and that's the playhead, the other is a clocked counter that moves the playhead through the sample. I'm sure you could adapt the clock speed to be controlled via transport, but I haven't used transport control before. I'm a fairly new user.

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