shithub: sox

ref: 2512ec55a1df28fc324b0678816605f07411d6a0
dir: /TODO/

View raw version
People are encouraged to pick some of these and implement it.  Send
all patches to cbagwell@sprynet.com.

  o Add support for writing ADPCM output in .wav files.  It really only
    feasible to add one version of ADPCM to output.  I'm leaning towards
    IMA since it could support streaming and be used in other formats.
    But of course, MS is pushing very hard to make their version the
    standard, weither inferer or not.

  o I've add the most common and public standard FormatTags to the
    .wav file detection.  A lot of them should be implemented since
    you can grab the source code from the .au handler and software
    is avaliable from public sources for the rest.

  o Add GSM support to WAV format.  Goes with the above but used
    most often.

  o Add option that allows one to force overwriting to an output
    file (now that it defaults to not allowing this).
 
  o highpass and lowpass filters don't let you specify the cut
    of freq.  Need some improvements to these filters.

  o Create a version of OSS and Sun driver that can play and record from the
    same device in duplex.

  o Internally sox can handle multiple effects on a given sound file.
    Add support for this from the command line.

  o Enhance sox for better interactive support.  This includes updating
    effect parameters in real time and ablity to start/stop/scan
    file handlers in real time.

  o More handlers!  Everyone who adds sound hardware to a computer has 
    the urge to come up with their own file format.

  o More effects!  I don't know DSP at all.  A Pitch Shifter is high
    on the list.

  o Loop support for all formats that know about it.  WAV has
    some support for loops ("cue-points") but no support for
    MIDI note numbers.  Someone needs to add this in.

  o Comment strings.  Some file formats have space for embedded comments.
    These are currently thrown away.  Printing them out, carrying them
    forward, and an to add new ones would be handy.

  o Add support for .TXT format as Cooledit supports.  Not really fit for
    graphing since it is only a stream of ascii sample values but some
    program appear to like it.  Also has a much nicer header.
    http://lab.chass.utoronto.ca/damion/audio/coolwav.htm

  o Update auto file type to include detection of .wve and .smp files.

  o This software wants to be a dataflow system with signal
    sources, sinks, and processors.  It wants to be class-based.
    It wants to have a scripting control language.
    It's really a shame I hate C++.

  o Keep sox from using "fail" on errors.  Sox was supposed to be
    a sound library called "ST" but libraries shouldn't exit a program,
    they should return error codes for users to handle.

  o Enhance general robustness... For instance, malloc is called in
    lots of places without checking its return value.

SOX includes skeleton format files to assist you in supporting new 
formats, sound effect loops, and special-purpose programs.
The full skeleton format, skel.c, helps you write a driver 
for a new format which has data structures.  Skeleff.c is
a starting point for writing a sound effect loop.  Sox.c is
a good starting point for new programs.  (Someone finally
did this and told me what was wrong...)

In handlers.c, note that many formats set up the header and then
use the raw driver for reading and writing.