On variable buffer sizes in vst 2 and 3 and other host idiosynchrasies

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

camsr wrote: Thu Jan 14, 2021 5:09 am Within the Directed Acyclic Graph (had to look that up), there are differences in block sizes being fed into plugins. But the dependency node should always be the largest and latest minimum buffer?? Like, if one plugin down the chain required 256 samples fixed input buffer, it's dependencies could be given multiple smaller blocks to process, for whatever reasons.
There are probably many possible designs here and I don't know what any given host does internally, but you can certainly use fixed buffers on the audio graph level and then just split them into smaller chunks (eg. for time-info with song jumps and automation accuracy) when you actually call into a given plugin. If some plugin needs fixed buffers, then you just skip such splits (and lose the benefits). I basically fail to see any great difficulty here.

Post

Just curious how it works :) I haven't delved too deeply into this portion yet.

Post

The buffers should be split up in a way that it makes sense e.g. when a noteOn command is set.
As long as no automation and no new midi commands are used on the block it does not make sense to split up the buffers into tiny pieces. Instead the biggest possible size or at least a reasonable size should be used.
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

Note on/off comes with a delay compensation, so there's really no need there. The only place I can maybe see a need is on a loop, but the host can just as easily wrap the end with the beginning as it can split the buffer. So, I'm really not sure of any case where a different buffer size is a convenience vs a necessity.
I started on Logic 5 with a PowerBook G4 550Mhz. I now have a MacBook Air M1 and it's ~165x faster! So, why is my music not proportionally better? :(

Post

There's instances where plugins will communicate across mixer channels, effectively side-stepping the host's audio graph. I think this was done for support in hosts which do not allow arbitrary audio channel routings. This could also be a buffering challenge.

Post

syntonica wrote: Fri Jan 15, 2021 4:19 pm Note on/off comes with a delay compensation, so there's really no need there. The only place I can maybe see a need is on a loop, but the host can just as easily wrap the end with the beginning as it can split the buffer. So, I'm really not sure of any case where a different buffer size is a convenience vs a necessity.
If you're running some sort of a sequencer (or really even a synced LFO) in a plugin, then not getting the correct time-info when there's a loop-point or a tempo-change is less than ideal.

Post

Tempo change: that might be a good reason. Thanks!
I started on Logic 5 with a PowerBook G4 550Mhz. I now have a MacBook Air M1 and it's ~165x faster! So, why is my music not proportionally better? :(

Post Reply

Return to “DSP and Plugin Development”