From 59612aa01775eaaec8c33f2b101948db423cabaa Mon Sep 17 00:00:00 2001 From: Nebuleon Fumika Date: Sat, 12 Jan 2013 20:30:30 -0500 Subject: ds2sound.h: Set the interrupt interval to 15.36 milliseconds and explain why. --- source/nds/ds2sound.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/nds/ds2sound.h b/source/nds/ds2sound.h index 544a670..d8cfe09 100644 --- a/source/nds/ds2sound.h +++ b/source/nds/ds2sound.h @@ -6,7 +6,15 @@ #define DS2_BUFFER_SIZE_7 1024 /* tested working, slow because of upsampling */ // In microseconds. -#define INTERRUPT_TIME_4 4000 /* tested working */ +// (512 samples / 22050 samples/sec) = 23000 microseconds. +// The value needs to be: +// * not too low, because then every time a new batch of close to 512 samples +// is created anew, and that's EXPENSIVE. +// * not too high, because then missing the end of the buffer creates audible +// underflows. +// * not exactly 16667 (NTSC 60 FPS) or 20000 (PAL 50 FPS), because then +// the automatic frame skipper will be extremely messed up. +#define INTERRUPT_TIME_4 15360 /* 15360 tested working */ #define INTERRUPT_TIME_5 8000 /* like the SNES! tested working, but slow */ #define INTERRUPT_TIME_6 4000 /* tested working, slow because of upsampling */ #define INTERRUPT_TIME_7 4000 /* tested working, slow because of upsampling */ -- cgit v1.2.3