Poke "phase index mode" working patch?

jamesway's icon

jamesway

7月 21 2024 | 3:21 午前

I can't seem to record anything with poke using phase index mode without getting ring mod sounding results. Anyone have an example patch that works?

I tried bunch of things, most recently phasor-history-one pole filter and poke inside of gen, and that inside of an upsampled poly. I really hoped something simple like rampsmooth might cut it:)

I suppose the end goal is just an oversampled buffer to overdub at different speeds or directions. Similar to a teenage engineering kind of thing, tape deck

Any insight is much appreciated.

Have a good patch today buddy.

jamesway's icon

jamesway

7月 21 2024 | 9:07 午前

It turns out my issue is the "mix/accum" input in gen poke.

If I quickly fade from record to play in mix mode it sounds decent, but if left halfway it sounds like ring modulation. Appears to be a bug in gen poke as I see no other way for me to remedy this.

jamesway's icon

jamesway

7月 21 2024 | 4:41 午後

Any cycling dev who could explain what's happening, I'd love to hear it. I'm really curious how this might be solved. I need to test some more. Perhaps I only need to modulate the input in a subtle way.

👽'tW∆s ∆lienz👽's icon

👽'tW∆s ∆lienz👽

7月 21 2024 | 5:21 午後

here's a playground-patch to help you test out overdubbing with using 'poke' op in gen~:

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

turn on your dac~ then hit the 'initialize everything' button to get it going :)

i'm not getting any ring-mod, but there are many areas where that type of sound could have happened:

-leaving the volume on too high will clip the recording or output which can sound like ring-mod on some sounds

-the (lack of)interpolation for your playback op when playing at any speed other than 1x(try '@interp cubic')

-the (lack of)interpolation on recording ops within gen~ if you try to record at speeds other than 1x

if you still have this problem, post your patch(or a version minimized down to the problem area), people here can take a further look.

hope this can help 🍻

jamesway's icon

jamesway

7月 21 2024 | 5:36 午後

Great thanks much. I plan to have a relaxing patchy Sunday. Have a good one

Graham Wakefield's icon

Graham Wakefield

7月 21 2024 | 8:26 午後

It's hard to give advice without a simple example patcher and explanation of what you are doing + what you are trying to achieve.

But in general, if you are writing into a buffer that is being played back elsewhere, then anything other than writing at 1x speed (e.g. counter -> poke) is likely to introduce sonic artefacts. It's just the nature of how buffer writing works. Imagine the buffer as a tape loop of segments. If you write at >1x speed, then with each passing sample of real time, you may be skipping over some segments of the buffer. If you write at <1x speed, then with each passing sample of real time you can end up writing into the same segment more than once before moving on. Either way the data in the buffer is now a strangely mangled version of the input sound, which can indeed sound like ring modulation. My guess is that this is the problem you are facing.

The simplest solution to avoid this is to always write at 1x, and do any required speed changes at the reading end. Depending on what you are trying to do this might be enough, or you might be able to get closer to what you want by bouncing two loops/delays.

There are also ways to emulate writing at other speeds without causing these artefacts, but they are pretty complex and can have quite a bit of CPU impact, depending on how much you want to be able to change the speed. It's a generalized sample rate conversion issue.

jamesway's icon

jamesway

7月 23 2024 | 11:05 午後

Thanks for the replies. The patch helped me sort out a few things. I had a stereo buffer not being targeted properly, two things poking.

I was trying to oversample. I'm going to try a longer buffer and wave mode, or groove. Thanks again all you super awesome people.