>> sync. this is a natural consequence to using a "push" model ("i'm the >> client, and i'll work when and for as long as i choose") as opposed >> to a "pull" model ("hey client: do this much work right now"). > >How does the pull model work with block-based algorithms that cannot >provide any output until it has read a block on the input, and thus >inherently has a lower bound on delay?
the client has to use an intermediate buffer, and fills it with silence to start with. its process() callback fetches data from that buffer. the non-JACK part of the client fills the buffer. use of a lock-free ringbuffer is encouraged. this is precisely the design that has been mentioned in connection with adding latency. its the same design that all VST/TDM/DirectX/MAS etc. FFT-based plugins use, to the best of my knowledge. --p