|
From: <be...@ga...> - 2004-01-09 22:12:33
|
Excellent Tobias !
That's exactly what future professional studio users will need.
That you already wrote an ASIO driver is very very valuable.
I'd opt for UDP for the transmission protocol.
(without retransmission since in local networks
the packet loss ratio is basically zero, and retransmission would kill
latency).
Ok perhaps for offline track bouncing using a TCP socket
would be handy (for the paranoid that fears to loose one packet
out of 10million packets transmitted).
But for now I think UDP is the way to go.
Regarding synchronizing with the windows machine.
The AudioIO class in LinuxSampler contains code to output audio,
in the network case instead of outputting audio you send out an
UDP packet that contains as much data as you would send to the soundcard.
But there is a problem: in the case of audio the soundcard blocks while
in the case of using the UDP sending routine the packet gets out immediately
and we need LinuxSampler wait for the windows box acknowledging the packet
since we must send out at a rate which matches the samplerate of the
windows soundcard.
I think the easiest to way to achieve synchronization is:
LinuxSampler:
writeAudio(data) {
wait_for_sync_packet_from_windows_box();
send_audio_packet_to_windows_box(data);
}
Windows box (ASIO driver) {
send_sync_packet_to_linuxsampler_box();
wait_for_audio_packet_from_linuxsampler_box();
write received data to ASIO buffer
}
The sync packet is very short and does not need to carry a special payload.
It's just to "wake up" LinuxSampler.
Perhaps on the windows receiving end we need to buffer more than one
packet to avoid audio dropouts. Please make this configurable
on the Windows side.
But on the linuxsampler sending side no buffering is needed, one packet is fully
ok, just listen for MIDI-in events, process audio and send out UDP packet.
Just start experiment with it by modifying the AudioIO, I'm sure
you will come up with interesting results !
cheers,
Benno
http://www.linuxsampler.org
Scrive Tobias Erichsen <t.e...@gm...>:
> Hi guys,
>
> I've followed the project for a couple of month now
> and I was always interested in doing some work for
> this. I think someone mentioned that one of the
> goals of LS was the idea of having a rack of Linux-
> based samplers running and use them from remote
> by their favorite sequencer-program.
>
> I thought this was a pretty cool idea and would like
> to offer to implement some kind of Win32-support for
> this.
>
> My idea is the following:
>
> I have already written a generic ASIO-driver for the
> Windows-Plattform (www.asio2ks.de) and I thought about
> including some network-streaming-code, so this asio-driver
> would have the "real" audio-ports from underlying
> soundcard and have "virtual" ports which are fed over
> IP/UDP/RTP from LS. I think the local network should
> provide for low enough latency for this...
>
> So if you have a sequencer like Cubase, you would define
> the "virtual" ports as inputs into the cubase-mixer and
> the "real" ports as output for monitoring to the monitor-
> boxes...
>
> What do you guys think about this?
>
> Tobias
>
> PS.:
> Obviously there would be the need to implement a
> virtual soundcard for ALSA as well - but perhaps
> someone already developed such a beast ;-)
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: Perforce Software.
> Perforce is the Fast Software Configuration Management System offering
> advanced branching capabilities and atomic changes on 50+ platforms.
> Free Eval! http://www.perforce.com/perforce/loadprog.html
> _______________________________________________
> Linuxsampler-devel mailing list
> Lin...@li...
> https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel
>
-------------------------------------------------
This mail sent through http://www.gardena.net
|