Quelle est la capacité de stockage d’un vinyle ?

On m’a posé la question sur Twitter et je n’avais pas réellement réfléchi à la question : quelle est la capacité de stockage d’un disque vinyle ?

Un vinyle n’est pas un CD, il n’y a pas de réponse directe (du reste, sur les CD, il y a aussi quelques variantes). Comme il s’agit d’un média analogique, les données doivent être encodées avec des procédés qui ne sont pas particulièrement efficaces. Les exemples de disques vinyles avec des données sont particuliers : il y a généralement de la musique en plus des données, et ça ne dépasse pas quelques minutes (et quelques ko). Mais essayons de voir ce qu’il est possible d’imaginer.

La première question peut sembler bête, mais ne l’est pas : quelle est la durée d’un vinyle ? La seconde, nous le verrons, vient de l’encodage des données avec les différents ordinateurs.

Les vinyles

Bon, pour rappel, il existe essentiellement deux tailles (7 et 12 pouces) et deux vitesses (33 et 45 tpm). Il y a d’autres valeurs possibles (comme 78 tpm) mais ça reste rare et à ma connaissance c’est bien trop vieux pour avoir été utilisé pour des données.

La « norme » pour un 12 pouces à 33 tpm est de 22 minutes au maximum par face. Pour un 7 pouces à 45 tpm, c’est 5 minutes. On peut décider de mettre moins de musique pour gagner en qualité… ou diminuer la qualité et mettre plus de musique.

Une page Wikipedia (en anglais) liste pas mal de cas particuliers, que ce soit pour la taille, la vitesse ou la longueur. En trichant un peu, on peut s’approcher d’une heure par face, par exemple.

On va partir sur la capacité classique, c’est à dire 22 minutes.

L’encodage

Le débit va dépendre fortement du type d’ordinateur. On va partir avec quelques explications : je ne suis pas expert et je suis parti sur des calculs simples, sans prendre en compte les headers ni les CRC, qui sont parfois négligeables… et prennent parfois une place significative. Les calculs sont donc un peu faussés mais donnent un bon ordre de grandeur tout de même si on prend en compte un vinyle rempli. Deuxième point, on a forcément une limite liée à la RAM dans ces vieux ordinateurs : le programme doit être chargé entièrement en RAM depuis le vinyle et donc sa capacité ne peut pas dépasser celle de la RAM. Sur les ordinateurs qui stockent de l’audio, c’est donc généralement au maximum aux alentours de 64 ko.

J’ai pris les différents types de programmes que j’ai trouvé sur vinyle pour les calculs, dans l’ordre alphabétique. J’en ai zappé une partie parce que c’est compliqué de trouver des informations techniques sur les ordinateurs japonais.

• Pour l’Apple II, on a un header de 10,6 secondes, puis un taux de transfert variable. Il est de 2 kb/s pour des 0, 1 kb/s pour des 1. La moyenne n’est pas réellement représentative de la réalité, forcément, mais on peut partir sur 1 500 bits/s sans le header.

• Pour les Atari 8 bits, de ce que j’ai compris, on travaille à 600 bauds physiquement, mais avec un encodage 8b10b et un peu de checksum, le système encode 128 octets sur 132 octets. En considérant que c’est négligeable, on est vers 480 bits/s.

• Le BASICODE travaille à 1 200 bauds, mais avec pas mal d’encapsulation : 12 bits transmis pour 8 bits utiles, soit un débit pratique de 800 bits/s.

• Pour le BBC Micro B, il y a deux modes. Le premier est dérivé du Kansas City Standard, sous le nom CUTS. Le débit est de 300 bauds, avec un encodage 8b10b. Encore une fois, il y a un peu de CRC, mais en pratique on a donc un débit de l’ordre de 240 bit/s. Un seconde mode dérive du BASICODE, avec 1 200 bauds et un encodage en 8b11b, soit 872 bits/s. De ce que j’ai compris, on a environ 10 % de CRC et un peu de pertes liées aux headers, donc c’est un peu moins en pratique.

• Le format des Commodore est différent des autres. On voit parfois que le lecteur fonctionne à 300 bauds, mais en pratique, on a un encodage à ~111 octets/s, avec un twist : tout est stocké en double. Le débit pratique maximal est donc de l’ordre de 55 octets/s, ou 440 bits/s. Il existe des programmes qui permettent d’accélérer le chargement, mais je ne vais pas compliquer les choses.

• Pour le Dragon 32, ce n’est pas très clair (je n’ai pas trop cherché, j’avoue) mais en gros on a le 0 encodé à 1 200 bauds et le 1 encodé à 2 400 bauds, probablement en 8b10b. Avec une simple moyenne, ça donne ~1 440 bits/s.

• Les MSX utilisent le CUTS (dérivé du Kansas City Standard) à 1 200 ou 2 400 bauds, avec un encodage 8b11b, soit 872 bits/s ou 1 745 bits/s.

• Pour le ZX81, le débit pour les 0 est de 400 bits/s, 250 bits/s pour les 1, soit une moyenne de 325 bits/s.

• Enfin, le ZX Spectrum encode les 0 à 2 046 bits/s et les 1 à 1 023 bits/s, soit un moyenne vers 1 535 bits/s.

Quelle capacité ?

Vous vous en doutez, c’est compliqué. La capacité peut varier en fonction des choix sur le disque, sur le type d’ordinateur et en fonction du contenu du programme dans certains cas. La tranche basse, comme avec le Commodore 64, permet de l’ordre de 75 ko sur une face, 150 ko sur les deux. La tranche haute, elle, permet environ 275 ko sur une face.

C’est très théorique, encore une fois : le nombre de 0 et de 1 dans le code peut faire varier le bitrate et il y a des headers qui réduisent un peu la quantité de données réelles. Il peut s’agir de signaux qui permettent au programme de détecter la présence d’un programme, des CRC (pour détecter les erreurs), des pauses qui séparent les blocs, etc. Pour le calcul, j’ai essayé de prendre le débit « réel », c’est-à-dire sans l’encodage lui-même. On peut stocker plus de bits, mais une partie n’est pas utile.

Enfin, remplir un vinyle avec des données semble irréaliste. Premièrement, comme vu plus haut, parce qu’on est généralement limité à la RAM des ordinateurs, donc vers 64 ko au maximum. Ensuite parce que le vinyle n’est pas un média particulièrement adapté pour cet usage. La moindre erreur peut rendre un programme inutilisable, et sur les programmes que j’ai récupéré au fil du temps, c’est parfois (très) compliqué d’avoir quelque chose d’utilisable sur quelques minutes d’audio.