Je confirme que la fonction fEcrit modifie la position en cours et qu'il est inutile de faire appel à la fonction fPositionne.
En décortiquant le format, on voit que tu as besoin de connaître certaines informations pour enregistrer le fichier au format wave :
AudioFormat: 1 (le format apparemment c'est PCM, donc 1)
NumChannels: 2
SampleRate: 44100
ByteRate: 176400 (== SampleRate * NumChannels * BitsPerSample/8)
BlockAlign: 4 (== NumChannels * BitsPerSample/8)
BitsPerSample: 16
et aussi la taille totale du son enregistré.
Donc j'imagine que la procédure callback va tout enregistrer dans un fichier temporaire.
Puis, une fois la capture terminée et la taille des données connue, il faut :
(1) créer le fichier final (format wav),
(2) y écrire l'entête, puis
(3) y recopier toutes les données provenant du fichier temporaire.
Et pour l'entête, il est facile d'utiliser un type buffer dans lequel tu ajoutes toutes les données descriptives en te conformant au format, et tu utilises fEcrit auquel tu passes l'adresse du buffer et la taille des données qu'il contient.
Partager