Donc, vous dites que vous dites SOX de lire un fichier WAV exemple 16 bits comme un exemple de fichier 8 bits? Ne sachant rien sur SOX, je m'attendrais à ce qu'il lise chaque échantillon de 16 bits comme deux échantillons de 8 bits ... l'octet de poids fort et l'octet de poids faible comme ceci: ... HLHLHLHLHL ...
Pour simplifier, nous appellerons des échantillons «A» d'échantillons de poids fort. Les échantillons «A» transmettent le son original avec une gamme moins dynamique, car l'octet de poids faible avec la précision supplémentaire a été coupé.
Nous appellerons les échantillons d'octets de poids faible "échantillons B". Ceux-ci seront à peu près aléatoires et encoderont le bruit. Donc, en conséquence, nous aurons le son original, les échantillons «A», décalés de moitié en fréquence. C'est parce qu'il y a un échantillon 'B' entre chaque échantillon 'A' qui réduit de moitié le taux des échantillons 'A'. Les échantillons 'B' ajoutent du bruit au son original. Nous aurons donc le son original, décalé de moitié, avec du bruit.
Est-ce ce que vous entendez?
Édition Le client a indiqué que l'objectif est de convertir un fichier WAV en audio 8 bits. En lisant le manpage for SoX, il semble que SoX utilise toujours l'audio 32 bits en mémoire grâce à sox_read(). Le passage d'un format ne fera que tenter de lire de ce format.
Pour Downconvert en mémoire, utilisez SOX_SAMPLE_TO_SIGNED_8BIT ou de SOX_SAMPLE_TO_UNSIGNED_8BIT sox.h, à savoir:
sox_format_t ft = sox_open_read("/file/blah.wav", NULL, NULL);
if(ft) {
sox_ssample_t buffer[100];
sox_size_t amt = sox_read(ft, buffer, sizeof(buffer));
char 8bitsample = SOX_SAMPLE_TO_SIGNED_8BIT(buffer[0], ft->clips);
}
pour produire un fichier downconvertis, utiliser le format 8 bits lors de l'écriture au lieu de la lecture.
où puis-je obtenir cette suce sox fichiers source et comment ajouter au projet xCode pour iphone ??? – Biranchi