[ANN] jackdmp for Linux and OSX

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[ANN] jackdmp for Linux and OSX

Stéphane Letz
jackdmp for Linux and MacOSX
-------------------------------------------

jackdmp is a C++ version of the Jack low-latency audio server for
multi-processor machines. It is a new implementation of the jack server
core features that aims in removing some limitations of the current
design. The activation system has been changed for a data flow model
and lock-free programming techniques for graph access have been used to
have a more dynamic and robust system.


Linux version
-------------------

The published version still uses fifos for server/client  
synchronization.
The use of POSIX named semaphore is implemented but still a bit  
unstable.
Sockets are used for server/client communications. The ALSA driver  
derived
from jackd implementation is used.

The package contains the source code with a makefile. There is no  
configuration step yet.
The code has to be compiled on a machine where ALSA headers and  
libraries are corrected installed.

To install, go in the src/linux folder and do:

make
make install

(WARNING : this will install everything needed in /usr/local in place  
of a regular jack installation
so that jack applications will use jackdmp)


Compilation options:

- the __CLIENTDEBUG__  flag must be added in the makefile to activate  
client validation

- the SOCKET_RPC_POSIX_SEMA flag must be used to test POSIX named  
semaphore for server/client synchronization

- the following variables has to be changed in common/JackConstants.h  
to use a ramfs for fifos

#define jack_server_dir "/tmp"
#define jack_client_dir "/tmp"

After installation, qjackctl setting will have to be changed to use  
"jackdmp" instead of "jackd".


OSX version
------------------

The published version uses Mach semaphore for server/client  
synchronization.
MIG generated Remote Procedure Calls (RPC) are used for server/client  
communications.
The CoreAudio driver derived from jackd implementation is used.

The package contains:

- the compiled binaries with an installation script located in bin/osx
- the source code with an XCode project
- the component needed to use CoreAudio applications with Jack
(the JackRouter Jack/CoreAudio bridge)

WARNING !! WARNING !!
Users of the official JackOSX package MUST uninstall JackOSX
(using the script located in /Application/Jack) before installing and  
testing jackdmp


Validations tools
-----------------------

jackdmp can possibly validate client applications by checking they  
are using the API in a correct manner
(calling functions in the right order, correctly desallocating  
ressources....) and produce a log file.
By default jackdmp is compiled with client validation off. A  
__CLIENTDEBUG__ flag
must be activated in the Makefile (or Xcode project) to activate  
validation.

Documentation
---------------------

- a technical report presenting the new design and implementation

- doxygen generated documentation of the C++ code.


Versions
------------

0.1 : First published version
0.2 : Implements jack_time_frame, new -S (sync) mode : when "synch"  
mode is activated, the jackdmp server waits for
the graph to be finished in the current cycle before writing the  
output buffers.
Note : to experiment with the -S option, jackdmp must be launched in  
a console.
0.3 : Implement client zombification + correct feedback loop  
management + code cleanup
0.31 : Correct bug in mixing code that caused Ardour + jackdmp to  
crash...
0.4 : Linux version, code cleanup, new -L parameter to activate the  
loopback driver (see Documentation),
a number of loopback ports can be defined. Client validation tool.

This is a work in progress but the implementation is now stable  
enough to be tested.
jackdmp has been used successfully with the following applications:  
Ardour, Hydrogen, Jamin,
Qjackctl, Jack-rack, SooperLooper...


Know problems, limitations
--------------------------------------

- transport API is not implemented

- server internal client API is not implemented

- some functions like jack_client_open are not completely implemented  
(the function works, but without launching the server if needed)

- zombification of clients is not activated

- the number of audio ports is fixed

- multiple server management is not implemented

- memory locking is not implemented

The package is available at http://www.grame.fr/~letz/jackdmp_0.4.tgz

Stephane




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel
Reply | Threaded
Open this post in threaded view
|

Re: [Jackit-devel] [ANN] jackdmp for Linux and OSX

Stéphane Letz

Le 1 déc. 05 à 14:53, John Rigg a écrit :


> On Mon, Nov 28, 2005 at 06:02:13PM +0100, Stéphane Letz wrote:
>
>
>> jackdmp for Linux and MacOSX
>> -------------------------------------------
>>
>> jackdmp is a C++ version of the Jack low-latency audio server for
>> multi-processor machines. It is a new implementation of the jack  
>> server
>> core features that aims in removing some limitations of the current
>> design. The activation system has been changed for a data flow model
>> and lock-free programming techniques for graph access have been  
>> used to
>> have a more dynamic and robust system.
>>
>>
>
> Hi Stéphane
>
> Sounds interesting. Does it have MMAP_COMPLEX support?
>

Not yet.



> It hasn't been
> added to jack CVS yet AFAIK, but I need it for multi Delta 1010  
> (ice1712)
> sound cards. I add the changes manually for MMAP_COMPLEX when I  
> compile new
> versions of jack,
>

Can you send me the patch you have to apply on standard jack?


> but I'm not so familiar with C++. I'm interested in
> trying jackdmp (I use x86_64 SMP), but need to be able to use it  
> with my
> card setup.
>
>

Stephane




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
<a href="http://ads.osdn.com/?ad_idv37&alloc_id865&op=click">http://ads.osdn.com/?ad_idv37&alloc_id865&op=click
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel