But later in #5 i uploaded files i recorded on mkr zero as i didnt have playback issue but there was constant background buzz noise.
You should look at something like that seriously because, the way you have structured your code, you appear to be losing samples during the time you are writing to the SD card. @Lucario448 has mentioned this also. Your sampling interval at 18750 sps is about 50 microseconds and your code appears to assume that, in between samples, you can write 2048 bytes to the SD card. You probably would need to switch between two (or more) buffers, so the ADC could fill one during the time you are writing the other to the SD card.