Hi Hermann, On Mon, May 18, 2009 8:31 am, hermann meyer wrote: >> they are totally unrelated. > > do I get it right, so, if there is no other thread then the > process_callback involved in the midi data collection,then there is no > need to use the ringbuffer ?
A ringbuffer is like an array that never ends. It's like a C++ std::vector<> or std::list<>. It's a container that you can use if you want a never-ending array where the memory is pre-allocated. The ringbuffer in jack could be used in any program, anywhere. Here is a Wikipedia article on the subject: http://en.wikipedia.org/wiki/Circular_buffer You would use a ringbuffer when you have an audio (real-time) thread that MUST NOT wait... but you need to share data with a GUI thread or some other thread that will do heavy processing. JACK does not require, nor does it even expect, that you will have a ringbuffer anywhere in your application... even if you have more than one thread. If you use an normal array/buffer for transferring data, that will be just fine as long as you have appropriate read/write controls. On the other hand, a port_buffer is just the interface you use from JACK to read/write data from/to the JACK bus. It is owned and operated by JACK, so you don't have to allocate it, nor worry about whether it's a ring buffer or some other kind of buffer. Hope this helps, Gabriel -- G a b r i e l M B e d d i n g f i e l d _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
