Electronique > Réalisations > Effets > Delay (réverbération/écho) 003

Dernière mise à jour : 27/08/2023

Présentation

Cette unité de retard numérique reprend le principe de mon effet Delay 002. Les différences majeures par rapport à cette précédente réalisation résident dans la résolution des échantillons numériques qui passe de 8 bits à 16 bits, et dans le temps de retard maximal qui peut désormais dépasser la durée de 2 secondes avec une bande passante de 10 kHz (fréquence d'échantillonnage 25 kHz).

delay_003b_pcb_3d_front

Le circuit est basé sur un microcontrôleur PIC "moyen de gamme" dsPIC qui pilote un CAN (convertisseur analogique numérique) externe, un CNA (convertisseur numérique analogique) externe et une RAM (mémoire vive) externe. Deux types de mémoires ont été mises à l'épreuve : une de type FRAM (très rapide, mais aussi très coûteuse) et une de type SRAM (très rapide également et plus abordable).

Deux études jumelles ont été menées :
- schéma 003 : schéma de base pour essais FRAM et SRAM - ce montage ne sera pas maintenu
- schéma 003b : schéma "définitif" avec SRAM - ce montage sera maintenu

Le but de l'opération était de voir si avec des composants abordables on pouvait obtenir un temps de retard d'au moins une seconde, tout en bénéficiant d'une "bonne qualité globale". Je sais que je ne suis pas le premier à me poser la question ;)

   

Avertissements

   

Schéma 003

Un PIC de "taille moyenne" et quelques "puces" additionnelles consituent le coeur du montage.

delay_003
Alimentation et circuits d'E/S analogique non représentés
   
Principe de fonctionnement
Le signal audio (analogique) auquel on souhaite appliquer un retard est en premier lieu numérisé et pour cela, on utilise un CAN (Convertisseur Analogique Numérique). Ce procédé consiste à échantillonner (prendre des échantillons à intervalles réguliers) du signal audio qui est discontinu (il y a toujours une tension, "nulle" en absence de son). Chaque échantillon (morceau de son) est placé dans un espace de mémoire vive composée d'un grand nombre de cellules (ligne à retard numérique). Ces échantillons stockés ressortent après un certain temps (delay) et on les retrouve sous forme analogique grâce à un CNA (Convertisseur Numérique Analogique).

bases_audio_effets_delay_principes_sampling_digital
Le nombre de cellules de retard (Mem x bits) n'affecte pas la qualité du signal échantillonné et retardé...

   

Le résultat est qu'un son échantillonné puis retardé apparaît plus tard en sortie de la ligne à retard.
      
delay_003_graph_001c
Trace verte = source audio avant retard ; trace rouge = signal retardé
   
Sans rebouclage (feedback) de la sortie vers l'entrée, on obtient un seul écho (graphe ci-devant).
En réinjectant le signal retardé à l'entrée de la ligne à retard, on obtient de multiples répétitions (graphe ci-après).
   
delay_003_graph_001d
Trace verte = source audio avant retard ; trace rouge = signal retardé et réinjecté dans la ligne à retard
      
Descriptif du schéma
Le système est composé de 4 sous-ensembles :

Le graphe qui suit montre le chronogramme des opérations réalisées pour un seul échantillon audio. Le microcontrôleur PIC ne chôme pas !

   
delay_003_graph_001b  
ADC = Analog to Digital Converter (= CAN en français) ; DAC = Digital to Analog Converter (= CNA en français)
MEM_Write = éciture en mémoire des échantillons entrants ; MEM_Read = lecture des échantillons préalablement stockés

   

Avec cette façon de faire, le temps de traitement nécessaire pour un unique échantillon audio est de 45 us environ, ce qui permet de travailler avec une fréquence d'échantillonnage de 20 kHz. Grâce à une petite astuce, j'ai réussi à réduire le temps de traitement total à 40 us, pour une fréquence d'échantillonnage finale de 25 kHz (schéma 003b).

L'avantage d'une fréquence d'échantillonnage allant au-delà de 20 kHz est qu'il est plus facile de filtrer le résidu d'horloge après conversion numérique analogique (on pourrait même s'en passer puisqu'on ne l'entend pas). L'inconvénient est qu'une valeur de fréquence d'échantillonnage inférieure à 40 kHz impose un filtrage passe-bas efficace avant la conversion analogique numérique, pour atténuer fortement tout signal dont la fréquence dépasse la moitié de cette fréquence. Comme il s'agit d'un montage d'initiation, on peut se passer de ce filtre ou en adopter un simple de type RC (6 dB/octave, ordre 1).

Le graphe qui suit montre le signal d'entrée et le signal retardé (non filtré !), assez proches dans le temps pour faciliter la comparaison entre les deux (zoom sur image pour détails). La fréquence du signal test est de 1 kHz.


delay_003b_graph_004a
   

Les graphes qui suivent montrent le retard maximal qu'on peut atteindre pour un nombre donné de cellules de retard et pour une fréquence d'échantillonnage de 25 kHz ou 20 kHz (trace verte = source audio avant retard ; trace rouge = signal retardé).

   
delay_003_graph_002a_8000-cells Type mémoire : SRAM 1 Mb
Nombre de cellules de retard (8 bits) : 8000
Nombre d'échantillons audio retardés (16 bits) : 4000
Fréquence échantillonnage : 25000 Hz
Délai max : 4000/25000 = 160 ms
delay_003_graph_002b_16000-cells Type mémoire : SRAM 1 Mb
Nombre de cellules de retard (8 bits) : 16000
Nombre d'échantillons audio retardés (16 bits) : 8000
Fréquence échantillonnage : 25000 Hz
Délai max : 8000/25000 = 320 ms
delay_003_graph_002c_32000-cells Type mémoire : SRAM 1 Mb
Nombre de cellules de retard (8 bits) : 32000
Nombre d'échantillons audio retardés (16 bits) : 16000
Fréquence échantillonnage : 25000 Hz
Délai max : 16000/25000 = 640 ms
delay_003_graph_002d_64000-cells Type mémoire : SRAM 1 Mb
Nombre de cellules de retard (8 bits) : 64000
Nombre d'échantillons audio retardés (16 bits) : 32000
Fréquence échantillonnage : 25000 Hz
Délai max : 32000/25000 = 1280 ms
delay_003_graph_002e_128000-cells Type mémoire : SRAM 1 Mb
Nombre de cellules de retard (8 bits) : 128000
Nombre d'échantillons audio retardés (16 bits) : 64000
Fréquence échantillonnage : 25000 Hz
Délai max : 64000/25000 = 2560 ms
delay_003_graph_003a_256000-cells Type mémoire : FRAM 2 Mb
Nombre de cellules de retard (8 bits) : 256000
Nombre d'échantillons audio retardés (16 bits) : 128000
Fréquence échantillonnage : 20000 Hz
Délai max : 128000/20000 = 6400 ms

Le temps de retard est réglable par l'utilisateur grâce aux boutons-poussoirs SW1/Dec et SW2/Inc.
   
Alimentation
L'alimentation doit être de type simple de valeur +5V, comme celle décrite à la page Alimentation simple 001.

   

Schéma 003b

En opérant une petite modification du schéma 003 d'origine, j'ai cherché à bénéficier d'un transfert plus rapide des échantillons audio entre le microcontrôleur et la mémoire SRAM externe (en écriture et en lecture). Avec un succès tout relatif...
   
delay_003b
   
Mes tentatives de réduction du temps de traitement inter-échantillons n'ont pas abouti aux résultats que j'espérais. Le mieux que j'ai pu obtenir est un temps de traitement de 40 us, 5 us pour les conversions AN+NA et 35 us pour les écriture+lecture dans la RAM externe. Le gain de temps obtenu par procédé "bit-banging" (sans utiliser le module SPI hard du PIC) et en utilisant le mode SQI de la SRAM est ridicule et ne vaut pas le coup, car le PIC utilisé est trop lent pour ça (je suis au mieux dessendu à 38 us). Comme les résultats obtenus avec le mode SPI de la SRAM conjointement utilisé avec le module SPI du PIC sont similaires et plus faciles à mettre en oeuvre, j'ai abandonné l'idée de me focaliser sur cette piste d'amélioration avec le mode SQI.

J'en reste donc (pour l'instant) à ces caractéristiques "limitées" qui me plaisent tout de même assez bien, car après tout, ce montage sonne mieux que mon vieux delay à base de ligne à retard SAD1024 du fabricant Reticon (disons qu'il sonne autrement).

   

Mode Bypass
En mode bypass, la mémoire externe n'est pas utilisée et le temps de transit entrée/sortie est alors inférieur à 20 us. Dans ce mode particulier, le montage permet de simuler un échantillonnage effectué avec une résolution comprise entre 1 et 15 bits, tout en bénéficiant d'une fréquence d'échantillonnage de 60 kHz pour une bande passante 20 kHz. Pour cela, la valeur de chaque échantillon audio peut être divisé par un nombre égal à une puissance de 2, juste après l'étape de numérisation :

Pour compenser la perte de niveau occasionnée par la troncature des bits de poids faible, une amplification logicielle est opérée dans le même rapport avant restitution dans le monde analogique. Le niveau du signal de sortie reste ainsi compatible avec celui du signal d'entrée. Les deux graphes suivant montre deux exemples de réduction de résolution, un en mode 7 bits (à gauche) et un en mode 4 bits (à droite).

   
delay_003b_graph_005j_7-bits delay_003b_graph_005m_4-bits
(Vout_NF = sortie CNA Non Filtrée)
   

Le réglage de résolution est défini par la position du potentiomètre RV1. Avec une tension de 0 V sur la ligne Res (broche RA1/AN1 du PIC) la résolution est de 16 bits. Avec une tension de 3,3 V sur la ligne Res, la résolution est de 1 bit.

   

Logiciel du PIC

Fichier compilé pour dsPIC33 (*.hex) disponible en libre service dans l'archive suivante.
Delay 003b - dsPIC33FJ12GP202 - 26/08/2023

Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

   

Prototype

Non réalisé.

 

Circuit imprimé

Non terminé.
   
delay_003b_pcb_components_top


Historique

27/08/2023
- Première mise à disposition.