generate raw data - need to be passed through the low-pass filter,
generate oscillator output manually - this can be directly sent to the audio driver,
use miniaudio's built-in waveform generator - this will sound the nicest
Solve multithread data access
Add SoundConfig filter setup
Emulation will be controlled by the main thread, this thread will fill up audio buffers. Other solution would be to simply get current parameters and render audio data in the separate thread.
There will be 2 realtime modes:
1) without sound - in this mode, emulation will run in the main thread with GUI, allowing to see the values in real time
2) with sound - in this mode, emulation will run in a separate thread filling audio buffer and GUI (except video) will be disabled (or add per-gui locking mechanism?)
In sound sample getter: not using std::bind (slower than lambda calls)
There are many ways to implement sound:
Solve multithread data access Add SoundConfig filter setup
Emulation will be controlled by the main thread, this thread will fill up audio buffers. Other solution would be to simply get current parameters and render audio data in the separate thread.
There will be 2 realtime modes: 1) without sound - in this mode, emulation will run in the main thread with GUI, allowing to see the values in real time
2) with sound - in this mode, emulation will run in a separate thread filling audio buffer and GUI (except video) will be disabled (or add per-gui locking mechanism?)
In sound sample getter: not using std::bind (slower than lambda calls)