to check the last consumerπ€ of mach_absolute_time I enabled
c64->sid.setDebugLevel(2);
when running vc64web ... this interestingly logs overflows in the sid every second or so π³
SIDBridge: SID RINGBUFFER OVERFLOW (r: 10240 w: 9545) vC64.html:1:528
stdlib_now: 1587285309152000000, emsdk_now: 37160, fake_now: 36 vC64.html:1:368
SIDBridge: SID RINGBUFFER OVERFLOW (r: 8192 w: 7498) vC64.html:1:528
stdlib_now: 1587285310500000000, emsdk_now: 38508, fake_now: 37 vC64.html:1:368
SIDBridge: Changing sample rate from 44100 to 44100 vC64.html:1:528
ReSID: Setting sample rate to 44100 samples per second. vC64.html:1:528
FastSID: Setting sample rate to 44100 vC64.html:1:528
SIDBridge: SID RINGBUFFER OVERFLOW (r: 0 w: 11637) vC64.html:1:528
stdlib_now: 1587285312270000000, emsdk_now: 40277, fake_now: 38 vC64.html:1:368
SIDBridge: SID RINGBUFFER OVERFLOW (r: 2048 w: 1657) vC64.html:1:528
stdlib_now: 1587285313706000000, emsdk_now: 41714, fake_now: 39 vC64.html:1:368
SIDBridge: SID RINGBUFFER OVERFLOW (r: 6144 w: 5435) vC64.html:1:528
when vc64web is halted it logs many many underruns per second ... watch out for MSG_HALT where the underruns wave begins
SIDBridge: SID RINGBUFFER OVERFLOW (r: 6144 w: 5508) vC64.html:1:528
stdlib_now: 1587285373442000000, emsdk_now: 101449, fake_now: 85 vC64.html:1:368
SIDBridge: SID RINGBUFFER OVERFLOW (r: 2048 w: 1671) vC64.html:1:528
stdlib_now: 1587285375024000000, emsdk_now: 103030, fake_now: 86 vC64.html:1:368
SIDBridge: Changing sample rate from 44100 to 44100 vC64.html:1:528
ReSID: Setting sample rate to 44100 samples per second. vC64.html:1:528
FastSID: Setting sample rate to 44100 vC64.html:1:528
SIDBridge: SID RINGBUFFER OVERFLOW (r: 8192 w: 7370) vC64.html:1:528
stdlib_now: 1587285377947000000, emsdk_now: 105953, fake_now: 87 vC64.html:1:368
wasm_halt vC64.html:1:368
Calling emscripten_pause_main_loop vC64.html:1:368
Called emscripten_pause_main_loop vC64.html:1:368
vC64 message=MSG_HALT, data=0 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 0 w: 1784) vC64.html:1:528
stdlib_now: 1587285378321000000, emsdk_now: 106327, fake_now: 88 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 4096 w: 5880) vC64.html:1:528
stdlib_now: 1587285378414000000, emsdk_now: 106419, fake_now: 89 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 8192 w: 9976) vC64.html:1:528
stdlib_now: 1587285378507000000, emsdk_now: 106513, fake_now: 90 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 0 w: 1784) vC64.html:1:528
stdlib_now: 1587285378599000000, emsdk_now: 106606, fake_now: 91 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 4096 w: 5880) vC64.html:1:528
stdlib_now: 1587285378692000000, emsdk_now: 106698, fake_now: 92 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 8192 w: 9976) vC64.html:1:528
stdlib_now: 1587285378785000000, emsdk_now: 106791, fake_now: 93 vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 0 w: 1784) vC64.html:1:528
Question for the underruns...
does that mean that when I put the c64web to halt, that I have to stop reading samples from the SID in my web audio stream ?
Question for the overruns ...
does the web Audio has to read more often or a larger amount to prevent these ?
is it ok when I only read mono samples like in the current implementation?
void MyAudioCallback(void* thisC64,
Uint8* stream,
int len)
{
C64 *c64 = (C64 *)thisC64;
c64->sid.readMonoSamples((float *)stream,len / sizeof(float) );
}
Is the the over and underruns a bad thing that has to be corrected or should I just don't care about it ? Sound for my ears is fine anyway...
What is strange though is that the core periodcally likes to change sample rate from ... well ... 44100 to 44100 π... why did it want to do that ?π€
SIDBridge: Changing sample rate from 44100 to 44100 vC64.html:1:528
ReSID: Setting sample rate to 44100 samples per second. vC64.html:1:528
FastSID: Setting sample rate to 44100 vC64.html:1:528