Se connecter
Se connecter

ou
Créer un compte

ou
Astuce
2 réactions

32 bits float ou 24 bits ?

Quand on enregistre un son avec son interface audio 24 bits, elle est sauvegardée dans un fichier 32 bits à virgule flottante (ou "32 bits float").

Comment ce fait-ce ? C'est ce que nous allons voir ensemble :


1. Le 32 bits float, qu'est-ce que c'est ?

C'est l'analogue en binaire de la notation décimale dite "scientifique". Un grand nombre peut s'écrire en notation "à virgule fixe". Par exemple : 123456789.

Il peut aussi, et c'est souvent plus commode, s'écrire ainsi : 1,23456789 x 10^8 (le signe ^ signifie ici "à la puissance"). Cette notation permet d'avoir toujours le même nombre de chiffres à gauche de la virgule,quelle que soit la longueur du nombre.

1,234 x 10^1 = 12,34
1,234 x 10^4 = 12 340
1,234 x 10^10 = 1 234 000 000


Transposé aux systèmes binaires la notation scientifique ou "flottante" permet d'utiliser au mieux les bits disponibles (24, 32, 64 ...)pour la meilleure précision possible de calcul.

EXEMPLE :
J'enregistre en 24 bits.
Le fichier est traité par le logiciel en format 32 float, mais sans bénéficier des avantages : Une donnée telle que 12 340 devient juste 12 340 x 10^0, ce qui est la même chose sur le plan du rendu sonore et de la précision. C'est juste une manière différente de l'écrire.

Ainsi, en caricaturant, je peux enregistrer de l'audio en 8 bits, et le stocker dans un fichier 32 bits. Ca revient à stocker une épingle dans un tiroir, mais ça ne "bonifie" pas la qualité de l'original.


Il ne faut pas confondre la résolution d'enregistrement (24 bits en général) et la résolution de traitement (32 float, 64, ou plus).



2. Intérêt du 32 bits float :
Maintenant, je prend mes données audio, je normalise, je met une réverbe, un p'tit coup de FFT en destructif (etc).

Mon logiciel audio calcule tous ces effets en interne en 32 bits float (mais ça peut être du 34 bits ou du 128, bref, on n'arrête pas le progrès...), pour rester précis, et éviter de saturer.

Je veux figer ces données sur mon disque pour économiser du processeur. Deux solutions :
- Le fichier est bouncé en 32 bits, pour sauvegarder ces finesses.
- Le fichier est bouncé en 24 bits, et je perd les 'subtilités' de mes modifications.
C'est tout.

Le 32 bits sert pour la précision des calculs faits APRES enregistrement.

EXEMPLE :
J'enregistre un fichier audio.
L'une des données codées en 24 bits est 178988140002515. Pas de chiffres après la virgule. J'applique un changement à ce fichier : En 32 bits, ma donnée devient 178988140002516,124788. En 24 bits, elle aurait été sauvegardée en 178988140002516 tout court, sans chiffre après la virgule...




3. Pour résumer :

  • Le son est numérisé par la carte en 24 bits.

  • Le logiciel lui ajoute 8 bits de 0 (00000000). Voilà, c'est un son 32 bits.

  • Les 8 bits supplémentaires servent au calcul de puissance de 10, mais ne changent pas la résolution du son de départ. Le fichier 32 ajoutera huit zéros à la fin de chaque mot. C'est si on applique des changements, que la précision se fait.

  • A quelques centièmes près, la différence n'est pas énorme, mais si j'édite plusieurs fois un fichier, je perd en précision.

  • Un signal enregistré en 24 bit et traité en 32 sonnera mieux : car il y aura moins de distorsion du signal que le même traité en 24 ou 16 bit.

  • Enfin, pour être complet, un fichier 32 bits prendra plus de place sur un disque dur que son équivalent en 24 bits (et à fortiori en 16 bits).

  • Un calcul 32 bits est également plus lourd à gérer en temps réél pour le processeur.




merci à rroland, pw, alesisssss, karlux, jeromedu93 et les autres pour la discussion qui a abouti à cette FAQ. Vous trouverez le thread ici
  • Rj_4000 369 posts au compteur
    Rj_4000
    Posteur·euse AFfamé·e
    Posté le 24/01/2024 à 13:55:21
    "Pour résumer :
    Le son est numérisé par la carte en 24 bits.
    Le logiciel lui ajoute 8 bits de 0 (00000000). Voilà, c'est un son 32 bits."

    Ce n'est pas correct.
    Ce que vous expliquez serait valide si vous utilisiez du 32 bits ENTIER.
    De manière similaire à passer de 16 à 24 bits "entier", vous ajoutez juste des bits à 0 à la fin pour compléter le format.

    Mais vous parlez de 32 bits à virgule flottante (FLOAT)
    Dans ce cas, le format utilisé contient une mantisse et un exposant.
    Et la mantisse d'un nombre en 32 bits flottant ne contient que 23 bits + 1 bit de signe, donc 24 bits.
    Donc vous ajoutez juste un exposant (qui peut être 0).

    Mais vous n'augmentez pas la résolution du signal quand vous passez en 32 bits float depuis un 24 bits entier (PCM).
  • Rj_4000 369 posts au compteur
    Rj_4000
    Posteur·euse AFfamé·e
    Posté le 24/01/2024 à 13:57:22
    https://fr.wikipedia.org/wiki/IEEE_754

Vous souhaitez réagir à cette astuce ?

Se connecter
Devenir membre