Didier Dambrin wrote:
Didier, One of the reason we don't support FruityLoops in our plugins is just that: vst cannot permit to have timestamped automation, so FL calls us with ridiculous amounts of audio samples to process (like 7, 12 samples...) and this kills all our internal optimisations, so it's not
FL still mixes using a constant PPQ (so, variable buffer size) because it has 'internal controllers' (which you could call CV).
In no way you can have a host processing in big chunks (and anyway, talking about getting the smallest latency, and at the same time complaining that too small buffers kill processing optimizations IS ridiculous), and at the same time have an audio-to-CV on one side controlling plugins on another side if the processing chunks are too big (unless there's some latency added, but in this case the CV wouldn't control anything in the same mixer slot).
See it this way, it's like getting timestamped events, except that it's the host that slices the processing for you, and sends the events in-between. And no, personally I don't believe in that host-controlled ramping bs.This view totally kills any optimisation opportunity for many kind of plugins. In such case we have not other option than to predelay the output and thus create artificial latency we could very well live without with a time stamped event list and reasonable buffer size. There are a lot of audio processing algorithm that just can't live with such overhead. Picture this: my main field of work is pro samplers (we do MachFive for MOTU). It is very typical for us to have many hundreds of playing voices at certain points (because we use multi layered sample programs, and some kind of orchestral music need a lot of concurent voices to sound right). In your example I have to manage those many hundreds of voices every 7, 12 or whatever samples. Each voice typically uses 2 or 3 ADSRs, 1 or 2 LFOs, filters, routings, FXs, etc. One can assume that there is at least 30 function calls per voice and per audio buffer round. Now you can make the calculus. Each time the host asks for a bunch of audio data I have to wake all these functionnalities PER VOICE. And I'm not even talking about low latency IR Based reverbs (not everybody can use the Lake Algo...). Then there is the fun game of SSE and Altivec optims which only work on datas that are alligned (altivec) and sizes that are multiples of at least 16 bytes, depending on the algo and the archi.
as simple as "just send a command". I'm all in favor of GMPI being a
yes, it's as simple as 'send a command with a timestamp'
one function call host -> plugin per automation event? are you kidding?
Sebastien
---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.
Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe