GSmartMix, a GNOME Google SoC idea

Name: Marc-André Lureau

Email: marcandre.lureau <at> gmail.com

Project: GSmartMix

Benefits to the Gnome community: much less headache when listening computer sounds

Deliverables:

  • a clever GStreamer audio sink that communicates with a DBus server

  • a dbus server that orders sinks slaves to shut up or fade in (it's not a software audio mixer, or a networked sound server)
  • a UI that control volume meter of application's instance and edition of policies (or a metacity integration ?)

Other contributions (these are not the aims of the project):

  • if we want this project to be fully part of the Gnome desktop, one have to deal with the old ESound debacle and use GStreamer instead (see recents flames threads on gnome-multimedia mailing list). This part of gnome seems really sensible to some developpers. But the move has been stepped thanks to Ian Burell work.
  • Some accessibility cases may also be handled by GSmartMix (text-to-speech...)

Project schedule: 3 months starting from Google admission

Mentor: StefanKost (ensonic)

Blog: http://gsmartmix.blogspot.com

Proposal

I have a dream. I also have 5 senses. Gnome, which is the smartest desktop I know, attracts me with my sixth sense. And the others: I see the wonderful themes, gnome's design and its hig are a matter of taste, I can stay in touch with the great planet-gnome hackers, and I can smell like a teen spirit in every contributors. But, my ears are still a little bit disappointed when an application starts an unexpected sound agressively. My dream is to offer the smartest auto-control of sounds that has never been done or hear before.

Why ?

Because,

  • I use free software since my early 10 and I owe this project for the services and my fondness of open source
  • I would like to introduce something new and clever for the desktop
  • I started to think about this idea when I was discussing and testing gshrooms, a successful music sharing project of the last Google SoC and I decided to wait until the 2006 edition

Why me ?

It's an idea I want to develop. I believe that I have the required "gnome programmer" skills. It's my sole Google SoC application.

About me

I have an Engineering Degree from EPITA (french IT school), where I also taught C/Unix programming. Today, I study for a Master Degree in Manufacturing Management from UCO Bretagne Nord, a french university. In the field of open source experience, I did not invest much time until now. I am a french translator for anjuta, dia, ontv and a few more are coming (libgda, libgnomedb...). I have worked for Nec Computers in Angers on a proof-of-concept multimedia distribution based on sources (a la lnx-bbc). I am also an official reviewer of the wxWidgets book of Julian Smart. I like digging into source code of free projects.

Details

Generally, you don't want to hear music with video (interclass policy) or two music player at the same time (intraclass policy)

Provide a "gstreamer audio sink" talking to "a dbus server" that controls sinks according to class policy

  • mutual exculsion, lifo, fifo
  • volume level, with fading

Each application is registered in a class of policy. Each instance of application can override it's class parameters, and state, by a manual change in a UI.

A class could be: music, video, desktop, browser, voice, alarm, default...

This project of sink will be integrated in gnome (applications using gstreamer) seamlessly since it's just the default sink that would be changed. Usage of ESound is still an issue in this case, and I will try to help gnome to drop esound definitively (see gnome-multimedia threads).

http://ramnet.se/~nisse/diverse/temp/gnomelovelogo.png

And yeah, I must confess, it's because I 'love' gnome !!!

Schedule

- Overview (these readings will probably slow the beginnings of GSmartMix)

  • gconf, gobject, dbus, gstreamer, gtk+ (for ui) docs
  • esd vs gstreamer debacle discussions (on irc, ml, libgnome bugtrack)

- Technical specs validation (with a mentor)

  • technology choices, architecture client/server. For example, I think it is the client responsability to handle mix events and to modify its output accordingly
  • first dbus interface definition
  • audio intelligent mixing features freeze (lifo/fifo/fade...)
  • discussion and spec of logical/state machine behind (class and relation)
  • dbus interface definition mostly freezed

- Gstreamer audio sink (or intermediate element)

  • devel. identity element or null sink that calls a dbus interface
  • answers to dbus server's orders (volume level, mute on/off, fade in...)

- DBus server

  • unit test framework
  • implement logical/state machine behind the smart feature and read the properties somewhere in order to send wanted order to sink slaves.

- UI for preferences and manual volume meter

  • manual mix of instances of applications using GSmartMix
  • preferences of the logical aspects behind the smart mix feature

Quotes, support

ds is David Schleef from GStreamer

<ds> elmarcoo: I'm sure such a project could be arranged
<ds> (especially if you care to tackle it in conjunction with the sound server debacle)
<elmarcoo> ds: whoo! that would be great
<ds> fwiw, I've wanted similar things for a while
<ds> for example, I would like music to be "background"
<ds> and if anything starts in the foreground, such as totem or ekiga, it should automatically quiet the background
<elmarcoo> ds: that's the idea
<elmarcoo> ds: but it's clear that a discussion on feature to bring has to be done before
<ds> elmarcoo: sort of
<elmarcoo> ds: but the design of mixer or sink with dbus could be done in the same time
<ds> elmarcoo: the discussion generally revolves around "how to replace/fix esd" instead of "what problems do we have and how to we solve them (without esd)"
<ds> prx: if you installed to /usr, then it should just work
<elmarcoo> hmm... I don't know much about esd problem, I know that gnome still stick to it
<elmarcoo> (more or less)
<ds> yeah. because a) nobody uses it, thus b) nobody cares
<elmarcoo> and that is a goal for the next release to support gstreamer by default
<ds> well, sort of
<ds> the goal is to increasingly sideline esd

ensonic (StefanKost) uses and contributes GStreamer since about two years:

<ensonic> elmarcoo, sounds good, indeed everyone wants to do this, i have also a similar idea in my ideas-folder :)
[...]
<ensonic> elmarcoo, my ideas are in http://webcvs.freedesktop.org/gstreamer/gstreamer/docs/random/ensonic/media-device-daemon.txt?view=markup

RonaldBultje is working on a lot of gnome-multimedia related stuffs:

[...]
I believe that it would bring an important new feature to the GNOME desktop.

Outreach/SummerOfCode/2006/GSmartMix/Proposal (last edited 2013-12-03 23:47:02 by WilliamJonMcCann)