play~ er location select click

johnr's icon
Max Patch
Copy patch and select New From Clipboard in Max.

im trying to get rid of (or minimize) the click when randomly selecting a location to play from in an audio file...
pls assistance would be appreciated..

brendan mccloskey's icon

Hi johnr
I pulled your patch apart, and the clicks you hear are minute and instantaneous changes in the phasor ramp, which manifest themselves as rapid pitch shifts between changes in the location value. This is the expected behaviour when driving a play~ object with a phasor~ ramp. So. The solution (as I see it) is to 'store' the changing value in a sample and hold (sah~), and pass the values at the end of the phasor~ ramp. This may well be a method you're familiar with? It does mean, however, that your location value will not update until the end of the current ramp - this may not be rapid enough for you :(

I also took the liberty of replacing trapezoid~ with a curved window. I'm led to believe that angular windows can create unwanted artefacts when generating very small loops or grains of sound (Miranda, Computer Sound Design, Chapter 5).

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

EDIT: and I 'improved' (broke?) your random-location engine; ps, see stutter~ and chucker~ for endless fun

antialias's icon

I'm wondering if one could fill in the gaps of the windowing by adding a second system that was 180 degrees out of phase.

brendan mccloskey's icon

Hi antialias
I describe this very topic in my Granulation Synth tutorial; it builds on everything I've learned from the tutorials and this forum. Skip to video 3 for the details of synced overlapping windows.

"Other granulation engines are available!"

Brendan

antialias's icon

thanks Brendan-- I'll check these out.
Ian

johnr's icon

thanks for the details; great stuff...
can i ask if it is possible to replace the constantly generating number at the top left of the patch to something like a bang type UI item? when initiated it would read through the entire cycle though, rather than constantly generate the signal?

assistance would be greatly appreciated.

thanks for your time

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

`

brendan mccloskey's icon

Hi
i responded to a recent thread on a similar topic; is this any help?

Max Patch
Copy patch and select New From Clipboard in Max.
brendan mccloskey's icon

....if simple start/stop playback is all you need, then don't bother with my previous examples, use this (or just [sfplay~]):

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

Brendan

johnr's icon

very cool; thanks for the response and post. i think my question was a bit poorly written.... this has to do with my lack of knowledge on this particular subject. i will play around with i what you have provided me with and go from there.

thanks again Brandon.

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

on another note, yet very-much-so related, i went through your fCast Appendix video on granular synth on youtube, and for some reason my patch wont initiate... i do; however, get an audible click every time i initiate the DAC if amplitude is way up. i believe this has to do with the sah~ object... it wont initiate or something.. would you mind taking a look at what i have and suggest any pointers? i would really like to get this one working polyphonic..
i have pasted here... any assistance would be very much appreciated:

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

and my poly subgrain

brendan mccloskey's icon

I'll look at this when i get home

brendan mccloskey's icon

This works:

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

There were a number of errors in your main patch: the key object doesn't get an argument ([key 32] is incorrect); use [pak] and not [pack] outside a [poly~]; you also have several different methods of initializing the [dac~] - pick one.

To get this to work, turn on the [dac~] before sending the (target 0, bang) message.

Brendan

johnr's icon

thats great; thanks for sending along the patch and providing some other relevant pointers.