[Sub0] - 26/05/03

Conversion 8 bits stéréo en 16 bits stéréo

 

Les données du sample 8 bits stéréo possèdent 2 octets: 1 octets pour la voie de gauche, et 1 octets pour la voie de droite. Pour convertir en 16 bits stéréo, nous allons ajouter 1 octets sur chaque voie en multipliant l'amplitude par 256. Il ne faut pas oublier que les données 16 bits sont signées, alors que le 8 bits ne l'est pas!

1) Multiplier les données 8 bits par 256 pour chaque voie.
2) Convertir les données 16 bits non-signées en 16 bits signées
3) Modifier l'en-tête du fichier pour le nouveau format.

Pour convertir les données 8 bits en 16 bits, il faut d'abord multiplier par $100 (256), ensuite pour transformer les données non-signées en données signées, il faut ajouter $8000 (32768). Si le résultat est est supérieure ou égal à $10000 (65536), alors il faut soustraire $10000.

Le code suivant est un exemple de conversion d'une seule donnée. Il est destiné à vous expliquer la méthode utilisée. Dans le cas d'un fichier entier, il faudra placer ce code dans la boucle de traitement:

VAR voieL,voieR: longint;

BEGIN
 voieL:=(voieL*
$100)+$8000; IF(voieL>=$10000)THEN voieL:=voieL-$10000;
 voieR:=(voieR*
$100)+$8000; IF(voieR>=$10000)THEN voieR:=voieR-$10000;
END;


En ce qui concerne l'en-tête du fichier, il faut apporter les modifications suivantes:
-
Filesize est multiplier par deux.
-
Format change de 8 en 16 bits.
-
Mode ne bouge pas.
- Comme d'hab, il faudra modifier
BytePerSec et NbrByte.


SOURCE DU PROGRAMME