Merge branch 'develop' of github.com:jackaudio/jack2 into develop
[jack2.git] / README.rst
blob390c09c0b4939dbbde37ec9513c55700687cddda
1 `JACK2 <http://jackaudio.org/>`_
2 ################################
4 .. image:: https://travis-ci.org/jackaudio/jack2.svg?branch=master
5    :target: https://travis-ci.org/jackaudio/jack2
7 JACK2 aka jackdmp is a C++ version of the JACK low-latency audio server for
8 multi-processor machines. It is a new implementation of the JACK server core
9 features that aims at removing some limitations of the JACK1 design. The
10 activation system has been changed for a data flow model and lock-free
11 programming techniques for graph access have been used to have a more dynamic
12 and robust system.
14 - uses a new client activation model, that allows simultaneous client
15   execution (on a SMP machine) when parallel clients exist in the graph (client
16   that have the same inputs). This activation model allows to better use
17   available CPU on a smp machine, but also works on mono-processor machine.
19 - uses a lock-free way to access (read/write) the client graph, thus
20   allowing connections/disconnection to be done without interrupting the audio
21   stream. The result is that connections/disconnections are glitch-free.
23 - can work in two different modes at the server level:
25   - *synchronous activation*: in a given cycle, the server waits for all
26     clients to be finished (similar to normal jackd)
28   - *asynchronous activation*: in a given cycle, the server does not wait for
29     all clients to be finished and use output buffer computed the previous
30     cycle.
31     The audible result of this mode is that if a client is not activated
32     during one cycle, other clients may still run and the resulting audio
33     stream will still be produced (even if its partial in some way). This
34     mode usually result in fewer (less audible) audio glitches in a loaded
35     system.