=== Top of the Swiki === Attachments ===

Network Sound Server

This pages summarizes the state of network sound servers and how Unix Squeak might tap in.

What it is

A network sound server allows applications to play sounds across a network, much in the same way XWindows allows applications to present graphical user interfaces across a network. The two major advantages of such a scheme are:
  1. Sound server protocols tend to be portable across all Unices -- all it requires are sockets.
  2. Sound servers allow multiple processes to share the sound device, which on many OS's is not allowed when the device is accessed directly.

Enlightened Sound Daemon

Probably the most populal network sound server is the Enligtened Sound Daemon (ESD), the daemon that Gnome uses. Unfortunately, ESD doesn't seem to support what Squeak would need. Specifically, ESD doesn't provide any support for monitoring the rate that sound samples are played other than letting the network socket fill up and block. Squeak, on the other hand, wants to keep the buffers as small as possible while still avoiding buffer underruns. Using huge sound buffers, as the authors implicitly suggest doing, will lead to huge delays whenever a sound is generated from Squeak.

ESD seems best suited for playing sound effects and for long but unsynchronized background music.

YIFF

YIFF is an interesting sound server, but unfortunately it can only play sounds that are stored in files on the server. It doesn't support Squeak's model of a stream of sound at all.

YIFF works well for playing sound effects, but that's about it.


aRTs

The Advanced Real-Time Synthesizer is an extremely flexible system of sound middleware. However, it seems to have the same big limitation that ESD has: you can't query to see how much sound has been played so far. Furthermore, compiling aRTs requires that you not only have C++ with STL, but that you have CORBA available. In short, it can be a pain to install.

Nevertheless, aRTs is a nice audio framework. If any system will have to be upgraded for Squeak to work with it, aRTs might make a good one. Furtheromer, KDE seems to be standardizing on aRTs (in fact, aRTs used to be called KSynth).


NAS

There is a system called simply "Network Audio System" that might do the trick. Has anyone looked into it? You can download it from RedHat's contrib area. A web link would be very nice...

CAST

CAST might do the trick as well cause you can select the sampling rate at startup-time. I haven't tried it yet, but if you want to connect it to squeak, you should have a look at my first implementation of the OpenSound Control (OSC) Protocol, which I successfully used to connect Squeak as a client to SuperCollider.
Some testcases can be found here.
SuperCollider is a highend sound synthesis program which only works on Macs right now, though a port to linux is planned.
Markus Gaelli