I’d like to contribute to this thread in case there have been any fresh new takes on getting precise midi timing going on inside TouchDesigner. It’s something that stumped me a year ago and is still stumping me today after having taken a thorough wack at it.
First of all, I’m fairly confident in saying that the weak-spot in these types of approaches is the CHOP exec DAT. If we take the same pulses coming from @greg 's example and apply it to a copy-CHOP we can hear much more precise timing within the application itself. Probably due to the wonders of time-slicing.
Unfortunately the issue is that the CHOP exec DAT often has to be used with midi to convert the CHOP channel name/value into midi messages.
In my own applications, the CHOP exec DAT is used to split the channel name and value and store each of them into their own constant CHOPs as part of a synthesizer voice allocation algorithm.
The first mistake I made here was that setting the channel values via parameters would affect all samples of that channel, regardless of sample-rate etc. This meant that if my input was coming in at 480samples/sec with 8 samples per channel, I was losing those 8 samples worth of timing resultion in my constant CHOP which was itself set to 480samples/sec and 8 samples per channel.
So I figured I could find a way to modify the CHOP channel per sample using the script CHOP using one of Matthew Ragan’s techniques but in order to do that I still had to make use of a CHOP execute DAT leaving me with the same results as before and which can be seen by the uneven distribution of pulses here:
At this point I’m wondering if anything can be done by either giving it the CHOP exec DAT it’s own local time (though I’ve never really understood how to make good use of this) or maybe placing the script within an engine COMP (which I unfortunately can’t test out for myself).
Is there a way to get the CHOP exec DAT shooting at higher than session rates? If not, is it something that can be RFE’d or is it too tied in to how TD works? I’d really (reaaally) love to find a way to get this resolved and ideally, without having to use the engine comp.
I’ve attached Greg’s file including a few small additions relevant to my post.
MIDIOutFast.28.toe (110.4 KB)
Thank-you for your time!