#include <LA32WaveGenerator.h>
|
enum | { POSITIVE,
NEGATIVE
} |
|
|
Bit16u | logValue |
|
enum MT32Emu::LogSample:: { ... } | sign |
|
LA32 performs wave generation in the log-space that allows replacing multiplications by cheap additions It's assumed that only low-bit multiplications occur in a few places which are unavoidable like these:
- interpolation of exponent table (obvious, a delta value has 4 bits)
- computation of resonance amp decay envelope (the table contains values with 1-2 "1" bits except the very first value 31 but this case can be found using inversion)
- interpolation of PCM samples (obvious, the wave position counter is in the linear space, there is no log() table in the chip) and it seems to be implemented in the same way as in the Boss chip, i.e. right shifted additions which involved noticeable precision loss Subtraction is supposed to be replaced by simple inversion As the logarithmic sine is always negative, all the logarithmic values are treated as decrements
The documentation for this struct was generated from the following file: