ref: bf564541c60acbca9f19ea75622f5e88c8d0a36f
dir: /TODO/
People are encouraged to pick some of these and implement it. Send all patches to cbagwell@sprynet.com. o SJB: The old highp.c filter is IMHO broken, need to review that code. o All comment code has a memory leak. They must malloc memory to store comment but its never free()'d. 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 Add support for mixing multiple inputs from command line. o Endian checks are probably invalid on 64-bit machines. Need to use something a more constant size the "int". Probably should make it at least a util function/macro that can be overriden at compile time. 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. Spectrum analyser, etc, using FFTW lib. 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.