This crate contains all of the DSP logic for the synthesizer. It is designed
to be no_std friendly (though it has not yet been build/tested in this config)
and all of the API and algorithms are designed to be implemented using both
floating-point logic and fixed point logic. The fixed point logic additionally
does not use division and minimizes the use of 32 bit widening multiplies
(that is, with a 64 bit result) to the maximum extent possible for speed on
embedded platforms without native hardware support for these primitives.
Most of the relevant code for users can be found in the [devices] module.
This crate uses the (somewhat regrettably hungarian-style) convention of
having all fixed-point structs and traits be the same as their floating-point
counterparts with the FxP suffix to denote fixed point operation. This is
used instead of implementing it as generics implementations on u16 to
preserve information about the location of the decimal place within the type
system, but does require some duplication of code throughout the crate.