Boost logo

Boost :

Subject: Re: [boost] GSoC 2014
From: rasmus ekman (re_at_[hidden])
Date: 2014-01-04 14:39:17


On 2014-01-02 19:41, Bjorn Reese wrote:
> Here is another idea.
>
> Audio library: Provide primitives for playing audio using an Asio-style
> API. Initially it should be limited to the functionality of OpenSL ES
> [1], but with the possibility of extending it to the OpenMAX suite[2].
>
> [1] http://en.wikipedia.org/wiki/OpenSL_ES
> [2] http://en.wikipedia.org/wiki/OpenMAX_AL
>

Audio library, yeah, sure!
But absolutely NOT modelled on these libraries.

Audio interfaces that limit programmers to playing prerecorded files
are useless for most music applications.
(Also, did you *look* at the API:s? Piles of overdesigned dross)

Anyway, such a project would be doable for a single person, but not sure how exciting conceptually.
The interface can be very simple. You basically need to
* match client settings with existing capability (ie sample-rate, output data-type),
* register a callback function with the underlying system, and
* wrap the start/pause/stop functions.

The trickery lies in
* getting the implementations right across several slightly different underlying systems with different quirks.
* making start/stop threadsafely robust wrt client code.

Does this fit the scope of GSoC projects?

Where to go to get a head start:

RtAudio is an audio playback/recording with a simple interface that could serve as starting point:
http://www.music.mcgill.ca/~gary/rtaudio/

The interface could be improved in some ways (I'm using it in a wrapper that I'd be happy to share).

The PortAudio library covers more systems, and is more widely used.
http://www.portaudio.com/

(but to me it has not provided the right combination of functionality and interface simplicity, so no experience)

The necessary knowledge about underlying audio systems is present in the two libraries mentioned.
They both cover ASIO, ALSA, MacOS, and several Windows systems
(PortAudio supports a couple more than RtAudio, but they may be actually obsolete by now).

I'd be interested in contributing in any useful way (discussion, review etc - with my decent coding but limited design skills).

- rasmus


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk