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 bool mayBeStolen(
void* thingNotToStealFrom =
nullptr)
override;
59 void steal(
char const* errorCode)
override;
62 int32_t numCyclesMagnitude;
64 int32_t numCycleTransitionsNextPowerOf2;
65 int32_t numCycleTransitionsNextPowerOf2Magnitude;
66 int32_t waveIndexMultiplier;
70 void numReasonsIncreasedFromZero()
override;
71 void numReasonsDecreasedToZero(
char const* errorCode)
override;
74 void doRenderingLoop(int32_t* __restrict__ thisSample, int32_t
const* bufferEnd, int32_t firstCycleNumber,
75 WaveTableBand* __restrict__ bandHere, uint32_t phase, uint32_t phaseIncrement,
76 uint32_t waveIndexScaled, int32_t waveIndexIncrementScaled,
77 const int16_t* __restrict__ kernel);
79 void doRenderingLoopSingleCycle(int32_t* __restrict__ thisSample, int32_t
const* bufferEnd,
80 WaveTableBand* __restrict__ bandHere, uint32_t phase, uint32_t phaseIncrement,
81 const int16_t* __restrict__ kernel);