[linux-audio-dev] Audio synchronization, MIDI API

Nelson Posse Lago lago at that.com.br
Sun Aug 15 16:21:03 UTC 2004


Quoting John Check <j4strngs at bitless.net>:

> Google Nelson Posse Lago. He stopped posting to this list about 02.. I was 
> wondering if he got hit by a bus or something, but apparently not.

I'm alive
And the world shines for me today... (ELO)

Sorry, I haven't been able to keep up with the list, much to my regret...
But don't worry, I'll be back!

Anyway, lowlat audio over ethernet works and the ethernet delays are
negligible in practice, they are on the order of a few hundred microsseconds
*with retransmits* in practice and most of the time they won't even
happen. Please take a quick look at
http://gsd.ime.usp.br/~lago/masters/artigo-webmidia.pdf . It is small
and most of the text may be skipped (but please note the "sliding windows"
stuff).

As for resampling and resyncing multiple cards, that's more complicated...

Quoting Benno Senoner <sbenno at gardena.net>:

> I don't think raw ethernet will buy us anything over using UDP. These 
> few usecs less simply won't matter.

Definitely right. AND udp is simpler to use and allows for packets
up to 64K; the resulting ethernet fragmentation, apparently, doesn't
have a significant impact on performance either. This all tested with
relatively low-end hardware.

> (but with ethernet you would have the disadvantage that you loose 
> routability)

I didn't try, but I guess this system only works well (with lowlat)
in a LAN.

> About the packet loss ratio: besides from broken equipement (avoid hubs 
> completely, use only switched networks), the packet loss ration in a LAN
> is pratically zero.

Again, that's right. If the net is dedicated, there should be virtually
no ethernet packet loss; but even if there is, the hardware retransmits
fast enough (IIRC, on the order of nanoseconds) for that to be transparent.

There are four important TODO things with my code:

 - remove the CORBA stuff; it is a legacy from a past where I intended
corba to have a much more important role, but right now it only gives
us the ability to discover the nodes available, which would be much
easier with multicast/broadcast.

 - clear up the C++ code so that it compiles with g++ 3.x.

 - create a simple gui for the manager (should be eeeeasy).

 - improve error handling (calling exit() at any error is not the best
   way to go ;-)

See ya,
Nelson

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



More information about the Linux-audio-dev mailing list