Technical Details

Blue's parameter automation system is implemented in Csound code in a few different areas. For instruments and effects, when an Automatable Parameter is not set for automation, it will replace its replacement key in its ORC code with a constant value from the UI item. If the parameter is set to allow automation, then the replacement key is replaced with a Blue generated global k-rate signal name. Therefore, when coding instruments and effects, the user should be careful to make sure that if they want the parameter to be automatable that the replacement key is placed in the code where a k-rate signal is legal to use. If the user is not expecting to automate that value, then it would be safe to place that replacement key wherever a constant is allowed. This is also useful to know when migrating older BSB Instruments and Effects to be used with the purpose of Automation.

After setting up the Instrument and Effects, Blue will then handle compiling the automations into a way that works with Csound. Currently, Blue will first calculate init statements from where the render start time is and add that to the CSD to make sure that the global krate signals will be initiated by the time any instrument could use them. Then, Blue creates instruments for each parameter that will be automated. The instruments are driven by score and either an instrument for continuous data or resolution dependent data will be created. Score is then generated for the parameter automation data that together with the instruments generated will create the signals.

Care was taken to optimize the generated score and instruments. Unnecessary score will not be generated if multiple points with the same value are found as well as when there is a discontinous break in the values. Values from the parameter automation will also correctly be generated from render start time until render end time (if used). For parameters with resolution, every value is a discrete jump, so the instrument for resolution based parameters will on it's i-time run will simply set the new value and then turn the instrument instance off to save CPU cycles.