> On 5 Dec 2014, at 12:29 am, Tristan Brindle <[email protected]> wrote:
> 
> Alternatively, a few minutes of Googling has turned up that Mac OS has its 
> own high level sound playing API, coincidentally called NSSound[0], which has 
> a broadly similar focus. So it might be possible for GSound (or GTK) to use 
> NSSound on the Mac. I don’t know whether Windows also has a similar 
> high-level “just play this sound and I don’t care how” API, but I’ll do some 
> research.

It looks like the Windows equivalent is the PlaySound() function[0]. 

So I guess there are a couple of possible approaches if we don’t want GSound to 
stay as a separate library:

1) Make GTK/GDK or GIO depend on libcanberra, merge the GSound API there, and 
hope that DirectSound/CoreAudio Canberra backends get contributed. This may be 
tricky as libcanberra appears to be more-or-less dead upstream — there have 
been no commits to Lennart’s repository[1] for two years now (another thing we 
can blame on systemd ;-)).

2) Come up with an API that is the intersection of libcanberra, NSSound and 
Windows' PlaySound(), and add that to GTK/GDK/GIO. Off the top of my head, this 
might be something like:

    gdk_play_sound_for_screen(const char *sound_id_or_filename, GdkScreen 
*screen);
    gtk_play_sound_for_widget(const char *sound_id_or_filename, GtkWidget 
*widget);

where recognised sound id names would be the (very) short list of sounds that 
are approximately common to all three platforms. Custom sound files (for 
example sound effects for a game or whatever) would need to be WAVs, as this is 
the only format that can be played out-of-the-box everywhere. I think we’d have 
to lose the nice async functions that GSound has, because Windows and Mac don’t 
seem to give you callbacks when the sound has finished.

Any thoughts as to which one might be preferable?

Tristan



[0] http://msdn.microsoft.com/en-us/library/dd743680(v=vs.85).aspx
[1] http://git.0pointer.net/libcanberra.git/log/

_______________________________________________
desktop-devel-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Reply via email to