I made a simple test plugin that does nothing but display a label showing the blockSize (buffer.getNumSamples()) in the processBlock() call.
It seems, in Digital Performer, to always be 2048 no matter what it is set to. Debugging also confirms this.
I can change the setting in the Buffer Size field at the top transport, or in the Configure Hardware Driver dialog, but it has no effect on the blocksize. Here it is set to 128 and yet the bufferSize in processBlock() is still 2048:
And yet, in Reaper, changing the blockSize does work, as shown here:
Does anyone know what might be going on here? Is this something peculiar about Digital Performer?
Do you have an input armed on the track? It might be an optimization for tracks that don’t need to be rendered live to have a larger block size. Try adding an input or some automation and see if that changes is.
1 Like
It’s probably like logic where LIVE tracks have a fixed buffer size. Select another track to see what the buffer size is when the track isn’t the live track
1 Like
Newer versions of DP also have a feature called “Pre-gen” which pre-generates audio in sort of a half-offline mode with larger buffer sizes. If you don’t real-time tweak, it is probably used always. It can be turned off in the settings.
1 Like
Thanks - that was it. Enabling REC on the track changes the received blockSize from 2048 to whatever is specified.
There is also a setting in the plugin Window “Run open instances of this plugin in real-time” that accomplishes the same thing.
I guess the thing to keep in mind is that it’s ultimately the host’s decision which block sizes it uses while processing its graph and any plugins. It can be the same as the one in the preferences - which is the one the host delivers to the audio driver - but doesn’t have to be. The host can do whatever it wants as long as it’s within the max communicated via prepareToPlay()
.
1 Like