List of known Host curiosities

Yes, unfortunately for some features (such as rapidly changing automation or the new LFO feature we added in T7) you need to process plugins in small blocks, changing plugin parameters in between.

Calling prepareToPlay with the new block size before each call would wreak havoc (lots of plugins use this to allocate buffers etc.) and wouldn't always be possible. For example, take the common 441 buffer size on Windows. How does this divide into a set of equal, small blocks?

The long and short of it is the buffer size can and will change between processBlock calls.

 

If you need a certain number of samples to process an effect one option is to push samples into a FIFO and then read them out when you have enough. E.g. you have an 'unprocessed' buffer and a 'processed' one. You push into the unprocessed, process when you can, then pull out the required number from the processed buffer.

Of course in order for this to work you'll need to report some latency and then balance the latency inside your plugin with some delay buffer.