Some ideas on extending jack on a network to create separated remote clients

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

Some ideas on extending jack on a network to create separated remote clients

Stéphane Letz
Hi,

After discussion with Paul on irc, here are some explanations about  
the "extending jack on a network to create separated remote clients"  
suggestion of a previous NetJack status mail. The idea is to have  
another model for remote jack clients, basically:

- a remote machine launches a client (using a special "network aware"  
libjack version)
- this client would "see" the master jack server
- a kind of proxy would be created in jackd server process on the  
master machine
- all notifications received by the proxy are redirected to remote  
client
- audio that proxy send/receive is redirected on remote client (using  
netjack kind of code), with a one buffer delay probably
- proxy client is activated in place of remote client, and just copy  
it's input jack ports on the network socket, copy the network  
received buffers on it's output jack ports.
  - remote client is activated by the reception of audio buffers from  
the network (similar to netjjack driver model), or a kind of  
activation token if client does not have jack input ports

Thus a given client would be made of two part: the proxy part that  
runs in jack server and the remote part on the distant machine.

With netjack model, remote clients are not seen "individually", this  
alternate would allows that, like connecting the "remote" jack ports...

Comments?

Stephane

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel
Reply | Threaded
Open this post in threaded view
|

Re: Some ideas on extending jack on a network to create separated remote clients

torbenh
On Wed, Oct 10, 2007 at 05:27:56PM +0200, St?phane Letz wrote:

> Hi,
>
> After discussion with Paul on irc, here are some explanations about  
> the "extending jack on a network to create separated remote clients"  
> suggestion of a previous NetJack status mail. The idea is to have  
> another model for remote jack clients, basically:
>
> - a remote machine launches a client (using a special "network aware"  
> libjack version)
> - this client would "see" the master jack server
> - a kind of proxy would be created in jackd server process on the  
> master machine
> - all notifications received by the proxy are redirected to remote  
> client
> - audio that proxy send/receive is redirected on remote client (using  
> netjack kind of code), with a one buffer delay probably
> - proxy client is activated in place of remote client, and just copy  
> it's input jack ports on the network socket, copy the network  
> received buffers on it's output jack ports.
>   - remote client is activated by the reception of audio buffers from  
> the network (similar to netjjack driver model), or a kind of  
> activation token if client does not have jack input ports
>
> Thus a given client would be made of two part: the proxy part that  
> runs in jack server and the remote part on the distant machine.
>
> With netjack model, remote clients are not seen "individually", this  
> alternate would allows that, like connecting the "remote" jack ports...
>
> Comments?

this idea seems nice. but what if you want to run 2 clients on the
remote machine ?
and have their ports connected. the system should know, that
two remote clients should have direct connections...

in the current implementation the number of channels in the network
connection is not dynamic.

either an OSC protocol or some dbus stuff should be defined to
send graph change events over the network...

perhaps the aliasing system could be used to create the proxy objects.
on connection a channel would be allocated, and connected on the slave
side.



>
> Stephane
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> Jackit-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/jackit-devel

--
torben Hohn
http://galan.sourceforge.net -- The graphical Audio language

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel
Reply | Threaded
Open this post in threaded view
|

Re: Some ideas on extending jack on a network to create separated remote clients

Stéphane Letz

Le 14 oct. 07 à 14:09, [hidden email] a écrit :

> On Wed, Oct 10, 2007 at 05:27:56PM +0200, St?phane Letz wrote:
>> Hi,
>>
>> After discussion with Paul on irc, here are some explanations about
>> the "extending jack on a network to create separated remote clients"
>> suggestion of a previous NetJack status mail. The idea is to have
>> another model for remote jack clients, basically:
>>
>> - a remote machine launches a client (using a special "network aware"
>> libjack version)
>> - this client would "see" the master jack server
>> - a kind of proxy would be created in jackd server process on the
>> master machine
>> - all notifications received by the proxy are redirected to remote
>> client
>> - audio that proxy send/receive is redirected on remote client (using
>> netjack kind of code), with a one buffer delay probably
>> - proxy client is activated in place of remote client, and just copy
>> it's input jack ports on the network socket, copy the network
>> received buffers on it's output jack ports.
>>   - remote client is activated by the reception of audio buffers from
>> the network (similar to netjjack driver model), or a kind of
>> activation token if client does not have jack input ports
>>
>> Thus a given client would be made of two part: the proxy part that
>> runs in jack server and the remote part on the distant machine.
>>
>> With netjack model, remote clients are not seen "individually", this
>> alternate would allows that, like connecting the "remote" jack  
>> ports...
>>
>> Comments?
>
> this idea seems nice. but what if you want to run 2 clients on the
> remote machine ?
> and have their ports connected. the system should know, that
> two remote clients should have direct connections...
>
> in the current implementation the number of channels in the network
> connection is not dynamic.
>
> either an OSC protocol or some dbus stuff should be defined to
> send graph change events over the network...
>
> perhaps the aliasing system could be used to create the proxy objects.
> on connection a channel would be allocated, and connected on the slave
> side.
>

Well the idea is that *all* server/client communication from remote  
clients (that is request from the clients, result from the server and  
any notifications from the server) would be transfered on the  
network. This obviously is a bit more challenging, and yes maybe  
defining an OSC protocol is the way to go (forget about dbus:  
remember jack is now multi-platform...)

Stephane
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel
Reply | Threaded
Open this post in threaded view
|

Re: Some ideas on extending jack on a network to create separated remote clients

Fons Adriaensen-2
On Tue, Oct 16, 2007 at 12:32:18PM +0200, Stéphane Letz wrote:
>
> Well the idea is that *all* server/client communication from remote  
> clients (that is request from the clients, result from the server and  
> any notifications from the server) would be transfered on the  
> network. This obviously is a bit more challenging, and yes maybe  
> defining an OSC protocol is the way to go (forget about dbus:  
> remember jack is now multi-platform...)

Personally I have no problem, when working on two machines or on a
cluster interconnected using netjack (or equivalent), that this is
made explicit. In other words, that when connecting an app on machine
A to one on machine B, you have to

- select a free link channel between A and B,
- make a connection on A to the selected link,
- make a connection on B to the selected link.

If all the instances of qjackctl (or equivalent) are on the same
screen (easily done), I personally would see no problem with that.

But there are two steps to improve on this:

1. Combine all the connection GUIs into one application.
   This would require netjack (or equivalent) to forward
   connection request to the slave machines.

2. Make the process of selecting a free link and connecting
   both ends to it automatic and transparent to the user,
   and hide the 'link' ports. Once this is done, the cluster
   appears as one system to the user.

Both steps can be implemented incrementally on top of the
original situation by extending only the connection GUI
application, and would not require any changes to jackd or
jackdmp itself.

What would be missing is the ability for clients other than
the connection manager to discover or monitor the remote ports.
The solution for this would be to split off this part of the
API so it can be redirected, in this case to the global
connection manager. In other words split up jackd into a
'local' and a 'global' part. This could be transparent on
a single machine.


--
FA

Laboratorio di Acustica ed Elettroacustica
Parma, Italia

Lascia la spina, cogli la rosa.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel
Reply | Threaded
Open this post in threaded view
|

Re: Some ideas on extending jack on a network to create separated remote clients

Bob Ham-2
In reply to this post by Stéphane Letz
On Wed, 2007-10-10 at 17:27 +0200, Stéphane Letz wrote:
> Hi,
>
> After discussion with Paul on irc, here are some explanations about  
> the "extending jack on a network to create separated remote clients"  
> suggestion of a previous NetJack status mail. The idea is to have  
> another model for remote jack clients, basically:

I'd just point out that this is pretty much the purpose of network-aware
LASH.  The intent is to have LASH servers on different machines
communicate, for them to initiate connections between remote JACK
servers, eg using firewire, and for a LASH-aware patchbay to present a
user interface to the network-wide session.

In this, JACK stays in its role as a local audio data I/O system (and I
guess MIDI data as well now) and the higher-level network interactions
are dealt with by a layer above it.

Bob

--
Bob Ham <[hidden email]>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jackit-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jackit-devel

signature.asc (196 bytes) Download Attachment