Home Documentation and Wikis Downloads FAQ Products Contact
Root

FAQ

Compatibility

How to use the compatibility binarys?

The most simple and normaly working way is to use tool 'roarify':
$ roarify myapp

All settings like server address should be configurable via you application as normal.

How to use the compatibility librarys?

The most simple and normaly working way is to use tool 'roarify':
$ roarify myplayer

All settings like server address should be configurable via you application as normal.

Is it possible to get OSS applications to send data to RoarAudio?

Yes. libroaross provides a very good compatibilty library. It works with most applications very well. You can use it by using roarify the normal way:
$ roarify MyOSSApplication

As OSS does not have any equvalent of a server you need to set the server name using $ROAR_SERVER or set it with --server like this if you want to connect to a remote server:
$ roarify --server MyServer MyOSSApplication

Configuration

How does RoarAudio clients find there default server?

First they check they check the following sources for server addresses:

  1. User/Applicatin given address
  2. Address given by $ROAR_OPTIONs, config files or the application's defaults
  3. $ROAR_SERVER
  4. From X11's RootWindow
  5. target of symlink /etc/roarserver

Now we may have a address to connect to. We try to connect to it and in case it fails the connection fails. In case we do not have an address yet the library will try the following locations. The connection only fails in case no connection to none of them could be established:

  1. Local user's socket (normaly $HOME/.roar)
  2. Local system's socket (normaly /tmp/roar)
  3. Local IPv4 Socket (normaly localhost:roar(16002/tcp))
  4. Local DECnet Socket (normaly LOCALNODE::roar)
  5. OpenSLP located servers (if any)

OpenSLP lookup can in addition be forced by providing server name '+slp'. Compatibility layers may add additional sources for server names.

How to connect to a RoarAudio server over the network?

To connect to a server on the network you can simply set the server using the config dialogs of the application you use or set the environment variable $ROAR_SERVER.

You may want to consider to use OpenSLP based auto locating of the server.

How to setup autolocation of RoarAudio servers on the network?

To enable autolcating of servers on your network you should install an OpenSLP server on at least one of your machines. Next you simply need to provide --slp to your roard so it annouce itself. Ensure you set a hostname or address reachable from the network with --bind. Your operating system may provide a nice way to do that. In addition you can set a location for the server using --location.

The clients will automaticly autolocate the sound server via OpenSLP in case no other server is configured. You can set the server address to '+slp' to force OpenSLP based auto location of the sound server.

What do I need to know when using RoarAudio and chroot()?

In case you chroot roard you do not need to care much about it as long as you use --chroot. roard does everything befor doing the chroot needing a complet filesystem. So it is save to chroot into a completly empty directory. However it is unabled to delete it's sockets and pidfiles in case they are located outside the chrooted directory.

In case you chroot your clients you need to ensure they can access the socket. You can use TCP oder DECnet or set the location of the UNIX socket roard uses to be within the chroot environment. You can easly add multiple sockets to roard using --new-sock.

Development

But wouldn't threads help with SMP systems?

Most likely they wouldn't help because the CPU time used by RoarAudio is normally very low so all systems supporting SMP can handle it on a single core. Systems which are to slow to handle the work on one core normally don't support SMP anyway or are special hardware which needs to be handled specially anyway.

I want to help! How can I do that?

Thanks for intrested in helping! In case you want to help the project the best way is to ask on the mailing list or IRC (see Contact) about currently open jobs.

Where are my callbacks?

RoarAudio uses a IO driven communication model so there are no callbacks for streams and such.

We do this to avoid using threads and OS depending features. Threads make software more complex and complicate to debug and analyze. We think that using Threads implies a big risk of writing buggy, broken and security problematic software. Because of this RoarAudio is completely 'classical IO' driven.

If you want callbacks in your application you may just want to set up a thread which calls a callback as soon as a read or write finished.

Where to report Bugs to?

We have a bug tracker at https://bts.keep-cool.org/. Please report bugs directly to the bug tracker.

If you think they need extra discussion you are free to send a mail to the mailing list (see the Contact page for more details) or talk to us on IRC.

Please include as much information as you can provide via the bug tracker. You should also provide extra information like the used compiler and version of linked librarys. The exact set of information we need depends on the bug. We will ask via the bug tracker for more information if needed.

Why do you avoid threads?

We avoid threads because of several reasons:

The first problem is that threads aren't as portable as you may think. If we would use them they would need to be supported by all systems we port to and we would need ti have a abstraction layer supporting them for all systems we port to. This would add a lot work to the project to implement and maintain.

Also threads make problems more complex. Things may happen at the same time which make debugging harder. Also they likely add race conditions to the software. With a project as complex as RoarAudio this would add a lot work to the team when fixing problems.

Why does RoarAudio not support floats?

Floating point numbers are normally implementation depended. This means how they are represented in the memory depends mostly on the CPU used. Different CPUs use different representations.

This means that floats are normally not portable. Because of this they can not be send unchanged over the network. Network support is a primary goal of RoarAudio.

There is IEEE 754, a standard on how to represent floats in a portable way. However beside the fact that converting takes normally much more time then converting to/form integers and is implementation depending (one needs to write such an converter code for each and every CPU out there) it is not supported by RoarAudio. This is also why most IEEE 754 implementations are broken. Do not trust random applications telling they would do IEEE 754!

General

What is RoarAudio Playlist Daemon?

The RoarAudio Playlist Daemon is a player backend that can handle playlist for the player, a queue of currently played files and do the actual playback. As it is based on RoarAudio's DSTR it can handle internet streams, encryption, compression, etc as well as normal files.

What is RoarAudio?

RoarAudio is a cross-platform sound system for both, home and professional use. It can be used to mix audio for output on a single-stream soundcard or to play audio over the network.

What is Romie?

Romie is a Web based Player based on RoarAudio. It can play music on some kind of music server an is controled via a webinterface.

What is Tantalos?

Tantalos is a protocol to auto locate content such as audio files on your local network. It was designed to help players to share playlists as they do no longer need to care about filenames. Tantalos is auto locating the files for them and downloads them on the fly.

In addition Tantalos can be used to search for files by title, artist and some other meta data.

What is a RoN Application?

"RoN" stands for "Roar over Network". A RoN Application is a application that allows the user to send (mainly) speech over the network in real time. The diffrence to VoIP applications is that a RoN Application's goal is to not limit the user to Voice nor IP.

What is rpld?

See What is RoarAudio Playlist Daemon.

What is ÁRoar?

ÁRoar is a minimalistic library which enables a program to open a stream and send or receive data from/to the RoarAudio Sound Server. This library in contrast to libroar (RoarAudio's main library) allows to be linked with non-free and non-GPLed programs.

What is ÁRoarD?

ÁRoarD is a minimalist sound daemon supporting the RoarAudio Protocol. It does not have much features but is very small. The exackt set of features can be controled at runtime by editing a header file.

Portability

Does RoarAudio run unter my OperatingSystem?

Yes. RoarAudio works under most modern Operating Systems ver well. This includes all POSIX like systems including Linux, OpenBSD, NetBSD and many more. There are also Ports to other Operating Systems.

Does RoarAudio support my non-intel architecture?

Yes. RoarAudio is designed to run on as many hardware as possible. It supports from 8 bit Microconterollers up to big 64 bit servers. Please contact us in case you have a real exotic architecture it does not run at.

What about Window$?

There is a experimental port for win32. This port include working minimalistic RoarAudio librarys, basic tools and roard. The transport layer support is limited to IPv4 on win32 as win32 does not support any other types of sockets.

Streams

What is a stream?

A stream is an object representing (flowing) (audio) data in the server. In case an application want's to send or recive some (audio) data to/from the server it needs to open a stream via the controll connection. After it created the stream it can send/read the data to/from that stream.

What is an execed stream?

An execed stream is a stream which uses the control connection as data connection after the stream has been set up. This is usfull for small applications which will not update any (meta)data while the stream is running to save resources.

This is also the most portable type of stream and works best with NAT firewalls.

Usage

How do I play a file?

The most easy way to play back a file using RoarAudio is by using 'roarcatplay' like this:
$ roarcatplay somefile.ext
roarcatplay can play everything roard has support for.

How do I record a file?

To record a file you can use 'roarmon'. It can write files in all formates supported by roard. You may need to set the --codec parameter to the format you want to use.

Examples:
$ roarmon --codec ogg_vorbis output.ogg
$ roarmon --codec riff_wave output.wav

To record the output of some other stream you need to use --thru like this:
$ roarmon --thru --rel-id stream-id output.ext
With stream-id being the ID of the stream you want to monitor.

  Powered by Fellig.org, Vim and Freedom.