On 2012-03-20, Pierre Abbat wrote: > I'm writing a program that generates sound samples at (theoretically) 44100 Hz > and writes them to a .wav file, which I then play with xmms. How can I hear > the > sound as the program generates it? Can the same code work on both DFly and > Linux? > > Pierre
For the simplest (except when it comes to running it on Linux) solution, look into the <sys/soundcard.h> API - the basic, common OSS interface which is pretty much a de-facto UNIX standard outside Linux; a program written using it will for instance Just Work on all BSDs. It can also work on Linux *if* you either install OSS v4, replacing ALSA - or get the OSS emulation for ALSA to work. Using the OSS API is basically just opening /dev/dsp as a file, doing some initial sound setup (sample format, number of channels, sample rate) and then writing the samples to it. There are examples to be found by Googling. Then I have one of my own (sgensys.c in the present snapshot release) here: http://download.gna.org/sgensys/ A "real" cross-platform solution (ie. working on standard Linux distros out of the box) would have to either: 1. Implement OSS as above, but also implement ALSA and instead use this by default when built on Linux. Or: 2. Instead use a cross-platform library or other abstraction layer - any with a functional sound API should basically do the job - which is perhaps simpler than #1 at the cost of a dependency. -- Joel K. Pettersson