diff --git a/gg.c b/gg.c index 9a5ea19..219a054 100644 --- a/gg.c +++ b/gg.c @@ -30,8 +30,8 @@ uint32_t mmc_position;/* current reading position on mmc */ uint8_t overflows = 1;/* remaining counter overflows until next sample */ #define SAMPLE_BITS 11 -#define BUFFER_SIZE 92 -#define REFRESH_AMOUNT 64 +#define BUFFER_SIZE 64 +#define REFRESH_AMOUNT 32 #define REFRESH_SIZE (BUFFER_SIZE - REFRESH_AMOUNT) uint8_t buffer[BUFFER_SIZE];/* buffer for mmc data */ @@ -69,6 +69,9 @@ int main(void) { if(pos == refresh_buffer)/* refresh buffer if running low */ { + /* TODO: this won't do. we don't have enough time to read unnecessary bytes -> read data with the same speed as we consume it, keeping a small buffer. */ + /* expect 2 bit read from mmc between 2 timer interrupts --> 2 byte read per sample played */ + mmc_read_sector(mmc_position, buffer + (ref + REFRESH_SIZE) % BUFFER_SIZE);//, BUFFER_SIZE - ref), buffer, REFRESH_AMOUNT - (BUFFER_SIZE - ref)); /* pos on sd , first buffer address , 1st buffer size ,2nd buf, 2nd buffer size */ refresh_buffer = (refresh_buffer + REFRESH_AMOUNT) % BUFFER_SIZE;