Commit Graph

47 Commits

Author SHA1 Message Date
Joshua Jones 66a52d41dd Fixed a bug that would cause an exception when unregisterAllEventHandlers was called. 2010-02-14 23:33:10 +00:00
Joshua Jones 17aa93f57c Added ability for users to access the plugin manager.
Added plugin for legacy EAX presets.
2010-02-14 23:16:44 +00:00
Raynaldo Rivera cb9ae7a72c Added tutorial 6 shows how to use a custom event handler as well has removed OnInit from the audio source events. 2010-02-14 22:54:19 +00:00
Raynaldo Rivera aae976f3e4 added the damn .close() 2010-02-14 22:09:15 +00:00
Raynaldo Rivera 7d782233c0 Removed the dumpMessages() function made it to act like the console logger. 2010-02-14 22:04:30 +00:00
Raynaldo Rivera 0c0a8d12ac Added the file log receiver and also added the dumpMessages() function to the ILogger class. 2010-02-14 17:08:16 +00:00
Joshua Jones b096f1536b Rework of plugin system. Now works better with static linking. Plugin makers are now expected to pass back a fully implemented version of IAudioPlugin for cAudio to use. Create your plugin class with new, cAudio will call drop() on it on unload of your dll.
The MP3Decoder plugin has been updated for the above changes.
Removed the shim that used to exist between dll plugins and the manager.
2010-02-14 05:34:57 +00:00
Joshua Jones f69d925b4f Added ability to add effect presets. 2010-02-14 03:32:24 +00:00
Joshua Jones 3f06749573 Minor API changes to the manager, release is now releaseAllSources, createFromFile is now create.
Added the ability for the user to provide a DataSourceFactory, which cAudio will use to get audio data.  This interface can be overridden to provide cAudio the ability to read from zip archives, TCP streams, potentially any location.  DataSourceFactories can also be prioritized.
Made the existing FileSource a factory and registered it by default with the manager.  If the user wishes to prevent cAudio from reading from disk, unRegister the "FileSystem" data source.
Made tutorials conform with the changes to the API.
2010-02-13 05:48:19 +00:00
Raynaldo Rivera 08800c5bad Added the event system 2010-02-13 04:47:59 +00:00
Joshua Jones 16f222c8a5 Changes to make sure undefining decoders and EFX actually removes all pieces of them. 2010-02-13 02:34:50 +00:00
Raynaldo Rivera f0a5c7411d Added support for adding custom data sources. using registerSource(const char* , IDataSource*) createFromSource(const char*) isSourceRegistered(cont char*) unRegisterSource(cont char*) 2010-02-11 15:29:40 +00:00
Raynaldo Rivera b317412796 changed the IAudio objects and cAudio objects to IAudioSource and cAudioSource 2010-02-10 21:57:09 +00:00
Joshua Jones fbd3ecabb4 Added version checking to plugins. 2010-02-10 04:59:10 +00:00
Joshua Jones 48d264d0be Added a pass in for the logger to plugins, so they don't need to link with cAudio.dll to access logging capabilities.
Fixed a bug that prevented cAudio from getting plugin symbols correctly.
Fixed a bug where cPluginManager would be constructed multiple times.
2010-02-10 04:46:00 +00:00
Raynaldo Rivera e5d91053eb 2010-02-09 06:08:46 +00:00
Joshua Jones 3043f5d4d5 Added plugin manager and plugin system to cAudio.
Started work on an mp3 decoder plugin.
Conflict fixes to earlier commit.
2010-02-09 05:58:27 +00:00
Raynaldo Rivera c261339e57 2010-02-09 05:33:32 +00:00
Raynaldo Rivera 1e914b9796 2010-02-09 04:18:39 +00:00
Joshua Jones 4e5dcd3443 Added support to remove a single audio source. 2010-01-19 04:04:40 +00:00
Joshua Jones 30e5b4a99e Added support for all OpenAL Audio Effects. Access can be gotten through the main audio manager using the AudioEffects interface. IEffect provides access to effect parameters and allows for binding to cAudio sources. IFilter provides access to filters that can be attached to sources and effects.
Added conversion functions from our audio format enum to OpenAL's in preparation for supporting more formats.
Reorganized cAudio defines, made it easier to access some compile time parameters.
Fixed a bug where a source could not be played again after it reached the end of its audio stream.
Added better checking for sources.  IsValid() should provide a more useful indication of whether a source is usable.
Added error checking and logging to cAudioCapture.
Prevented initializing of cAudioManager until shutdown() has been called.
Added a tutorial for Audio Effects.
Added a footsteps sound for showing off Audio Effects.
Moved the default compile location for the main library to lib/.  The msvc project will copy the cAudio.dll to bin/win32-visual/
2010-01-11 00:39:08 +00:00
Joshua Jones 2132eea8bf Added a small spreadsheet with performance information
Changed the 3d tutorial to use the move convenience function in order to have proper doppler effects.
Added relative seek ability to cAudio source.
Updated decoders to have a flag if the data they are working with is valid for their decoder (isValid).
Added reference counting to IAudio, IAudioDecoder, and IDataSource
Added better error checking in cAudio sources and they will do a better job of detecting if they are invalid.
Fixed the spelling on cWavAudioDecoderFactory.h
Ogg decoder support for the isValid check.
Time seek ability added to cRawDecoder
Rewrote cWavDecoder.  It will now read slightly malformed wav files (and conforms to the wav spec), no longer has a bug where 8 bit mono audio samples will play twice as fast as 16 bit mono samples, proper bounds checking to make sure only the audio data is sent to the audio source, and time seeking abilities.  The decoder does not support channels over 2, compressed wavs, wavs with more than 1 data or fmt block, or any other blocks that may be present in a wav file.  All unsupported blocks will be ignored.
2009-12-07 22:25:08 +00:00
Joshua Jones 4c76942a7f Changed IAudioManager to no longer use std::strings in the main interface. It now uses const char* strings. The reason this change was made was to make porting to other languages, or even use with other string libraries easier. std::string is no longer required to interface with the library.
Added a convenience function (move()) to the cAudio source, making it easier to move a source and do velocity for doppler effects with a single call.
Internally, audio sources are now stored in an std::vector for better performance.  This change also makes it so that it is no longer required for the user to name a source.  The user can pass NULL to name to avoid naming it.
Some documentation fixes.
Added a stress test app, allowing users and developers test how well cAudio performs under pressure.
2009-12-01 01:41:15 +00:00
Joshua Jones e1bf4ecc9a Updated the examples to use a better set of characters to denote the default device
Removed an unnecessary include in cAudioManager.h
Added a define to set the number of buffers used by an audio source
Added the last of the previously unsupported OpenAL source parameters (Cones, attenuation tweaking, max/min volume, and rolloff factor)
Cleaned up the implementation of cAudio source.  It no longer keeps a redundant copy of the state information and functions are now in order that they are defined.  Some functions have been renamed to be clearer.
Other changes throughout the code to support the changes to the cAudio source.
2009-11-28 03:58:24 +00:00
Joshua Jones cd1a2a61d9 Increased buffer size for audio sources from 32k to 64k.
Changed song used by Tutorial1_2DSound.
Added some comments.
Changed cVector3 to use a custom Episilon instead of including float.h (less bloat)
Added debug log entries to cAudio
Allowed cOggDecoder to return error values from decoding.  cAudio now handles those errors a little better.
2009-11-21 00:39:46 +00:00
Joshua Jones 0df02507dc Added some missing files. Included is a default log receiver that pipes the information to the standard out stream (Console). 2009-11-20 03:42:20 +00:00
Joshua Jones 6b3e9c5a9d Moved sample sounds to a media folder and removed the copy of bling.ogg from bin
Updated logger to allow a user to create callbacks to receive log messages
Logger also gives more information, time the message was sent, the source, the importance, and the message itself.
User can now query playback devices and specify the device for the audio manager to use.  The audio manager is no longer a singleton, although creating multiple managers is not advised.
Clean up and optimization of manager initialization code.
IAudioCapture can now be told which device to capture audio from.  The user can also create multiple IAudioCaptures to capture audio from multiple sources at the same time.
Added additional error checking.
A seperate thread is used to capture audio now.
Defines added to allow a user to remove support for default codecs.
2009-11-20 03:39:56 +00:00
Raynaldo Rivera aabf6b9306 2009-11-15 17:11:38 +00:00
Raynaldo Rivera 973bd33e5a Added basic logger logged cAudioManager.cpp 2009-09-12 05:59:28 +00:00
Raynaldo Rivera e3baec7932 Added a "getSource()" function that returns a openal source 2009-09-03 03:23:58 +00:00
Raynaldo Rivera 8b1019a98b added a CAUDIO_EAX_ENABLED flag to cAudio Defines and enabled EAX 2009-09-03 03:00:03 +00:00
Joshua Jones 75ece68dcf Added cross-platform Mutex and Thread classes.
Made cAudio, cAudioCapture, cAudioManager and other classes thread safe.
Made cAudioManager use a seperate update thread by default.
Added cAudioSleep, a cross-platform sleep() function
Moved global defines to cAudioDefines
Added defines to disable thread safety or the internal update thread if the user wishes it
Updated tutorials to reflect the changes made
2009-08-29 11:24:31 +00:00
Raynaldo Rivera c00f6bfc6e Got rid of the alut dependence and also corrected both visual studio and codeblocks project to realize change. 2009-08-26 23:46:18 +00:00
Raynaldo Rivera 198124c988 Correct const use. 2009-08-26 03:06:36 +00:00
Raynaldo Rivera 93e36c4a03 Updated tutorials to use cVector3 and the new getListener function 2009-08-26 02:55:02 +00:00
Raynaldo Rivera 4db524e400 Added all needed get functions. 2009-08-26 02:19:58 +00:00
Joshua Jones bcf890f125 Changed the return of IAudioCapture::getCapturedAudio to return the size of the data copied to the output buffer instead of void. 2009-08-26 01:43:45 +00:00
Raynaldo Rivera 148e6af912 Broken interfaces 2009-08-26 01:16:40 +00:00
Raynaldo Rivera 40737aff51 Added correct cased file name 2009-08-25 23:59:10 +00:00
Raynaldo Rivera a411f5d12d Deleted cwavdecoder 2009-08-25 23:58:37 +00:00
Raynaldo Rivera 1d677cbce1 Added correct file endings and renamed cwav to cWav and eAudio to EAudio 2009-08-25 23:56:35 +00:00
Joshua Jones 0c3df1d430 Added audio capture capabilities. The user can now get an interface for audio capture from cAudioManager and record audio from the default recording device.
Added a raw audio decoder, allowing raw audio to be played if the format and frequency is known.  Will also load from .raw files on disk, but will assume the format is 16 bit mono and the frequency is 22050 hz
Added a tutorial to show how recording and playback can be done.
Added the ability for the user to unregister audio codecs that they will not be using.  Also added methods to test for the existance of a decoder and get the decoder factory back.
Moved cVector3.h to include instead of Headers to make using it in user projects easier (one less include path)
Moved the audio format enum to its own header file.
Small fix in the wav decoder to prevent the file header from being played as audio data.
2009-08-11 17:57:20 +00:00
Joshua Jones 28a22c7f73 Fixed problem with the msvc project not outputting a .lib file.
Updated tutorials to fix minor bugs and pathing issues.  Also fixed crash bug on failure to create the audio object.
Added msvc projects for all tutorials.
Updated the listener class to be self contained and only handle stuff related to the OpenAL listener.  It does NOT init OpenAL anymore, that has been moved to cAudioManager.
Extended the listener class to support all settings that native OpenAL supports.
Cleaned up cFileSource and fixed a crash bug on NULL file handle
Fixed returning bad audio buffer chunk sizes from the cOggDecoder on errors in the ogg stream
Seeking can now be down in fractions of a second now, changed the seconds field from int to float
Fixed various odd formatting.
Fixed potential crash bug in cMemorySource if memory could not be allocated.
cMemorySource will no longer clear the buffer you give to it before filling it with data.  This prevents an overwrite from happening in case of error but the user should provide a zeroed buffer to cMemorySource anyway for safety.
Relative seeking is now supported by cOggDecoder.
2009-08-08 05:51:32 +00:00
Raynaldo Rivera ea195bce4d Add visual studio project files 2009-06-21 17:21:38 +00:00
Raynaldo Rivera 65db7abebe Added small fix to make setPitch() use a float instead of the int it was using 2009-06-21 03:28:40 +00:00
Raynaldo Rivera deeecd0624 Add small fix to allow audio files that are shorter then 1 second to be played. 2009-06-21 03:27:29 +00:00
Raynaldo Rivera 9cac8153da 2009-06-21 03:24:30 +00:00