Messing around in the Max lab last night, I seem to have accidentally stumbled upon the James-Jenkinson formula. With thanks to Raja for the stutter engine.
Instructions: load a drum loop and go plastic,
I was hoping that the included presets might help show the way round; perhaps the .json was not loading?
But you're right, a couple of things were broken - here's an updated version which should initialise better after loading the buffer.
I've also done something to stop false stutter triggers when the sliders are not set at exactly to zero, and I've thrown in a few hints to hopefully make things a bit clearer.
Here's a couple of mp3's made with just this patch and a single drum loop loaded in each instance, just to show it does work!
I spent time trying to understand your patch but unluckely I'm not that good...!Maybe it is not fair to ask you if I can see the original patch, but if you do not mind just post it here, otherwise no worries!!!
I really like the sounds!!The core is made up with the stutter built up by Raja maybe but your UI I do not understand what do they control...
I'm not sure what you mean by 'the original patch' - the original patch is there, in presentation mode - put it into patching mode to see the guts.
I'll try to explain the workings of the patch I posted (second version):
The patch uses 2dwave~ to re-order a loop; the x scan is a simple phasor, whose frequency is determined by the length of the loop. The Y -scan, which determines the order in which the slices are played, is set by the 'slice' multislider. The 'scope gives a graphic representation of how the 2d buffer is being scanned.
The waveform~ below this multislider /should/ show roughly what slice the last slider moved represents, but I notice that it's refusing to display the buffer now - if that's happening for you, paste-replace a new waveform~ in.
The number of slices/rows can be changed, and if the 'link to rows' toggle is checked, this will be reflected in the number of sliders in the multislider. The 'quick rows' buttons can be used to quickly change the number of rows to simple binary multiples. Note that if you go from a lower to a higher number of rows, the sliders above the lower number will all be at zero - use can use the 'initialise' button to quickly set these to 'normal' playback order (1,2,3,4,5 etc.)
The scan rate floats determine the speed at which the buffer is scanned; the x value therefore determines the pitch, the y value determines how quickly the slices are cycled through - for most purposes you can just leave these at '1.'
The patch actually uses two 2dwave~s which are cross-faded to reduce clicking at the end of each phasor cycle; a crossfade value of around 4 or 5 generally seems to work OK, with lower values giving some interesting 'echoey' effects.
In a similar way to the slice multislders, the stutter multisliders determine the 'rate' ie. the size of each repeated chunk, and the pitch at which it is played, for each slice. A zero 'rate' means no stutter, so for most of the steps, you will probably want the sliders at zero. (Raja is right to question my use of the terms 'rate' and 'pitch' - I'm using them very loosely, and without units - my old physics teacher would weep!).
The best way to get an idea of what's going on is to load a loop - click the 'load buffer' button - and load a preset, hit the dac~ and 'play' toggle, then play with various parameters. The results you get will depend very much on the loop you load - I find the drum loops in the Apple Loops library work well (though if you have an old version, you'll have to convert them from .caf's to something more usable like .aiff).
...of course...i had to remove the presentation mode...ops.
Now I can take a look at it properly. Then everything can be much more understandable!!!thx a lot also for the exhaustive explanation, really nice from you!!