#ifndef TWOSF2WAV_SAMPLEDATA_H #define TWOSF2WAV_SAMPLEDATA_H #include #include class IInterpolator; class SampleData : public std::vector { public: enum Format { Pcm8, Pcm16, Adpcm }; SampleData(); SampleData(uint32_t baseAddr, uint16_t loopStart, uint32_t loopLength, Format format); SampleData(const SampleData&) = default; SampleData(SampleData&&) = default; ~SampleData() = default; SampleData& operator=(const SampleData&) = default; SampleData& operator=(SampleData&&) = default; int32_t sampleAt(double time, IInterpolator* interp = nullptr) const; uint32_t baseAddr; uint16_t loopStart; uint32_t loopLength; private: void loadPcm8(); void loadPcm16(); void loadAdpcm(); }; #endif