ScummVM API documentation
MT32Emu::LogSample Struct Reference

#include <LA32WaveGenerator.h>

Public Types

enum  { POSITIVE, NEGATIVE }
 

Public Attributes

Bit16u logValue
 
enum MT32Emu::LogSample:: { ... }  sign
 

Detailed Description

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: