View Single Post
Old 05-24-2013, 10:03 AM   #13
beyond
Human being with feelings
 
Join Date: Jun 2007
Location: Palm Beach FL
Posts: 265
Default

Quote:
Originally Posted by Justin View Post
You could disable anticipative FX rendering, and don't use PDC, and hope for the best (or probably code something that would adapt to the PDC)... but having "synced global variables" probably would end up defying causality logic in many cases.
Well, a track with a JS writing to a global variable is like giving that track a "Send" classification to tracks with JS's reading that global variable. In which case, these groups of dependant tracks all have to be synced and rendered as a bundle and all be capable of rendering ahead, or none at all.

So perhaps than, there needs not be time-stamped buffers (which would work in send situations serving both the future (render ahead) and the present, but would cause causality ambiguities in replies from the present JS's to the future, but 2 way communication is rarely used in JS communication).

Instead this design would check for virtual send connection treatment between JS's that write, and JS's that read detected global variables.

What are your thoughts, just for the puzzle of it...

My older design was working with disabled anticipative FX rendering on tracks that needed to hear the master (for special virtual instruments like piano and electric guitar sympathetically resonating and feeding back to themselves and to the drums, vocals and everything else around them). A simple transpose was also passed to all using globals, but unless all tracks using it were anticipative disabled, you could not change the transpose in the middle of a song musically in sync. This was not needed for most songs.

The new design is using MIDI controller messages sent to children receiving all their musical guidance from the master. If the master is on live input, they all get their chord and scale updates real time, otherwise they are free to happily render ahead.

There were some challenges solved, such as MIDI messages quantized and time-stamped on the same buffer offset coming in an unpredictable order, causing pattern notes to slice and dice to zero length as they updated from some of the chords unpredictably late. These were cleaned by keeping time-stamped note buffers in JS! Your amazing new updates to JS with functions was essential!
beyond is offline   Reply With Quote