1. Completely solve the problem of incorrect total time display. Rushon, pay attention. The calculation method should be TotalTime = wHead.fileSize / wHead.nSamplePerSec; while you wrote TotalTime = wHead.dataSize / wHead.nSamplePerSec; so it always shows hundreds of minutes. ======================================================== wHead.fileSize is the total length of the file minus 4. wHead.dataSize is the length of the data. I tested other files and there were no problems. Hehe, maybe it's caused by your recording software. But it's good to change it.
2. Correct the misspelled word (Rushon, it seems you didn't correct it). Indeed, I modified it during working hours. I was a bit anxious to release the new version. Thank you for the correction.
3. printf("Press < + - > to Volume contorl <P> to Pause Other KEY to stop\n"

; This sentence is very important. How did it get lost? I added it. ======================================================== Indeed, I forgot. Hehe.
Comprehensively tested, the following problems exist:
The channel problem is solved well, and the bit number problem is okay, but the sound becomes quieter when it's 8-bit. ======================================================== Because the value of 8-bit data must be smaller than that of 16-bit. I have multiplied this value by 16, and it can be corrected again because it will be distorted if it's too large. The frequency problem is actually still very big. When it's lower than 22k, it really sounds like a hoarse person's throat. Even when the volume is reduced to 0, there is still noise. I can't find the reason for this noise so far. Because I can't find a way to solve the problem of reducing the playback frequency now, so I can only take the current data twice and play it according to 48000. I don't know why there is noise. Then, my original way to solve the mono problem was to send the same data to two channels, using the w_mixing function instead of w_mixing_stereo. I don't know how Rushon did it. Is it software interpolation? ======================================================== I did the same as your method. It's just that I sent it well when getting the data. I have low level, so I can't understand it very well. It seems you all use the w_mixing_stereo function. ======================================================== You are too modest. Actually, it's not that complicated.
Hope Rushon makes persistent efforts to solve the problem at low frequencies. ======================================================== Finally, thank you for your participation.