... have1.1
If you followed the naming convention above, you can use something like 1.3, this is sizeof(my_params) / sizeof(param_spec)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... functions.1.2
They must have C linkage.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... pkg->alloc()1.3
See 1.7 for more information on these functions.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... buffers1.4
If your machine only accepts a mono input, they'll both point to the same buffer.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
....''1.5
This can be used for optimization; if your machine is not currently playing any notes, it can free up processor time by doing nothing during ox_work() and returning ox_quiet.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... scale1.6
Scaling macros will probably be added to octal.h to simplify this process.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... changes1.7
This might seem unnecessary, but the point of doing it this way is to keep the musician's interface to the data more consistent, and ensure that hex numbers will interoperate with most data types by allowing each machine type to choose how they will be interpreted. Some have argued for the ability to sequence with arbitrary data types, but imagine the analogous situation with traditional music notation: would we really want a different-looking set of note symbols for each instrument?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ox_desc()1.8
Note that this function is not called in reference to any particular machine instance. It is ``library-wide.''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... lists.2.1
Since ``initialize'' and ``describe'' are global functions that don't have to be associated with any particular machine, they're declared static.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... constructor2.2
The right constructor takes a struct machine* as an argument; don't use the default no-arg constructor at all.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
David O'Toole
2000-07-19