That's right, no /dev/audio on the Mac, nor /dev/dsp. At least, not installed by default...
I can understand Apple wanting all sound apps to use QuickTime or such, if only to have them stand in-line for the sound card. But that's the story of the Mac, right from 1983. I don't remember where I found out about afplay --some self-help group I think. Maybe it was Pogue. Using a Mac for Unix devt is a bit like buying a Rolls Royce to haul a trailer. Apple lets you do it -- like running Windows (if you're that perverse ;) -- and even helps you if you know where to look. But it all comes with a (mental) health warning. The Snow Leopard CDROM comes with lots of optional stuff, that you have to know is there and ask for explicitly, like the "Developer" folder. I'm told there's a load of deprecated / obsolete drivers on it too, but I haven't gone looking for them yet. I wouldn't be surprised if dsp and audio were there. On Thu, Jul 14, 2011 at 1:00 AM, <[email protected]> wrote: > Stefano Lanzavecchia wrote: > SL> Ian, as far as I know, under most Uni*s you can simply write binary data > to > SL> /dev/audio and it will play > > That's the spirit, Stefano! See below how three lines of J will do the job. > > SL> Then there's /dev/dsp (http://www.opensound.com/pguide/audio.html) and I > SL> don't know enough to tell you the difference between /dev/audio and > /dev/dsp > > As your link explains, /dev/audio will expect samples at 8kHz in > 8-bit U-Law encoding (as originally devised by SUN), whereas /dev/dsp > takes the simpler linear encoding. (The original SUN /dev/audio > from the 80ies and similar devices from other Unix workstation > vendors were for very simple DAC/ADC hardware and pretty fixed. > The OSS OpenSoundSystem driver is highly configurable using > ioctl(2), and different /dev/whatever devices provide just > different pre-configurations.) > > SL> I don't know if MacOSX is Uni* enough to come equipped with those > SL> devices in its filesystem... > > I have OSX running here, too, and so far it appears to me that Apple > has done away with those marvellously simple device files and > replaced them with some huge API. If Ian has the XCode Developer > kit installed, he can point his browser to the result of > > locate CoreAudio/index.html > > and waste some weeks on reading C and Java APIs for sound. > (I didn't know about afplay(1), it certainly isn't standard > across Unix systems. Thanks for making me aware of it. > It didn't show up with a "man -k audio" -- booo, Apple!) > > Having said all this, the following works on my Linux and *BSD > systems: > > NB. How to beep at 194.18 Hz for one second, > NB. using J, the OSS /dev/dsp device, > NB. and no freaking J/system library whatsoever. > > NB. /dev/dsp uses a default sample rate of 8 kHz. > NB. That is, for a one second second beep, we need to > NB. compute 8000 samples. > > NB. We'll sample a sine wave at 194.18 Hz over 1 second. > NB. Or in other words: our x axis covers 194.18 radians, > NB. and we'll choose our 8000 sample points from that range: > > x =: (194.18 * 2p1) * (%~ i.) 8000 > > NB. /dev/dsp expects an "8-bit unsigned linear" encoding of > NB. the signal. > NB. That is, we'll have to map our _1 to 1 sine wave amplitudes > NB. into the 0..255 range (for maximum blast): > > samples =: <. 128 + 127 * 1 o. x > > NB. Lastly, we convert the shifted values into bytes (characters) > NB. and write those to the dsp device: > > (samples { a.) 1!:2 <'/dev/dsp' > > NB. Done. Martin Neitzel > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
