audiere | home (original) (raw)
Overview
Audiere is a high-level audio API. It can playOgg Vorbis, MP3,FLAC, uncompressed WAV, AIFF,MOD, S3M, XM, and IT files. For audio output, Audiere supports DirectSound or WinMM in Windows, OSS on Linux and Cygwin, and SGI AL on IRIX.
Audiere is open source and licensed under the LGPL. This means that you may freely use Audiere in commercial products, as long as you do not modify the source code. If you do modify Audiere and release a product that uses your modifications, you must release your changes to the code under the LGPL as well.
Audiere is portable. It is tested on Windows, Linux-i386, Cygwin, and IRIX with at least three major compilers. Most of Audiere is endian-independent, so I expect it would work with few modifications on other architectures.
News
2006.02.13 - Audiere 1.9.4 Released
It's been about two and a half years since the previous release of Audiere, and much has happened in that time. Here are the highlights:
- Replaced mpegsound with a stand-alone version of the MPEG audio decoder from ffmpeg's libavcodec library. The result is an MP3 decoder that is more portable and works with more MP3 files. MP3 files are now seekable as well. (Matt Campbell)
- Added Speex support.
- Added support for reading metadata tags from sample sources. So far, Vorbis comments are supported, as are ID3v1 and ID3v1.1 tags in MP3 files. Interface designed with help from Brian Robb and Andy Friesen.
- Added callback system for stream stop events. (Richard Schaaf and Chad Austin)
- Added CD audio support, using the MCI subsystem on Win32/Cygwin and libcdaudio on Linux. (Chad Austin and Richard Schaaf)
- Added MIDI support through the MCI subsystem on Win32 and Cygwin. (Chad Austin)
- Dramatically reduced the latency of the OSS device. (Matt Campbell)
- Rewrote the Resampler class to use DUMB's cubic interpolation resampler, resulting in much better resampling for devices such as OSS that use Audiere's own mixer. (Matt Campbell)
- Added bindings to wxWidgets. (Emanuel Dejanu)
- Fixed a bug in the DirectSound device implementation which significantly slowed down opening of devices and buffers. (Matt Campbell)
- Added pitchshift to the Python bindings. (Jason Chu)
- Split Doxygen documentation into one for users and one for developers.
This release also includes the usual slew of other bug fixes and minor improvements. For complete details, please refer to the change log.
2003.07.15 - Audiere 1.9.3 Released
Been six months since the last release...
- Replaced MikMod with an actively-maintained MOD decoding engine: DUMB (http://dumb.sf.net) Overall, the change is for the better, but there are a few important changes to be noted:
- fixed a crash in certain Impulse Tracker files
- mod looping now works correctly
- some previously-unsupported effects now work
- opening a mod stream now takes significantly longer, since DUMB builds up an internal seek table, which is currently unused
- playing mod files now takes roughly five times more CPU time than it used to
- DUMB works on big-endian architectures (such as MIPS (sgi) and PowerPC (mac)), where MikMod did not
- DUMB tries to match the exact behavior of the "official" trackers (that is, Impulse Tracker, Scream Tracker 3, and Fast Tracker), so some mods that sounded fine in ModPlug Tracker or Winamp (MikMod) may sound strange. For example, some of the Amstrocity remixes of Squaresoft songs have distortion caused by volume range clipping when played in DUMB.
- Added AIFF support.
- Added support for custom loop points via the LoopPointSource interface.
- SoundEffect objects in SINGLE mode no longer stream from the sample source.
- If a stream is set to repeat, then MOD loop points are honored. Otherwise, a MOD loop point causes the stream to stop.
- The configure script tries to link a small wxWindows application rather than trusting the existence of wx-config in order to find out if wxWindows exists.
- Made the FLAC decoder use libFLAC instead of libFLAC++. This makes it easier to compile on platforms with differing C++ ABIs, such as IRIX (MIPSPro CC vs. GNU g++).
- Removed the VC7 build system. It's out of date, nobody uses it, and they could just open the VC6 one in VC7 anyway.
- Added setRepeat() and getRepeat() to the SampleSource interface. This architecture change is required in order to support sample sources with non-standard looping functionality, such as loop points within MOD or AIFF files.
- Gave wxPlayer a crappy icon. A better one would be welcome. :)
- Fixed some unaligned reads in the MP3 decoder code, which caused Audiere on SGI/IRIX to crash.
- Fixed some edge cases involving small sounds, DirectSound streams, and the repeating flag.
- Added min_buffer_length device parameter to DirectSound device to prevent static in very small sounds.
- Fixed short bursts of periodic static while decoding MP3s. it appears to be a result of the Visual C++ optimizer interacting with the MP3 decoder code. (I can't claim that is an optimization bug yet... there could be some invalid aliasing going on in the code.)
- Fixed bug where resetting an MP3 input stream would emit a short burst of static.
- Fixed static between repeats in repeatable streams (thanks valgrind!)
- Fixed an exit crash on some systems by adding a CoUninitialize call to the DirectSound device destructor.
- You can now specify what format you are loading for efficiency reasons.
- Fixed a bug in the DirectSound streaming code where you would hear the beginning of some sounds before they actually stopped.
- Added getName() method to AudioDevice.
- You can now pass smart pointers straight into API calls, for example:
AudioDevicePtr device = OpenDevice();
OutputStreamPtr sound = OpenSound(device, "blah.wav");
sound->play(); - Added support for MemoryFile objects.
- Removed support for OpenAL because it was causing compile issues on systems with different and incompatible versions of OpenAL.
- No longer use the MTM or STM mikmod loaders because they crash on certain wav files.
2003.01.06 - Audiere 1.9.2 Released
Another release on the road towards 2.0... No reason not to upgrade!
Changes since 1.9.1:
- many general improvements to wxPlayer
- use __declspec instead of def files for mingw compatiblity
- build the winmm audio device in Cygwin if it's available
- build the DirectSound audio device in Cygwin if it's available
- greatly improved linearity of the volume property in the DirectSound device (Mik Popov)
- add support for audio device enumeration
- enable setting the GLOBAL_FOCUS bit on DS surfaces via the global= device parameter
- enable choosing nonstandard DirectSound devices via the device_guid= device parameter
- drastic performance increase when using MULTIPLE sound effects
- implement volume, panning, and pitch shift on SoundEffect objects
- improved latency of SGI audio device
- disable Ogg or FLAC if 'configure' can't find them.
2002.10.12 - Audiere 1.9.1 Released
This release is a good step towards 2.0, even though it still shouldn't be considered 100% rock solid. (It seems to work fine for me though, so go ahead and download it.)
Here is the list of changes since 1.9.0:
- added GetSupportedFileFormats for file format enumeration
- added audiere-config script which provides version information and external library dependencies
- finer synchronization granularity on DirectSound output streams for lower-latency OutputStream calls
- increase priority of Audiere update thread on all platforms but Win9x, which deadlocks
- MP3 support via splay's mpegsound (thanks to Chad Austin and Jacky Chong)
- read 10 MP3 frames for smoother playback on corrupt (?) files
- added ClassPtr convenience typedefs so people can use them instead of RefPtr
- the configure script outputs the URLs for required libraries if it can't find them
- FLAC support (thanks to Chad Austin and Jacky Chong)
- added the SoundEffect convenience class for simple sound playback
- added menu item to close wxPlayer so you can close child windows in wxGTK
- added pitch shifting to the OutputStream interface
- added square wave generation
- added white noise generation
- added pink noise generation
- updated wxPlayer
2002.09.07 (9:11 p.m. CST) - 1.9.0 Release Updated
That'll teach me from not testing on Linux before releasing... I have updated the download to include a very minor fix which allows it to compile on Linux. There was also a stupid mistake in the tutorial (fixed thanks to Ben Scott). If you downloaded 1.9.0 earlier, please download it again.
2002.09.07 - Audiere 1.9.0 Released
Finally, it's here! This is a major release, designed to get the new API tested before 2.0 is released. I would say 1.9.0 should be considered beta, but I feel it is so much better than the last 'stable' release (1.0.4) that there is no reason not to upgrade.
The following is planned for 2.0: 3D spatialization, FLAC support, MP3 support (again, this time using an LGPL library), supported file type enumeration, pitch bending and other DSP effects, AIFF support, and ADPCM compressed WAV support.
Here is what changed since 1.0.4:
- completely new API, defined in C++
- made Audiere objects reference counted
- support for seeking within WAV and Ogg Vorbis files
- support for preloading sounds instead of always streaming from disk
- updated Python, XPCOM, and Java bindings
- upgraded to Ogg Vorbis 1.0
- major performance improvement in DSOutputStream::isPlaying
- Ogg Vorbis decoder now works properly on big-endian architectures
- WAV reader works properly on big-endian architectures
- general support for big-endian architectures
- SGI AL (Audio Library) output support
- WinMM output support
- new SampleBuffer object for loading a sound once and playing it multiple times
- SCons build system for MIPSPro on IRIX
- interfaces now use __stdcall on Windows so they are more compliant with COM
- completely new wxPlayer
- fixed bug on Linux where, the more streams were playing, the lower the overall volume would be
- implemented the REAL fix for the DirectSound stream-repeating bug
- support for low-pass filters on .it files (enabled DMODE_RESONANCE in mikmod)
- readded stereo panning support
- switched volume to normalized floats [0, 1] instead of [0, 255]
- added a tone generator
2002.06.10 - Audiere 1.0.4 Released
Audiere 1.0.4 is out. This is a relatively minor release, but I highly recommend that users of 1.0.3 upgrade to this version. One thing to keep in mind is that I have removed support for MP3 playback. See theFAQfor the rationale behind this decision.
With the release of 1.0.4 came a "new" web design (copied fromCorona, which was, in turn, copied from SCons). Complaints? Praise? Send me e-mail.
Here is what changed since 1.0.3.
- fixed awful sound repeating bug
- removed MP3 support
- switched library completely to LGPL
- compiles on Debian
- compiles with gcc 3
- compiles on IRIX (no mikmod or audio output support yet)
- correct timing in null output driver
- major source tree restructuring
- --enable-debug configuration option
- added Doxygen support
- fixed noisy output in Linux
- removed Acoustique, moved decoder architecture into Audiere itself
- fixed isPlaying() in OSS output driver
- runs on NT4 again
- removed DLL output driver
- removed null output driver from default list (it must be explicit)
- fixed complete hang on context creation in Win9x
- support building without DX8
- several internal mikmod updates