FREQUENTLY ASKED QUESTIONS
==========================

Table of Contents

1.   How do I enable multiple devices with GDAM?
2.   In what ways can gdam use multiple devices?
3.   How does the beat synching work?
4.   Can it automatically determine the beat?
5.   Why are labels/tooltips blank or redrawn improperly?
6.   Is there an easy way to remove all sound sources from a device?
7.   Why is GDAM complaining about not having "Group Audio"?
8.   How can I get low latency sound without dropouts?          


------------------------------------------------------


1.   How do I enable multiple devices with GDAM?

     If all of your devices are named /dev/dsp, /dev/dsp1,
     and/or /dev/dsp2 it is very easy:  just list them all as
     options to gdam-launcher:

     		gdam-launcher --device /dev/dsp1 --device /dev/dsp


     If one or more of your devices has another name,
     you'll have to modify `deviceswitcher*.xml' to 
     contain the appropriate list of devices.

     Find the section:

	<widget>
	  <class>GtkRadioButton</class>
	  <name>radiobutton3</name>
	  <visible>False</visible>
	  <sensitive>False</sensitive>
	  <can_focus>True</can_focus>
	  <signal>
	    <name>clicked</name>
	    <handler>gdam_device_switcher_select_device:/dev/dsp2</handler>
	    <last_modification_time>Wed, 02 Feb 2000 06:27:55 GMT</last_modification_time>
	  </signal>
	  <label>dsp2</label>
	  <active>False</active>
	  <draw_indicator>False</draw_indicator>
	  <group>device_switcher_group</group>
	  <child>
	    <padding>0</padding>
	    <expand>False</expand>
	    <fill>False</fill>
	  </child>
	</widget>

     And copy and modify it to meet your needs.

     Eventually we'll remove the xml file modification,
     for now you'll have to cope.


     Additionally you may have to add lines to your
     server.config:

            Device          "oss"           "/dev/dsp8"

     where /dev/dsp8 is the device you are trying to use.


2.   In what ways can gdam use multiple devices?

     With only one sound device, a user has no ability to cue a 
     new track. (ie listen to something which isn't played to the
     entire room.)  In this situation, all sound sources are 
     mixed into a single stream which goes to the device. 
     Continuous mixing can only be done using the automated 
     beatmatching system, which requires knowledge
     about each song used.

     With two sound devices, there are different ways to mix.
     The first method is to mix the room's sound on one device,
     and use the other channel for previewing new tracks, setting
     up loops and sequences, etc.  Streams are output to only one
     device, but which device can be switched on the fly.  This 
     allows the user to preview a song playing alongside the current
     mix, then mute it, switch devices, and fade it into the main
     mix.  However, be aware that sound output by the two sound 
     cards will most likely be slightly out of synch.  Thus, one
     will likely use the automatic beatmatching after switching
     devices.

     An alternate method is use an external, physical mixer to 
     crossfade between two sound cards.  One stream is assigned
     to each device, and new tracks are cued by making one channel
     audible only on the mixers' headphone output.  This allows the
     user to adjust the speed and position of each stream until
     they play in synch, and then bring up the room volume of the
     new channel.  Thus, songs can be beatmatched by hand,
     as with a standard dj turntable setup.  A benefit of this
     method is that beat info isn't required to get a clean 
     mix.  If beatinfo is know, it can be used to automatically
     beatmatch songs across devices.  However, the sound output
     by the two sound cards will likely be slightly out of synch,
     so the user will most likely need to nudge it slightly for
     perfect alignment.

     There is a further phase of device usage which we are working
     towards.  In this next stage, any stream can be output to multiple
     devices, with different volumes.  This will allow the user to 
     preview a copy of the room mix with a new stream audible only 
     to him.  This full cueing capability will allow beatmatching by 
     hand without an external mixer.


3.   How does the beat synching work?

     In short, beat synching works by relying on information about
     songs read from a database to automatically match the tempo and
     phase of multiple streams.  This information must be determined
     by a person at some point, probably using tools provided with
     gdam.  Beat synching is optional, to provide users instant, 
     perfect control over their favorite songs.

     see doc/beatmatching.txt for more information.


4.   Can it automatically determine the beat?

     No, we've never found an algorithm that was
     fast and accurate enough.

     We have a link to a paper by Eric Scheirer which
     is about the best starting point we've found...
     See gdam.org.


5.   Why are labels/tooltips blank or redrawn improperly?

     If the labels are drawing over themselves without
     erasing the old text, or tooltips are popping up without
     text, it is probably because you're using an early, 
     buggy gtk themes package.  Upgrade to the latest gtk 
     packages, see gdam.org for details.


6.   Is there an easy way to remove all sound sources from a device?

     Yes. 
            gdamcli -e silence
     will remove all sources attached 
     to the default sound device.  Other devices can be specified 
     with the --device flag.

7.   Why is GDAM complaining about not having "Group Audio"?

     In unix, every file and every process is owned by a "user".
     Also, every file is owned by a "group" and every process can
     be a member of a number of groups.  You can use the "groups"
     command to see which groups you are a member of.

     If you are in the same group or user as a file,
     you can change or destroy that file.  If you are in the same group
     as a process, you can `kill' that process.

     In order to be more secure, by default, GDAM "drops priviledges"
     and runs as user "nobody" and group "audio". 

     Your system is complaining because you don't have a group "audio".
     It is recommended you add one.

     To add the group run either (as root):
     	groupadd audio
     or
        addgroup audio
     If you do not have either of these commands you should
     consult your system documentation (you may have to edit /etc/group
     manually).

     You should probably add yourself to group audio:
        usermod -G audio your_username
     (You may have to modify /etc/group manually if you don't have that
     program).

     Finally, make the sound devices accessible to group audio:

        chgrp audio /dev/dsp*
        chmod g+rw /dev/dsp*

     This should help gdam run securely, even if you start it as root.

8.   How can I get low latency sound without dropouts?          

     Patch kernel, upgrade hardware.                             

