42class WaveTable final :
public AudioFile {
45 ~WaveTable()
override;
46 int32_t cloneFromSample(
Sample* sample);
47 uint32_t render(int32_t* outputBuffer, int32_t numSamples, uint32_t phaseIncrementNow, uint32_t phase,
48 bool doOscSync, uint32_t resetterPhase, uint32_t resetterPhaseIncrement,
49 int32_t resetterDivideByPhaseIncrement, uint32_t retriggerPhase, int32_t waveIndex,
50 int32_t waveIndexIncrement);
51 Error setup(
Sample* sample, int32_t nativeNumSamplesPerCycle = 0, uint32_t audioDataStartPosBytes = 0,
52 uint32_t audioDataLengthBytes = 0, int32_t byteDepth = 0,
53 RawDataFormat rawDataFormat = RawDataFormat::NATIVE,
WaveTableReader* reader =
nullptr);
54 void deleteAllBandsAndData();
58 int32_t numCyclesMagnitude;
60 int32_t numCycleTransitionsNextPowerOf2;
61 int32_t numCycleTransitionsNextPowerOf2Magnitude;
62 int32_t waveIndexMultiplier;
66 void numReasonsIncreasedFromZero()
override;
67 void numReasonsDecreasedToZero(
char const* errorCode)
override;
70 void doRenderingLoop(int32_t* __restrict__ thisSample, int32_t
const* bufferEnd, int32_t firstCycleNumber,
71 WaveTableBand* __restrict__ bandHere, uint32_t phase, uint32_t phaseIncrement,
72 uint32_t waveIndexScaled, int32_t waveIndexIncrementScaled,
73 const int16_t* __restrict__ kernel);
75 void doRenderingLoopSingleCycle(int32_t* __restrict__ thisSample, int32_t
const* bufferEnd,
76 WaveTableBand* __restrict__ bandHere, uint32_t phase, uint32_t phaseIncrement,
77 const int16_t* __restrict__ kernel);