#pragma once #include #include #include "Peripherals.hpp" class BuzzerSDL : public chocochip8::Buzzer { public: using sample_t = Sint16; BuzzerSDL(unsigned frequency); ~BuzzerSDL(); void on() override; void off() override; private: static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len); void copySamples(Uint8 *stream, int len); private: std::vector mSamples; SDL_AudioDeviceID mAudioDevice; size_t miCurrentSample; };