On Thu, 12 Nov 2009 09:11:48 +0100
Giso Grimm <gg3137(a)vegri.net> wrote:
Hans Wilmers wrote:
I
guess that jack is too big a burden for the small kind of system we
are talking about, so the question is, if netjack could be implemented
standalone - or maybe another suitable mechanism?
It should be possible to implement the netjack protocol also for a
standalone application, but with that I would wait until there are
decisions on the 'final' netjack version. The jack_netsource code is
approximately 2000 lines of C code (including "netjack_packet.c", with
CELT support and transport control).
Since packet loss is probably not acceptable in a 'sound card', it may
be worth to go for a TCP based solution. Also the clock protocol is not
included in netjack.
I see two different scenarios (OSHw = OpenSoundHardware, <---> audio
transport, <===> audio and clock transport, <~~~> audio transport with
drift control/resampling):
a) netjack based solution, one OSHw, no clock protocol, no sync:
alsa_{in,out} <~~~> jackd -dnet <---> OSHw
b) own protocol, multiple OSHw, master clock:
Master Clock
Host sound card
||
jackd <===> OSHw
<===> OSHw
<===> OSHw
c) 'classical' sound card concept:
ALSA driver <---> OSHw
|
ALSA driver <---> OSHw
|
ALSA driver <---> OSHw
(ok, that is three). From a recording studio point of view I think that
version (b) is the best. It would require to implement a driver which
itself is a jack client. As a jack client it is platform independent.
- Giso
A little bit of interest maybe.
It appears there is a software suite for the 'other' OSs that can
manage 16 channels of 48k over the Internet (not just a LAN) provided
you have an upstream of greater than 150Mbps and downstream better
than 750Mbps.
Also, there is a very useful looking fully self-contained Ethernet chip
that can deliver 25Mbps at application level. This is the WIZnet W5000.
It can also open up to 4 sockets, so I'm not clear as to whether that
is 25Mbps per socket, or in total.
Very empirically speaking, with 1 channel at 24 bit depth that's a
potential sample rate of 1MHz, or putting it another way 20 channels of
48k! OK, OK, I know I'm leaving out huge swathes of control, collisions
etc. :)
This chip can handle both TCP and UDP. From what little I know of the
protocols I would say that UDP would be the way to go. Everything
listens to anything on the network, and all recognition and
handshaking is done away from the network connection itself. This is
bound to reduce latency as well as reducing packet size.
Being a bit simplistic if you have a master clock (not necessarily
the computer) send just a timecode at 48kHz everything can lock on to
this immediately, and keep updating its copy of the timecode.
Something wanting to transmit audio would then send back it's own ID,
the current timecode followed by up to 24bits of A/D stream.
Packets would be small and latency low, buffer size could probably also
be quite small.
The computer would pick up all the incoming data streams and sort them
into their appropriate channels and time points. At this level, the
occasional out of sequence packet could probably be put back into it's
right place with only a relatively small additional buffer - well I
hope so!
This is all off the top of my head, so I won't be at all offended if
someone points out a simple flaw that brings the whole idea crashing to
the ground.
--
Will J Godfrey
http://www.musically.me.uk
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.