Menu

Tree [r55] /
 History

HTTPS access


File Date Author Commit
 common 2006-10-16 overtime [r53] better Makefile \& better dock placement
 data 2006-10-16 overtime [r53] better Makefile \& better dock placement
 doc 2006-07-18 overtime [r1] initial import
 m4 2006-07-21 overtime [r16] the applet is there
 pkgconfig 2006-07-19 overtime [r6] it was nice to put some icons
 po 2006-10-16 overtime [r53] better Makefile \& better dock placement
 src 2006-10-16 overtime [r53] better Makefile \& better dock placement
 tests 2006-08-26 overtime [r51] cleanup
 AUTHORS 2006-07-18 overtime [r1] initial import
 ChangeLog 2006-10-16 overtime [r53] better Makefile \& better dock placement
 Makefile.am 2006-10-16 overtime [r53] better Makefile \& better dock placement
 NEWS 2006-11-17 overtime [r55] test
 README 2006-08-26 overtime [r51] cleanup
 autogen.sh 2006-10-16 overtime [r53] better Makefile \& better dock placement
 configure.ac 2006-10-18 overtime [r54] dbus-glib fixed upstream, tiny hack to make it ...
 intltool-extract.in 2006-08-08 overtime [r31] bug fixes
 intltool-merge.in 2006-08-08 overtime [r31] bug fixes
 intltool-update.in 2006-07-28 overtime [r23] s/fakesrc/audiotestsrc
 todo 2006-08-21 overtime [r49] better class policy, settings sync with gconf

Read Me

GSmartMix is a smart audio mixer for GNOME.
(see http://live.gnome.org/GSmartMix)

* Description of the elements

  - libgsmartmix (src/gsmart-dbus-helper)

     Provides common DBus objects for handling client/sink & server/manager
     over DBus with automatic registration and proxy methods

  - gsmart-manager (src/gsmart-manager)

     Handles the registration mechanism & manage the sinks.
     It provides  its own  mechanism to adjust  the sound  volume with
     class parameters (currently  not really implemented, more details
     later). 

     This manager is needed to have a working GUI or applet, because
     it is the only service who knows the sound sinks that are 
     currently available.

  - gsmart-gui-manager (src/gsmart-gui-manager)

     A widget-test application that will soon feature the class settings.
     Basically, it does what the applet provides too.

  - gsmart-mixer-applet (src/gsmart-mixer-applet)

     A GNOME panel applet to manage the volume of applications.
     It is based on the well known mixer applet, and thus should
     provide at least the same functionnality with the enhancement of
     GSmartMix control too.
  
  - gsmartaudiosink (src/gsmart-elements)

     The GStreamer sink element that implements a sound sink.
      
* Dependencies						
				libgsmart Manager Sink GUI  applet
  - libglib		2.8	     x       x     x    x     x
  - libgobject		2.4          x       x     x    x     x 
  - libgthread		2.4          x       x     x    x     x     
  - libgst		0.10                       x          x
  - libdbus		0.35         x	     x     x    x     x
  - libgconf		2.0                  x          x     x
  - libgconf-bridge	0.1                  x          x     x
  - libgtk		2.0.0	                        x     x
  - libwnck		2.12.0	             o                x
  - libpanelapplets	2.13.4	                              x
  - libgnomedesktop	2.11.1	                              x
		
NB: all this libraries are required to compile the package yet.
NB2: libgconf-bridge is a tiny wrapper for gconf that sync with 
gobject: grab it at http://projects.o-hand.com/libgconf-bridge

* Source code

You  can  get  the  bleeding  edge source  code  from  the  Subversion
repository by typing:

 $ svn co https://svn.sourceforge.net/svnroot/gsmartmix gsmartmix

* How to start playing with sounds

First  of all,  make sure  you have  least the  -dev  required package
installed on your system. Go  into the GSmartMix source directory, and
type: 
    $ ./autogen.sh
   You can override default configuration, for example:
    $ ./configure --enable-more-warnings --prefix=/usr/local 
   Then,
    $ make
    $ sudo make install

Make sure that you have set GST_PLUGIN_PATH to your $prefix directory:
GST_PLUGIN_PATH="/usr/local/lib/gstreamer-0.10:/usr/lib/gstreamer-0.10"

If everything has gone properly, you  should now be able to check that
gsmartaudiosink is installed by launching:

    $ gst-inspect gsmartaudiosink
** Message: no mixer, listen to NameOwnerChanged
Factory Details:
  Long name:    GSmartMix audio sink
  Class:        Sink/Audio
  Description:  GSmartMix Audio sink (alsasink as default output)
  Author(s):    Marc-André Lureau <marcandre.lureau@gmail.com>
  Rank:         none (0)
...

And then try this:

    $ gst-launch audiotestsrc ! gsmartaudiosink

If you have some problem to hear a sound, then you might want to set a
sink  instead of  the default  alsasink.  For  that, you  can  use the
"sink-description" property:

    $ gst-launch audiotestsrc ! gsmartaudiosink sink-description="pulsesink" 

Now, it's  time to update the  gconfsink with a  custom pipeline.  For
that, run  `gstreamer-properties` and edit the custom  output with the
gsmartaudiosink  line that you  have set  with gst-launch.   Make sure
that "Test" is still working.

Now, you can run the sound manager in the background:
    $ gsmart-manager &

Or let D-Bus  run it automatically for you instead if  you have a dbus
service search  path containing the directory  where gsmart-manager is
installed.   For   example,   if   $(prefix)   is   /usr/local,   then
/etc/dbus-1/session.conf should have this line:

    <servicedir>/usr/local/share/dbus-1/services</servicedir>

Install   the  GSmartMix   applet   as  usual   (it   will  be   under
$prefix/libexec).   It  might   help  to   add  this   line   of  your
/etc/bonobo-activation/bonobo-activation-config.xml file:

    <item>/usr/local/lib/bonobo/servers</item>

if you have $(prefix) set to /usr/local.

Of course, you will  have to add it manually to your GNOME panel.

Now you can  start any GNOME application using  GStreamer audio output
and enjoy the control of sounds. One day, there will be control of any
sound source thanks to PulseAudio.

In a near  future, there will be additional material on  how to set up
the smart feature easily.


FAQ
===
 
 * Supported Applications
(evaluation of each of these application is needed, with comments)

		CREATION	VOLUME	BEHAVIOR	STATE CONTROL	UI REFLECT	PATCH NEEDED	CLASS REGISTRATION  COMMENT

Rhythmbox	sink/file	guessed bad		yes		no		small		(Music)
Totem		sink/file	auto	bad		yes		no		small		(Video)		    the volume element is added to the pipeline after GSmartSink 
Sound Juicer	sink/cd(good)	guessed	good		yes		yes (except vol)very small	(Music)
Gaim		x		x	x		x		x		libgnome	(Event)		    don't use GStreamer
Ekiga		x		x	x		x		x		big		Chat/Event	    don't use GStreamer
Listen		sink/file	guessed	bad		yes
Muine		
Banshee
Telepathy		
Countdown

 * What is the relation with gconfaudiosink ?

This GStreamer GConf element purpose is to deal with the GNOME desktop
settings.   With this  key, you  can  set GSmartSink  has the  default
sink. It  will soon be enhanced  to support 3 sound  classes (in CVS):
chat,  music, video.   Each  of these  keys  can be  set  in order  to
describe the sound class:

-> gsmartaudiosink class="Music"
-> gsmartaudiosink class="Video"
-> gsmartaudiosink class="Voice"

 * Session or system wide ?

gsmart-manager  has  been developped  and  tested  with sound  session
management in mind.  The issue to make it system wide will be adressed
later.

 * How do you compete with the sound accessibility requirements ?

Much  of the difficult  requirement for  GSmartMix is  to have  a good
latency between  orders and  sound effect (if  you mute the  sound, it
should be effective quickly). The other problem is related to a system
wide management.  The solution might  be to use PulseAudio has backend
for  stream control (that  would need  some communication  between the
GstPulse sink and a future dbus-enhanced sink in PulseAudio).

Another request expressed by some people is to use Orbit instead of
D-Bus. It might become to be a compilation option after SoC, and if
it still necessary (especially for latency and system wide concerns)

 * How are treated exported $DISPLAY applications (or over a network)?

This  will be  one of  the GSmartMix  challange with  PulseAudio sound
daemon.