Lookup CHOP Limit

Windows 10, Build 2019.15840.

Not entirely sure if this counts as a bug, but when I tried to output 32 pulses for a bar of 4/4 at 160 bpm using Ramp, Pulse and Lookup. The output was intermittent. I even tried providing integer indices, but no avail.

Attached an example with this post.

Thanks
Lookup Limit.toe (3.54 KB)

I see something weird here, it opens missing every 5th pulse, but then after a few cycles it settles in and is consistent. We’ll take a look, but could you upload a screenshot of your output so we know what ‘intermittent’ looks like for you?

Hi Ben,

Thank you for the reply. Please see attached screenshot from my TD.

As you can see, I am getting about 6 pulses out of the 32 pulses from the pulse CHOP. I outputted the measure pulse just for reference. And my computer is running at 60 fps, there weren’t any dropped frames during the process.

When I tried to slow it down to 80 bpm, I am getting more pulses, but it’s bit even more erratic, as you can see in my second screen shot.


The way its setup is pretty sensitive to errors though.
You have 32 pulses in 600 samples, which doesn’t divide evenly, and the beat ramp will be within a small delta each cycle, causing slightly different samples in the pulse chop to be grabbed.

I would use the Beat CHOP’s native options directly, like its period parameter, if you want a higher frequency output of pulses.

Cheers,
Rob.

Hi Rob,

Thank you for the reply. Your explanation def makes sense.

I just tried out generating pulses using the beat chop, however, its behavior is not very useful to me. For my use case, I will be running multiple beat chops at different rate, however, I need them all sync to a single downbeat/pulse. I achieve that by having a master beat chop that sends out a reset when it’s time to sync.

As you can see in the screenshot, after every reset pulse, there is a very significant delay, almost like a hiccup in the beat chop’s pulse generation. It makes the pulses uneven, and hence, not useful for my use case. Actually, the chop that’s giving me the most stable output is the lfo CHOP set to pulse. It takes a little math, but so far, its behavior under reset has been far more stable than the beat chop.

Would you consider this hiccup in the beat CHOP to be a bug? I have the period set as 1/8, which works out to 32nd note pulses.

Thank you.

I deal with this issue all the time. It has to do with the interaction between your session framerate and timeslice settings plus the pulse CHOP’s sample-rate, channel length, pulse-width and ramp speed pretty much.

Better results can be achieved by increasing the sample-rate, pulse-width and length of the pulse-chop channels however, reliable 32nd note resolution is always going to be tough to achieve at high BPMs if you’re running 60fps session. AFAIK that’s just the nature of how TouchDesigner calculates things frame per frame.

In this example I get stable results by setting the pulse CHOP sample rate at 96, the length at 4999 and the pulse width at 0.67. There are other such sweet spots no doubt. It doesn’t really add to the cook time of the lookup CHOP either.

AFAIK this is not a bug but like, if it could be improved that would obviously be super neat. :mrgreen:

Hi Owen,

Thank you for the reply. So, I ended up using either LFO or Beat chop to generate the pulses. I am able to get a pretty stable 32nd note pulse with both of them. I did increase my project’s fps as well. I am at 480 right now. It’s pretty much the same as increasing the ppq of other sequencers. I find the timing at 60 fps a bit loose, which can be nice for music that has a looser timing. It’s like a built-in swing. It definitely tightens up as you go to higher fps.

I really hope Derivative can fix the beat chop’s intermittent stutter on reset. It does go away once I have run it for a few bars, so, it’s not that big of an issue. Plus, I am on a machine that’s 3 gens old. I think if you have a newer machine, it should run pretty decent.

Da.

Personally, I’m not a big fan of changing your main timeline’s fps to accomodate for audio and sequencing. It gets you better results but It also makes things you build more difficult to incorporate into standard projects. One way you can go about it which I’ve only just caught on to recently is to build those networks within their own component and add their own component time.

I’ve found this to be particularly useful when working with python exports to parameters which modulate audio content. Those exports will update at the resolution of their local time. I haven’t yet tried it with my sequencers though so maybe there’s a neat solution here.

Unfortunatly timeslicing gets a bit wacky when you pass audio in and out of a component with an independent timeline.

I 100% agree with what you’ve noticed about the timing being loose at 60fps though. At this point I’ve made my peace with it but it’s hard to get tight electro grooves that way haha. It is what it is! I’m wondering how much of an impact the process COMP will end up having on all these types of issues.

I am not entirely sure the bug board is the most appropriate place for this discussion, BUT might as well do it here so other people may find it one day :smiley:

So, my plan is to run the sequencer stuff in one instance of the TD, then communicate with other aspects via shared mem, which is the fastest way to get data across different instances. I am mostly concerned with sending out trigger pulses and maybe gates via my sequencer instant.

At the moment, I am sending sequencer events out via midi to my outboard gears. I haven’t started building anything audio in TD yet. Prob gonna start soon.

I haven’t tried adding additional time comps yet, not entirely sure how that would interact with the main project setting.

But I feel if I keep one instance’s fps consistent, then communicating with another instance with a different fps is just a matter of resample. Of course, I don’t have any firm results at the moment, in theory, it makes sense :smiley:

As far as modulations go, they can be triggered in different instances of TD and will essentially run in a diff sample rate.

How are you dealing with modulating parameters in the parameters panel? Because they are running at 60 fps, and audio runs in 44.1k, that mismatch can cause pops in the audio.

BlockquoteHow are you dealing with modulating parameters in the parameters panel? Because they are running at 60 fps, and audio runs in 44.1k, that mismatch can cause pops in the audio.

Basically, I don’t! When I design components, the top level parameters are there for mostly programming purposes only and the modulation is done via CHOP inputs. You cans till get away with some modulation though, like say, mapping a midi controller but like you said, you might here some zipping if you’re tweaking those knobs crazy fast.

hahaha yah, I worked that out not long after I posted this. :smiley:

Which is kinda clever on TD’s part. It kinda avoids the whole sample rate mismatch issue.

Da.

1 Like

Since this post got a bit long and a number of issues were discussed, can you distill example what you mean with the Beat CHOP’s intermittent stutter on reset, and of course an example file really helps us reproduce and fix more quickly.