To do list
Starting with libgaudio-1.6...
-Updated code to work with libsndfile 1.0.5
-Modularized each function for OSs that support tool libraries
-Added initAudio() and freeAudio() functions to allocate the
structure as different compilers may not pack the struct the
-Added support to init the audio player with different sample
bit depths, and channels (stereo, mono). Added support for
setting max number of playing channels and max number of cached
at init time.
-fixed bug in player thread overflow functions (la,lb)
-Changed struct pointer to void type for 8 and 16 bit support
-Added return value to playBackground for success/failure
-Added user arguments to playBackground
-Minor optimizations to playthread.
-Added registerSample() function for samples already in memory
-loadSample...() now converts between bit depths and
-Added getSystemInfo() call to get OS and Hardware info
-Added getAudioInfo() to get info about audio device
-startAudio/InitAudio can be told what size the play
be or can let the system set the best size based on
(maestro under Linux doesn't work that great- better to
-Added testLatency() call to check playback latency...
buggy in Linux.
-Debugged thread functions for 8-bit mono and stereo.
-Test program added: testregister
-copySample() routine now converts format
-All printed output can now be disabled with define:
-Added ctrlDevice() to effect master device parameters
-Changed ctrlSample() to a tag list format (...)
-Added suspend() and resume() functions.
-Removed old licensing code
-Library named: libsssd (Simple Sound for Small Devices)
-Added blockUntilComplete() function
-Added hello_world_sssd.c example program
-Started new documentation
-Changed method of sample loop counting to work better
-Added 'flags' argument to playBackground
-Defines to support different bg music file types
(MP3, OGG, MOD)
-Flag to make BG music loop
-Base documentation finished
-Added OS flags to sssdaudio struct and
defines in sssd.h (mainly for AmigaDE)
-Added support for loop in-out points
-Added support for sample start and end points
-Changed playSample to a macro for playSamplePP
(routine to play plus parameters)
-Added functions to ctrlSample to change playing and
looping in/out points
-Added placeholder argument for play to assign
sample to queue or give priority
-Added placeholder vars to playing struct to assign
queue management system or priorities.
-Tested better mixing algorithm. CPU usage
unchanged, quality better. Only works with mono mixer right now.
-Broke ERR_HARDWARE_PARMS into separate error codes
for each setting parameter.
-Changed last argument of load, copy, and register
routines to 'flags' rather than 'modes'
-Changed LOAD_STEREO, LOAD_LEFT, and LOAD_RIGHT
defines to work as flags
-Optimization of mixing code
-Started WinCE/Win32 ports
-Moved private structs and defines from sssd.h to
-Placeholder for resample routine
-ctrlDevice now working for Linux
-Pan value range changed from (0...256) to (-128...128)
-Added device panning and volume examples to testregister.c
-Added #defines and enums for getSystemInfo data
-Started resampling code
-Updates to sssd.h for WinCE
-More optimization of mixing code
-ctrlDevice and ctrlSample now take arrays in addition to
-Example programs updated to show array usage
-Docs updated: ctrlDevice, ctrlSample
-Docs added: getAudioInfo.
-added function ctrlBackground()
-Fixed broken links in documentation
-Moved platform specific values in sssdaudio struct
to own struct and make *platformData in sssdaudio struct.
-WinCE specific code and project files
-WinCE port compiles (without libsndfile loading
-Added function timePlaying() and appropriate
-Added function blockUntilSampe() and appropriate
-ctrlSample() now supports changing sample play
start/end, loop start/end, and loopcount
-Made public 'DEFAULT_DEVICE' define equal to NULL
and added private 'DEFAULT_DEVICE_NAME'
-Got Win32 port compiling, running without crashing, but
no noises? (need to debug)
-Created AmigaDE/Intent host-side library binding tools
for Linux, Win32, and WinCE.
-Changed ctrlSample() and ctrlDevice() to only take a
tag-parameter list rather than both a list and var_args.
Var_args support didn't work well with AmigaDE.
-AmigaDE install scripts.
-Updated examples to work with AmigaDE. (1st
argument is path to load or sample to load).
-Fixed major bug with way I was generating Amiga hosted
tool library (it wasn't making secondary tools)
-Fixed major bugs with stopAudio() routine that would
cause crashes if program didn't exit after stopping and freeing
-Test programs verified working with intent and
intent_debug. No crashing! :)
-John Harris provided an AmigaDE VP sssd.inc file (VP
version of sssd.h)
- Removed sample loading routines in preference to
platform-specific app side loading.
- Created simple wav loader code for demos
- Updated headers and prototypes
- Debugged and optimized copySample
- Got approval to use Julius Smith's resample code and to
rebase the parts I use under MPL
- Fixed bug in Linux when asking the driver to pick the
best audio buffer size (ie do my own because it didn't work)
- Added parameter to initAudio to control the number of
buffers. Updated headers and intent template file.
- Rewrote test programs to use own wav loaders.
- Fixed pan bug in ctrlSample()
-Added lots more debug output.
-More optimizations to mixing threads
-Quick hack for testLatency
-Major documentation update
-Verify Linux, Win32, and AmigaDE platforms
-Roll-up to version 0.8
-Packaged for beta release
-Beta release to selected development community for
-Added additional optimization to mixing threads to not
play silence. Can be overridden with SSSDSYS_CONSTRATE flag to
sssd_initAudio(). Dropped minimum default latency from 98msec to
<23msec. Large CPU usage drop during silence.
-Added 'flags' argument to sssd_initAudio() to set
subsystem flags. Added first flag SSSDSYS_CONSTRATE.
-Resample code pruned and compiling into library.
Needs a few wrapper functions.
-Docs and sample programs updated.
-Linux version can now use OSS (default) or ESD.
(OSS sounds better and has lower latency). The device define
is ESD_DEVICE_NAME and is passed to sssd_startAudio.
-Get licensing text into code and distro
-more WinCE Port Testing
-FInish AmigaDE native port
-Add better mixing (a+b - a*b)
-Fix all source commenting
-Design background music interface (as WinCE does not have pipes)
-Background looping support in playthrd routines.
-Background music support for OGG, and MOD (xmp) files (cross platform)
-Add support for background music queueing.
-Port resampling routines
-Add resampling to copy routine
-A real testLatency() routine
-Add VP prototypes to function documentation
-Add sample group IDs
-Esound support in ctrlDevice().
-Figure out why Esound sounds crappy.
-Investigate aRts support
FUTURE RELEASES (post 1.0)
-Add priority based voice management
-Add queue based voice management
-Sample bank loading and saving
-Symbian v6/Nokia Series60 port