Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Argus du Allen & Heath CQ-20B

Avertissement

Attention, cote argus calculée sur un petit nombre d'annonces

Les prix indiqués dans les petites annonces des particuliers sur Audiofanzine ne sont pas nécessairement les véritables prix de vente ou d'achat.
Les annonces avec options, ou constituant un pack, ne sont pas prises en compte.
Où acheter CQ-20B ?
Moins
Alerte nouvelle annonce
Argus 676,00 €

trucs et astuces Perte d’enregistrement suite à coupure de courant.

  • 0 réponse
  • 1 participant
  • 39 vues
  • 1 follower
Perte d’enregistrement suite à coupure de courant.
Je n’ai pas fait stop à la fin du concert… l’enregistrement live courait toujours quand la console a été mise hors-tension…

Les fichiers apparaissaient sur la carte SD, mais avec zéro octet. Je suis sur Mac, apparement il y a des solutions PC… j’ai passé quelques heures à faire des tests et tentatives avec une IA. Résultat, tous les fichiers récupéres !!

Je partage ici cette experience si ça peut vous faire gagner du temps. A partir de maintenant, l’article ci dessous a été géneré par l’IA, ainsi que le code python. Si vous y piper rien, envoyer tout l’article dans une IA en donnant des details sur votre matos (type de carte SD, version de votre ordi), vous devriez vous en sortir.



*************

RÉCUPÉRER UN ENREGISTREMENT MULTIPISTE ALLEN & HEATH CQ APRÈS UNE COUPURE DE COURANT — FICHIERS WAV À 0 OCTET

Je partage cette expérience après avoir réussi à récupérer un enregistrement multipiste réalisé sur un Allen & Heath CQ-20B qui semblait totalement perdu à la suite d’une coupure de courant.

La récupération a été effectuée sur Mac, à partir d’une carte SD en FAT32. Elle pourrait également être applicable aux CQ-12T et CQ-18T, mais son fonctionnement ne peut pas être garanti dans tous les cas.

LE PROBLÈME

Pendant un spectacle, mon CQ-20B enregistrait plusieurs pistes sur sa carte SD. Une coupure de courant a brutalement arrêté la console avant que l’enregistrement puisse être terminé normalement.

Après insertion de la carte dans mon Mac :

* le dossier de l’enregistrement existait toujours ;
* les noms des pistes étaient présents ;
* tous les fichiers WAV concernés affichaient une taille de 0 octet.

Dans mon cas, l’enregistrement se trouvait dans :

AHCQ/USBMTK/CQ-MT012

Si cela vous arrive, n’enregistrez surtout plus rien sur la carte et ne la reformatez pas. Les données audio peuvent encore être présentes même si les fichiers affichent 0 octet.

POURQUOI LES DONNÉES EXISTENT ENCORE

La documentation Allen & Heath indique que le CQ crée d’abord un nouveau dossier contenant des fichiers vides, puis commence l’enregistrement. Lorsqu’on appuie normalement sur Stop, il faut ensuite laisser à la console le temps de finaliser et de stocker correctement les fichiers.

Documentation officielle :

https://support.allen-heath.com/hc/fr/articles/48456861200017-CQ-Comment-faire

Une coupure de courant peut donc laisser les données audio sur la carte sans que la taille des fichiers et les en-têtes WAV aient été correctement enregistrés.

Dans mon cas, les fichiers affichaient 0 octet, mais leurs entrées FAT32 conservaient encore le numéro de leur premier cluster. Les chaînes reliant les différents clusters étaient également toujours présentes dans la FAT.

Cela a permis de remettre les données audio dans le bon ordre.

PRÉCAUTION ESSENTIELLE : CRÉER UNE IMAGE DE LA CARTE

Toutes les recherches et tentatives de récupération ont été réalisées sur une image complète de la carte SD, et non directement sur la carte originale.

Principe :

carte SD originale → image CQ20B_SD.img → récupération depuis l’image

La carte originale a ainsi été conservée intacte.

N’utilisez surtout pas un outil de réparation susceptible de modifier la carte avant d’en avoir créé une image complète.

PREMIÈRE TENTATIVE AVEC PHOTOREC

PhotoRec a retrouvé des données WAV. Cela confirmait que l’enregistrement existait toujours sur la carte.

Cependant, les fichiers produits étaient entrecoupés de bruits numériques et inutilisables.

PhotoRec récupère les fichiers en recherchant leur contenu, mais il ne reconstitue pas nécessairement correctement les chaînes de clusters des longues pistes fragmentées. Un mauvais résultat avec PhotoRec ne signifie donc pas obligatoirement que les données audio sont elles-mêmes endommagées.

ANALYSE DE LA FAT32

L’image de la carte a ensuite été examinée avec TestDisk et des outils en ligne de commande, sans modification de l’image.

Les fichiers WAV affichaient toujours 0 octet, mais leurs entrées de répertoire contenaient leurs clusters de départ.

Quelques exemples de mon enregistrement :

01BD.WAV → cluster 316440
02SN.WAV → cluster 316442
03OH.WAV → cluster 316444

L’examen direct de la FAT a montré que les chaînes continuaient. Par exemple :

316440 → 316441 → 316466 → …

Le fichier avait donc une taille logique de zéro, mais la FAT indiquait toujours où se trouvaient ses données et dans quel ordre les lire.

RECONSTRUCTION DES PISTES

Un script Python a été utilisé pour :

1. lire l’image de la carte en lecture seule ;
2. partir du premier cluster de chaque piste ;
3. suivre sa chaîne dans la FAT32 ;
4. recopier les clusters dans le bon ordre ;
5. retirer les 512 premiers octets précédant l’audio ;
6. conserver l’alignement du PCM 24 bits ;
7. créer de nouveaux fichiers WAV mono en 48 kHz.

Le format audio utilisé correspond aux paramètres de récupération indiqués par Allen & Heath :

* PCM signé 24 bits ;
* ordre little-endian ;
* mono pour une piste multipiste ;
* offset initial de 512 octets ;
* fréquence de 48 ou 96 kHz selon l’enregistrement.

RÉSULTAT

La récupération a fonctionné.

Les pistes obtenues durent environ 1 h 09 min 32 s. Le son a été vérifié au début, au milieu et à la fin de l’enregistrement.

Les canaux 12 à 14 n’avaient volontairement pas été armés et n’étaient donc pas attendus.

L’enregistrement du spectacle a ainsi pu être récupéré alors que les WAV affichaient initialement 0 octet.

MÉTHODE OFFICIELLE ALLEN & HEATH

Allen & Heath propose également une procédure officielle pour les enregistrements corrompus. Elle fonctionne uniquement sous Windows et concerne notamment les fichiers affichant 512 octets ou 1 Ko.

Elle utilise la vérification du système de fichiers de Windows, puis l’importation des données brutes dans Audacity :

https://support.allen-heath.com/hc/en-gb/articles/22346839625745-CQ-Recovery-of-corrupted-SD-USB-A-recordings

Je conseille de consulter cette procédure en premier si elle correspond à votre situation.

La méthode décrite ici concerne un cas différent : des fichiers affichant 0 octet, une récupération PhotoRec inutilisable et des chaînes FAT32 toujours intactes.

À RETENIR

Si votre CQ perd son alimentation pendant un enregistrement :

* ne reformatez pas la carte ;
* n’enregistrez rien de nouveau dessus ;
* ne supprimez aucun fichier ;
* créez immédiatement une image complète de la carte ;
* conservez la carte originale intacte ;
* ne concluez pas que l’enregistrement est perdu simplement parce que les WAV affichent 0 octet ;
* ne concluez pas non plus que les données sont corrompues si PhotoRec produit du bruit.

INFORMATIONS À RELEVER

Pour tenter une récupération similaire, il faut connaître :

* le modèle exact du CQ ;
* la taille de la carte ;
* le système de fichiers ;
* la fréquence utilisée : 48 ou 96 kHz ;
* le nombre de pistes armées ;
* la durée approximative de l’enregistrement ;
* le nom du dossier CQ-MTxxx ;
* la taille affichée pour les WAV ;
* la géométrie FAT32 de la carte ;
* le cluster de départ de chaque piste.

ATTENTION CONCERNANT LE SCRIPT

Le script publié plus bas est la version exacte ayant fonctionné dans mon cas. Les paramètres FAT32 et les numéros de clusters sont propres à ma carte et à mon enregistrement.

Il ne faut donc pas l’exécuter tel quel sur une autre image en espérant récupérer automatiquement un autre enregistrement.

Il constitue une base fonctionnelle, mais les paramètres de la carte et les clusters de départ doivent être déterminés séparément pour chaque récupération.

*************

PROCÉDURE MAC : CRÉER UNE IMAGE DE LA CARTE AVANT TOUTE RÉCUPÉRATION

Cette opération crée une copie complète de la carte SD dans un fichier. Elle ne répare rien et ne doit rien écrire sur la carte.

Il faut disposer sur le Mac ou sur un disque externe d’un espace libre au moins égal à la capacité totale de la carte.

1. Insérer la carte SD dans le Mac.

2. Ouvrir Terminal.

3. Afficher la liste des disques :

diskutil list

4. Repérer la carte grâce à sa capacité. Son identifiant sera par exemple :

/dev/disk4

ATTENTION : le numéro est seulement un exemple. Il faut identifier avec certitude la carte SD et ne pas recopier aveuglément « disk4 ».

5. Démonter la carte sans l’éjecter physiquement :

diskutil unmountDisk /dev/disk4

6. Créer l’image :

sudo dd if=/dev/rdisk4 of=~/Downloads/CQ20B_SD.img bs=4m

Remplacer rdisk4 par le numéro réellement identifié.

Le Terminal demandera le mot de passe du Mac. Aucun caractère ne s’affiche pendant sa saisie : c’est normal. Appuyer ensuite sur Entrée.

La commande peut sembler ne rien faire pendant longtemps. Sur macOS, on peut appuyer sur Ctrl+T pour afficher son avancement sans l’interrompre.

7. Attendre impérativement le retour de l’invite du Terminal.

8. Éjecter la carte :

diskutil eject /dev/disk4

9. Retirer la carte et la conserver en sécurité.

Toutes les opérations suivantes doivent être réalisées à partir de :

~/Downloads/CQ20B_SD.img

Le script de reconstruction lit cette image mais ne la modifie pas.

IMPORTANT

La création de l’image ne suffit pas à elle seule. Avant d’exécuter le script, il faut analyser la FAT32 afin de déterminer :

* le début de la partition ;
* la taille des secteurs et des clusters ;
* la position de la FAT ;
* le nombre et la taille des FAT ;
* le cluster de départ de chaque piste.

Les valeurs inscrites dans le script suivant correspondent uniquement à la carte analysée lors de cette récupération.


******************

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
CQ20B_RECOVERY.py
=================

Reconstruction de pistes Allen & Heath CQ à partir d'une image FAT32,
dans le cas validé suivant :
- enregistrement interrompu brutalement ;
- fichiers WAV non finalisés / à 0 octet ;
- chaînes FAT encore intactes ;
- clusters de départ préalablement identifiés.

IMPORTANT
---------
Ce script lit une IMAGE de la carte SD et crée de nouveaux WAV.
Il n'écrit jamais dans l'image source.

Paramètres audio validés pour la récupération CQ :
PCM signé 24 bits, little-endian, mono, offset initial 512 octets,
48 kHz ou 96 kHz selon l'enregistrement.

ATTENTION
---------
Les paramètres FAT32 (PART, BPS, SPC, RESERVED, NFATS, FATSZ)
et les clusters de départ dans TRACKS sont ceux de la récupération
effectuée en septembre 2026. Pour une autre carte / un autre
enregistrement, ils doivent être déterminés à nouveau.
"""

import struct
import os
import wave

# ============================================================
# PARAMÈTRES À ADAPTER
# ============================================================

# Image de la carte SD
IMG = os.path.expanduser("~/Downloads/CQ20B_SD.img")

# Dossier où créer les WAV récupérés
OUTDIR = os.path.expanduser("~/Downloads/CQ_RECUPERE")

# 48000 ou 96000 selon l'enregistrement
SAMPLE_RATE = 48000

# Nom de piste -> cluster FAT de départ
# EXEMPLE : valeurs de la récupération réussie de septembre 2026.
TRACKS = [
    ("01BD.WAV",     316440),
    ("02SN.WAV",     316442),
    ("03OH.WAV",     316444),
    ("04OH.WAV",     316446),
    ("05KSROL.WAV",  316448),
    ("06TOMBAS.WAV", 316450),
    ("07SM58EL.WAV", 316452),
    ("08ALTO.WAV",   316454),
    ("09SM58S.WAV",  316456),
    ("10CLLO57.WAV", 316458),
    ("11CLOPZO.WAV", 316460),
    ("15SUB.WAV",    316462),
    ("16SUB.WAV",    316464),
]

# ============================================================
# GÉOMÉTRIE FAT32
# Valeurs de la carte analysée. À redéterminer pour une autre.
# ============================================================

PART = 4194304
BPS = 512
SPC = 64
RESERVED = 1170
NFATS = 2
FATSZ = 7607

CLUSTER_SIZE = BPS * SPC
FAT = PART + RESERVED * BPS
DATA = PART + (RESERVED + NFATS * FATSZ) * BPS

# Offset initial indiqué pour la récupération CQ
CQ_OFFSET = 512


def next_cluster(f, cluster):
    """Retourne le cluster suivant d'après la FAT32."""
    f.seek(FAT + cluster * 4)
    raw = f.read(4)

    if len(raw) != 4:
        raise RuntimeError(
            "Impossible de lire la FAT au cluster %d" % cluster
        )

    return struct.unpack("= 0x0FFFFFF8:
                break

            if nxt == 0:
                raise RuntimeError(
                    "%s : chaîne FAT interrompue après le cluster %d"
                    % (name, cluster)
                )

            if nxt == 0x0FFFFFF7:
                raise RuntimeError(
                    "%s : mauvais cluster après %d"
                    % (name, cluster)
                )

            cluster = nxt

    size = os.path.getsize(outfile)

    print("OK :", name)
    print("Clusters récupérés :", count)
    print("Dernier cluster :", cluster)
    print("Taille WAV :", size, "octets")


def main():
    print()
    print("RÉCUPÉRATION ALLEN & HEATH CQ")
    print("-----------------------------")
    print("Image source :", IMG)
    print("Destination  :", OUTDIR)
    print("Fréquence    :", SAMPLE_RATE, "Hz")
    print("Pistes       :", len(TRACKS))
    print()

    if not os.path.isfile(IMG):
        raise RuntimeError("Image disque introuvable : " + IMG)

    if SAMPLE_RATE not in (48000, 96000):
        raise RuntimeError(
            "SAMPLE_RATE doit être 48000 ou 96000 Hz."
        )

    os.makedirs(OUTDIR, exist_ok=True)

    for number, (name, cluster) in enumerate(TRACKS, 1):
        print()
        print("PISTE %d / %d" % (number, len(TRACKS)))
        recover_track(name, cluster)

    print()
    print("=" * 54)
    print("RÉCUPÉRATION TERMINÉE")
    print("=" * 54)
    print("Fichiers créés dans :", OUTDIR)
    print()
    print("Vérifiez les WAV avant de supprimer l'image disque.")


if __name__ == "__main__":
    main()


Pour lancer le script, après l’avoir enregistré sous le nom CQ20B_RECOVERY.py dans le dossier Téléchargements :

cd ~/Downloads
python3 CQ20B_RECOVERY.py