To do list

version 0.8


Starting with libgaudio-1.6...


  -Updated code to work with libsndfile 1.0.5
  -Modularized each function for OSs that support tool libraries (AmigaDE)
  -Added initAudio() and freeAudio() functions to allocate the control
  structure as different compilers may not pack the struct the same.
  -Added support to init the audio player with different sample rates,
  bit depths, and channels (stereo, mono).  Added support for user
  setting max number of playing channels and max number of cached samples
  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 channels
   -Added getSystemInfo() call to get OS and Hardware info
   -Added getAudioInfo() to get info about audio device settings
   -startAudio/InitAudio can be told what size the play buffer should
   be or can let the system set the best size based on bits/channels
   (maestro under Linux doesn't work that great- better to set manually)
   -Added testLatency() call to check playback latency... buggy in Linux.
   -Debugged thread functions for 8-bit mono and stereo.
   -Test program added: testregister
   -Globalized Errors
   -copySample() routine now converts format
   -All printed output can now be disabled with define: __NOPRINTING__

   -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 with blockUntilComplete()

    -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 internals.h

   -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 var_args.

   -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 support)  [UNTESTED]

    -Added function timePlaying() and appropriate documentation

    -Added function blockUntilSampe() and appropriate documentation

    -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 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 feature feedback.


   -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

-Finalize Documentation

-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


-Add priority based voice management

-Add queue based voice management

-Sample bank loading and saving

-Symbian v6/Nokia Series60 port