next up previous contents
Next: Using OX_API Up: Contents Previous: Copyright and License Information

Recent API Changes, Freeze

Recently OX_API has been revised with several incompatible changes. These reflect refinements and simplifications of the design. I am happy to say that the core API is now complete; extensions for wavetables will be handled through the OX_API Package and should not cause any backward-compatibility problems at the source level.

Here is a summary of the changes:

The ``package.''
Machine-accessible utility functions have been moved into the OX_API package. This is a reconfigurable collection of functions that machines can call. Now the entire machine API can be used just by including machine.h. See 1.7 for examples of package calls.
Memory allocation wrappers.
These are provided so that OCTAL can handle allocating large audio buffers and prevent their being paged out to disk on POSIX-compliant operating systems. They are also used to ``zombify'' a machine by removing it from the signal network if memory allocation fails. This can help prevent crashes, important during any live performance.
ox_desc() changes.
The previous design for this API was non-reentrant. This would really have hurt when attempting to make OCTAL SMP-enabled. The new interface works without static local storage.
Compilation and linking of machines.
You don't need to link against util.h anymore when creating machines, nor do you need util.h.
ox_update() changes
The params member of struct machine has been removed. The original design forced the machine writer to step through this data structure and know its format, and it seemed rather error-prone and needlessly complex. The new design is simpler: we update one parameter at a time by calling ox_update() with the track number, parameter index, and new value.


next up previous contents
Next: Using OX_API Up: Contents Previous: Copyright and License Information
David O'Toole
2000-07-19