Justement, tu modifies 0x600017
Heu je crois que tu ne ma pas compris, si tu le modifie tu aura besoin d'incrémentation du compteur et donc l'interruption mettera plus de temps à ce déclencher, donc au final, tu réduit la vitesse de l'interruption, il est impossible de faire du 16 KHz sur HW2 et 22 KHz sur HW1.
Essaye tu comprenderas très rapidement.

On a du mal à ce comprendre.

Et pour les données, le mieux est à mon humble avis de faire bit à 1 : changement du port I/O, bit à 0 : port I/O tel quel. Mais l'idéal n'est pas de le faire en bitmap comme ça (sauf si tu compresses après), mais plutôt de faire un RLE comme je l'ai dit dans mon post précédent.
lol, donc ce que tu vient de me dire avec selon toi les données fournis par le convertisseur ne sont plus valable. Puisque après avoir effectué des testes, pour avoir du son avec tes données il faut procéder comme je fait.
Pour ton format RLE c'est assez stupide puisque on multiplie par 8 la taille des WAVs or comme tu le sais, rien que 4 secondes ça prend beaucoup de place même en 1 bit.
Pour terminer le morceau, je vois simple moi, entrer en arguments la taille en octet de la musique, un sizeof en C suffit puis de décrémenter un compteur et dès qu'il est à 0 on quitte, rien de plus simple, ta méthode me paraît être du gaspillage de mémoire, surtout 1 bit n'est pas négligeable. Tu va me dire que tu perd des resosurces CPU mais faut quand même un compromis entre mémoire et vitesse.