Models consist of bits of code inserted in self-standing programs, rather than a single large program. Some programs are general-purpose tools, others serve just to document and test a model. Programs all use the same convention for setting parameters from the command line (or from files). Examples are:
cvf -i aaa -o bbb -OF ascii
which converts data from file 'aaa' to ascii and puts the result in 'bbb',
or:
add -i a1 a2 a3 a4 a5 -dB 0 3 6 9 12 > xxx
which adds sevral files with various factors and pipes the result to 'xxx'.
Parameters are set as keyword/value pairs. Keywords have an initial '-', and
values can be any string.
With '-L filename' you can load arguments from a file. The parameter interface is self documenting: '-H' list all parameters with default values, etc..
Data is exchanged in either of two formats: an ascii format for pipes and a binary format for files. Files and pipes can be used interchangeably: standard input and output are signaled by the filename "-", which is often the default name for input and output.
The pipe format is John Culling's '|WAVE', and the file format is a floating-point version of 'wff'. Other defaults can be set at compilation time. Different formats may also be specified at runtime. Type 'man io' for more info. The routines are designed to allow multichannel data of arbitrary dimensions, but currently no file formats support more than 2-D.
There is no provision for data display. Choose the output format that's best for whatever display software you use.
The design is inspired by John Culling's 'IWAVE' suite, Seichi Tenpaku's 'SpeechTools', the unix way of doing things, etc..