Présentation
oTAPE propose un fichier .otape qui regroupe l’ensemble d’une cassette analogique : deux pistes audio continues, le label, le J‑card et les onglets de repérage. Le format se veut autonome ; aucune connexion réseau n’est requise pour la lecture, le lecteur mémorise la position séparément, comme le ruban d’une vraie cassette.
Architecture du conteneur
Le fichier est un archive ZIP standard dont la première entrée est un mimetype (application/vnd.otape.cassette) afin de permettre l’identification sans extraction. Le manifeste manifest.json décrit la cassette : version du format 1.0, identifiant UUID, titre, type (ex. C60), durée maximale par face (ex. 1800 s). Chaque face possède un objet audio pointant vers side-a.m4a ou side-b.m4a, encodés en AAC‑LC, codec supporté par tous les lecteurs modernes. Le répertoire artwork/ contient des images aux dimensions physiques exprimées en millimètres, avec une résolution conseillée de 24 px/mm (minimum 12 px/mm) et une tolérance d’aspect de ±1 %. Le schéma de stockage est strict : audio/, artwork/, docs/ et le manifeste, ce qui garantit la préservation des métadonnées même en cas de mise à jour mineure du format. Le fichier commence par la signature ZIP PKx03x04 à l’offset 0, suivi du type média à l’octet 38, ce qui facilite la détection par les systèmes d’exploitation.
{
"format": "oTAPE",
"format_version": "1.0",
"cassette": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Night Drive",
"type": "C60",
"side_length_seconds": 1800,
"created_at": "2026-10-28T22:00:00Z"
},
"sides": {
"A": { "write_protect": "intact", "audio": null },
"B": { "write_protect": "intact", "audio": null }
}
}Émulation du comportement analogique
Le lecteur Web Deck, écrit en JavaScript pur (≈1 200 lignes, aucune dépendance), applique des modèles physiques à chaque image de lecture. Le « wow » provient d’une variation lente de la vitesse de rotation, simulée par une modulation de fréquence qui fait dériver la hauteur du son. Le « flutter » introduit des fluctuations rapides, reproduisant le bruit de moteur irrégulier. Le bruit de fond (« hiss ») est ajouté en continu, même pendant les intervalles de silence, afin de refléter le bruit de bande. La « warmth » est obtenue par un filtre de compression des crêtes hautes, imitant la saturation thermique du magnétophone. Enfin, l’« wear » coupe brièvement les hautes fréquences lorsqu’une section de bande est usée, simulant la perte de tête. Chaque machine virtuelle est décrite par un fichier .otsound contenant des paramètres en unités réelles : pourcentage de vitesse, décibels et hertz. Ainsi, un lecteur portable de l’époque reproduira exactement le même profil sonore qu’un lecteur de studio, sans modifier le fichier audio original.
Limites et perspectives
Le format impose une longueur fixe par face (ex. C60 = 60 min, C90 = 90 min) et un jeu de largeurs de bande (12–18 µm) définies dans l’annexe du spec. Cette contrainte garantit la cohérence avec les cassettes physiques mais empêche l’utilisation de durées arbitraires. Le modèle de protection d’onglet, bien que reproduisant la fonction anti‑écrasement, ne constitue pas un mécanisme DRM ; il repose sur la confiance de l’utilisateur. Le choix du codec AAC‑LC assure la compatibilité, mais exclut les flux non compressés qui pourraient être nécessaires pour des archivistes exigeant une fidélité absolue. Enfin, la lecture dépend d’un moteur JavaScript exécuté dans le navigateur ; les performances varient selon le matériel et le moteur de rendu, ce qui peut introduire des écarts de latence entre le comportement simulé et le rendu réel. Malgré ces restrictions, oTAPE fournit une base technique solide pour la préservation numérique de mixtapes, en combinant les contraintes physiques d’une cassette avec les avantages de la portabilité numérique.