Friday, January 5 2018

EHX Octave Multiplexer - Analyse

Suivant l'exemple de l'excellent site Electrosmash, je propose une analyse d'un circuit qu'ils n'ont pas traité.

Avant-propos

Cet article est le premier de - je l'espère - une longue série d'articles d'analyse de circuits audio analogiques. L'idée est de faire un format du même tonneau que sur Electrosmash, donc un article par effet, un peu de remise en contexte, et de l'électronique analogique qui tâche. Je vais tâcher de ne pas être trop cryptique, mais il faut bien garder à l'esprit qu'il s'agit ici d'analyser des circuits qui ne sont pas forcément des plus simples. Donc je ne pourrai pas systématiquement être accessible. Bon, j'avoue, être accessible c'est compliqué et je ne sais pas trop faire. Donc, d'avance, pardon aux familles, toussa.

Présentation

Nous allons donc aujourd'hui étudier un effet pas forcément très couramment utilisé, mais hautement intéressant, du fait qu'il s'agit d'un circuit full-analogique, avec une topologie dont il y a beaucoup à apprendre, avec plein de fonctions analogiques relativement simples, combinées entre elles pour modifier le son de façon remarquable. En clair : une approche de design que j'apprécie particulièrement !

Avant-propos sur Electro-Harmonix - abrégé EHX

Electro-Harmonix (je vais dire EHX à partir de maintenant, s'pas ?) est une marque historique. Déjà parce qu'elle existe depuis longtemps, mais surtout parce qu'elle est à l'origine de plusieurs effets légendaires : Big Muff (fuzz), LPB (booster), Small Clone (le chorus de Kurt Cobain), POG (utilisé par Jack White, et Omar Rodriguez, entre autres), Memory Man (délai analogique) et bien d'autres. Leurs produits ont plusieurs caractéristiques intéressantes:

  • Les boîtiers sont quasi-identiques aux boîtiers Hammond, ce qui permet de facilement les caractériser par leur taille.
  • Généralement ils ne sont pas très chers. Le trip "boutique" ce n'est pas trop leur truc chez EHX.
  • La qualité des designs est très aléatoire. J'ai lu récemment sur un blog un mec qui disait qu'ils étaient toujours entre "genius" et "drunk", parfois simultanément sur le même circuit. Je suis assez d'accord.
  • Et quand je parle qualité de design, je parle aussi de la conception mécanique. Autant sur certaines pédales la conception est clean et pro, genre la Little Big Muff:

ehx_little_big_muff_open.jpg

Tous leurs nouveaux modèles ont ce niveau de qualité de fabrication. Par contre il reste dans leur catalogue des produits "legacy". Alors je veux bien qu'il ne faut pas "fix what is not broken", mais quand-même, le Small Clone ... comment dire ... NON !

ehx_small_clone_open.jpg

Par ailleurs vous aurez remarqué que sur la photo de la Little Big Muff il y a comme un problème sur les soudures du footswitch. Eh oui, c'est de la fabrication industrielle, et des fois il y a des bugs de fabrication ...

Tout ça pour dire que selon moi ce n'est pas la marque qui fait les effet de meilleure qualité, mais vu le prix ...

Octave Multiplexer, c'est quoi ?

L'Octave Multiplexer est un octaver - DUH ! - qui ajoute une octave en-dessous du signal, et pas au-dessus comme les octavers "historiques" - genre l'Octavia.

ehx_octave_multiplexer_panel.png

Il dispose de trois potars : deux filtres pour les basses fréquences et les hautes-fréquences et un blend. Il y a en plus un petit switch qui permet d'accentuer les infra-basses, ce qui a tendance à accentuer les harmoniques aiguës, du fait de divers effets de cross-distortion. Un jack d'entrée, et - truc bien pensé - deux jacks de sortie, en wet et en dry, ce qui permet de garder le signal non-traité disponible, même si l'effet est activé. C'est très pratique, et je pense que plus d'effets devraient disposer d'une telle sortie.

Globalement cet effet est conçu pour travailler sur un signal monophonique et clean. Sur des accords et/ou un signal saturé il a tendance à donner n'importe quoi. On verra dans l'analyse du circuit le pourquoi.

Différentes versions

Ici je vais principalement traiter l'Octave Multiplexer "tout court", parce qu'il est au catalogue d'EHX, et parce que j'en ai un, mais aussi parce que le circuit est quand-même plus simple, donc plus facile à analyser. Cependant, il s'agit là d'un produit assez récent - moins de 10 ans. Or, il existe une version antérieure, plus complexe, nommée Deluxe Octave Multiplexer. C'est un effet qui a été conçu dans les années 70, et qui entre dans un boîtier beaucoup plus gros, le circuit est plus complexe, et cette pédale n'est plus fabriquée. Très honnêtement, les extraits sonores faits par des gens qui ont un Deluxe "vintage" ne me donnent pas l'impression qu'il y ait une grosse différence de son, à part le fuzz intégré, qui est ultra-basique (juste un écrêteur shunt à diodes). Donc je vais en parler à la fin, mais c'est la version "pas Deluxe" que je vais analyser principalement.

A noter qu'il y a eu une version "vintage" de l'Octave Multiplexer pas-Deluxe. A priori il s'agit du même circuit que l'actuelle.

Exemples

Quelques extraits, avec pour commencer, bien entendu, la vidéo de démo PGS:

Pour comparer, deux vidéos de la Deluxe Octave Multiplexer:

De mon côté, j'ai acheté une Octave Multiplexer en 2010, et je l'ai toujours sur mon pedalboard depuis. Je m'en sers comme réhausseur, pour avoir plus de patate sur du lead, sans aller m'embarquer dans les hautes fréquences, ce qui aurait tendance à casser les oreilles, ni les mediums où ça serait trop brouillon. J'ai un bon son "à-la-Jack-White", bien massif, avec la combinaison compresseur -> Octave Multiplexer -> EHX Germanium OD -> MXR Double Shot. Sur une telle combinaison il est très important de mettre l'Octave Multiplexer AVANT les overdrive / distortions pour que la pédale ne perde pas les pédales justement, et arrive à suivre le signal. Je l'ai déjà dit et je le redis : cette pédale est monophonique, et gère très mal les sons saturés, il faut lui rentrer un son monophonique clean pour qu'elle fonctionne bien.

J'ai fait un extrait audio, avec la Cyclone #1 (micros Lollar Imperial), avec un compresseur (TC Hypergravity) -> Octave Multiplexer -> Germanium OD -> JS Distortion (fuzz) (VST en JS intégré dans Reaper) -> ROLLAMP (VST). D'abord la guitare clean, puis la fuzz, puis avec compresseur, puis comp + Germanium OD (j'ai mis un réglage pas trop extrême, mais on entend bien le gate, qui est ce que je veux obtenir avec ce réglage), puis tout activé.

C'est du lourd ! Mais l'on remarque déjà que l'association Germanium OD + Octave Multiplexer est très bruyante. Un noise gate est requis (je n'en ai pas mis ici) spécifiquement pour ces deux pédales, sinon c'est vite ingérable et insupportable.

Le circuit

Voici donc le schéma de l'Octave Multiplexer:

ehx_octave_multiplexer_sch.gif

Il s'agit d'un schéma qui date de 1975. A l'époque il y avait déjà deux produits séparés, Deluxe et pas-Deluxe. L'on peut supposer que l'Octave Multiplexer actuel utilise le même circuit. Le switch "bass filter" au milieu à gauche et le switch "range" au milieu en haut, dont il est précisé dans le texte en bas à droite qu'il s'agit d'un seul et même switch DPDT, doit correspondre au switch "Sub ON/OFF" de la version actuelle. Les potentiomètres sont les mêmes.

Bon, ok, c'est pas très lisible, c'est du schéma "à la main" bien old-school. Je l'ai re-saisi sous LTSPICE, et déplié pour qu'il soit plus lisible et qu'on comprenne mieux le chemin du signal. Ça donne ça:

octave_mult_simu_sch_01.PNG

octave_mult_simu_sch_02.PNG

Hum ... c'est encore moins lisible. Ça va aller mieux une fois qu'on aura découpé les différentes fonctions.

Topologie générale

Découpons donc les différentes sous-fonctions du circuit:

ehx_octmult_functions_01.PNG

Et la même chose sur le circuit LTSPICE. Vu que je vais me baser dessus pour la suite de l'analyse, il vaut mieux que je ne fasse référence qu'à lui par la suite, par souci de cohérence.

topology_01.PNG
topology_02.PNG

Quelques indications sur la simulation avec LTSPICE

Sur la simulation j'ai ajouté:

  • Les sources pour la simulation, à savoir mon extrait habituel de guitare, du solo de An Evening To Remember, celui que j'utilise tout le temps pour mes simulations, et un sinus à 1kHz / 100mV P-P, pour les simulations plus courtes.
  • Des paramètres SPICE, à savoir la commande .tran pour lancer l'analyse transient, et des constantes pour les contrôles. Le switch de SUB va être géré par une constante qui prendra 0 ou 1 et qui va commander des switches. J'aurai aussi une commande .ac pour faire une analyse AC, mais je la réserverait aux sous-fonctions qui méritent une telle analyse. Enfin, j'ai une commande .wave pour générer un fichier .wav automatiquement. Cette possibilité de générer un fichier .wav directement a été suffisante à elle seule pour me convaincre d'abandonner TINA, qui ne me permettait pas de faire ça, donc pour exporter du son c'était un bordel pas possible.
  • Entre la fonction waveform reconstruction et le filtre de sortie il y a un buffer en plus (U12), ne pas en tenir compte, c'est une coquille.
  • Sur la génération d'octave j'ai dû ajouter un étage de sortie à la bascule D (A2) car le modèle génère du 0-1V alors qu'en vrai on va générer du 0-9V, donc j'ai mis un comparateur avec un seuil à 500mV pour reproduire ce comportement.

Et donc j'ai enlevé:

  • Le circuit qui fabrique la tension de référence à VCC/2, vu que j'ai mis une source de tension pour ça (vref).
  • Le switch de bypass, ça ne sert à rien de dépenser du CPU à simuler ça.

Je détaillerai les autres différences au fur et à mesure que je parcourrai les différents sous-blocs.

Concernant les sources de simulation:

  • Les tensions DC ce sont des objets voltage dont j'ai juste changé la valeur.
  • Pour faire une tension AC, il faut un objet voltage, puis clic droit dessus, choisir Advanced et sélectionner le type de source que l'on veut. ici j'ai pris SINE.

ltspice_voltage_source_01.PNG ltspice_voltage_source_02.PNG

  • Pour faire une analyse AC, il faut qu'il y ait une source qui soit identifiée comme la source AC, et mettre une amplitude AC sur cette source. Il faut qu'il y ait une seule source voltage qui ait sont champ amplitude AC rempli, et ce sera selle-là qui sera utilisée comme source pour l'analyse AC. Le champ en question c'est le champ AC Amplitude dans le bloc Small signal AC analysis (AC). Mettez 0.1, ça le fait dans la majorité des cas.
  • Pour créer une source de tension composée d'un calcul - ou d'un calcul sur d'autres sources - il faut utiliser l'objet bv, et mettre dans sa valeur le calcul à produire. Par exemple, pour faire un sinus de 1kHz qui augmente en amplitude de 0 à 1V en 500ms (pour tester des circuits sensible à l'enveloppe par exemple), je créé une source voltage en SINE à 1kHz / 1V, une autre source voltage en PWL avec deux points 0s / 0V et 500ms / 1V. Je met un label vsin sur le sinus et un label venv sur le PWL. Enfin un objet bv dans lequel la formule sera V=V(vsin)*V(venv). Tout simplement.

ltspice_voltage_source_03.PNG

  • Pour les potars, je fait un pont avec deux résistances et je définis leurs valeurs par rapport à la valeur max du potar et un paramètre. Dans la valeur de la résistance, deux façon de l'écrire, soit entre crochets ({}) mettre la formule, par exemple {100k*(1-Rsens)} pour la résistance du haut du pont, {100k*Rsens} pour la résistance du bas du pont. Le paramètre devra s'appeler Rsens (.param Rsens=...), il variera de 0 à 1, 0 représentant le potar à fond à gauche, 1 le potar à fond à droite. Si on veut on peut utiliser une autre range, par exemple sur les amplis les potars sont notés de 0 à 10 (pour les fabriquants normaux), voire 0 à 11 (Marshall), et même 0 à 12 (certains Fender), on peut. Si on veut avoir un paramètre qui va de 0 à 10 par exemple, on divisera le paramètre dans la formule par 10, tout simplement ({100k*Rsens/10}). Une autre façon d'entrer la formule, sans crochets, on met R=100k*Rsens. La formule est la même que pour la notation précédente, par contre pas de crochets, et on met bien R= devant. Cette deuxième notation a l'avantage de ne pas accepter que les paramètres en .param, mais également les labels du circuits. Ce qui permet de rendre une résistance dépendante d'une tension labellisée, par exemple pour simuler une résistance qui augmente linéairement on peut utiliser la formule R=100k*V(venv) qui utilisera la source de tension en PWL du point précédent. Éminemment pratique pour faire varier un paramètre dans le temps et entendre son influence sur le son.
  • Attention avec les paramètre et les résistances, LTSPICE n'aime pas du tout les résistance de valeur nulle, il ne faut donc faire gaffe à ce que les calculs ne leur donne pas une valeur nulle. Par exemple, si on fait varier une résistance avec R=V(venv)*... avec venv qui est un PWL, il faut soit définir la valeur min du PWL à une valeur non-nulle, par exemple 0.001V au lieu de 0V, soit ajouter une petit valeur au calcul (R=V(venv)*Rsens+0.001 par exemple) pour éviter que la résistance se retrouve nulle. Si on a une valeur nulle à un moment, ça fait planter la simulation, mais pas clairement, juste il ne fait pas varier la résistance. Ultra-relou à débugger.
  • Pour faire une source à partir d'un fichier wav, il faut un objet bv dont la valeur sera wavefile=.\guit_sample_01.wav chan=0, où guit_sample_01.wav est le nom de votre fichier wav, et chan=0 est le canal, ici en mono il n'y en a qu'un, mais si c'est un fichier stereo - voire plus - alors on choisit le canal qui va être lu.
  • Pour créer un fichier wav à partir d'une tension du circuit, il faut mettre un label sur le signal en question pour que le net ait un nom, et créer un paramètre .wave .\oct_mult_01.wav 16 44100 V(out), avec le nom du fichier de sortie, le bitrate (16 bits ici, qualité CD standard), la fréquence d'échantillonnage (44100, qualité CD classique), et indiquer en dernier la grandeur à convertir, ici la tension (V) du label out (donc V(out)). A noter que pour que le signal soit audible et non déformé il faut qu'il soit centré autour de zéro (les fichiers wav sont signés, donc pas d'offset) et qu'ils soient compris entre -1V et 1V, tout dépassement étant saturé.
  • Pour les switches, il faut utiliser l'objet sw (voltage controlled switch). Le truc, c'est que ce symbole requiert en fait un modèle que l'on doit définir "à la main". Donc il faut ajouter un paramêtre .model myswitch SW(Ron=0.001 Roff=100MEG Vt=0.5 Lser=0 Vser=0)Ron est la résistance quand le switch est fermé, et comme pour les résistances fixes on ne peut pas mettre 0, donc il faut mettre une valeur faible, genre 1mOhm, Roff la résistance quand ouvert (mettre beaucoup), Vt le seuil de déclenchement (là jevais déclencher avec un 0 ou 1, donc je mets 0.5), Lser l'inductance série et Vser la tension série. Les deux derniers on peut mettre 0. myswitch" est un nom quelconque, on peut mettre ce qu'on veut - et donc réutiliser le même modèle pour tous les switches, ou bien avoir des modèles différents avec des comportements différents. Il faut indiquer dans le switch que c'est ce nom de modèle qu'il faut utiliser, donc clic droit et mettre myswitch"" dans le champ Value. Pour le commander je mets une source de tension arbitraire bv qui prend la valeur du paramètre de switch (normalement ouvert) ou 1 - le paramètre (normalement fermé).
  • Si on met une source de tension (objet voltage) pour commander un switch il faut le référence d'un côté o^de l'autre à la masse sinon SPICE sort une erreur.

Étage d'entrée / pré-amplificateur / filtre

/public/stomp/octave_multiplexer/ehx_octmult_input_01.PNG

Attaquons (enfin) le circuit en commençant par l'étage d'entrée. Comme quasiment tous les effets pour guitare, le premier étage est un buffer qui diminue l'impédance des micros et amplifie le signal ultra-faible qui en sort. Ici cet étage fait aussi office de buffer pour la sortie dry et le blend final, donc le tout premier étage est un buffer de gain unitaire, et c'est le deuxième étage, le filtre, qui va amplifier.

Tout d'abord, tout le circuit est basé sur des topologies à amplificateurs opérationnels. Et qui dit amplificateur opérationnel dit plage de fonctionnement, donc petit rappel sur les contraintes de ce genre de circuits.

Les amplificateurs opérationnels sont alimentés avec une alimentation positive et une alimentation négative. Idéalement on le fait travailler sur des signaux qui sont polarisés le plus possible au milieu de la plage comprise entre les alims. Or, sur un circuit alimenté avec une seule pile - c'est le cas ici - le signal audio d'entrée est plutôt polarisé autour de la masse, donc du rail négatif. Donc, avant de faire entrer le signal dans les étages à ampli-ops, il faut le re-polariser vers le milieu de la tension d'alimentation. C'est pour cela que l'on va générer une tension de référence (et pas une putain de "masse virtuelle", ce terme ne sert qu'à embrouiller et rien d'autre) qui sera utilisée pour cette re-polarisation. La tension de référence est définie à la moitié de la tension d'alimentation des ampli-ops pour que tous les signaux soient polarisés bien au milieu de la plage utile, de façon à avoir le "headroom" maximal pour l'alimentation disponible. Pour générer cette référence, un simple pont diviseur avec deux résistances de même valeur entre l'alim et la masse, une capa pour stabiliser les appels de courants, et c'est tout. Mieux : mettre un ampli-op en suiveur pour diminuer l'impédance de la référence. Et pour effectuer la polarisation d'un signal : capa en série et résistance de tirage à la référence. Il s'agit d'un passe-haut, qui coupe donc les basses fréquences - à la base le besoin c'est de couper le DC, donc la fréquence 0Hz. Pour ne pas perdre en basses il faut prendre des composants qui font que la coupure n'a pas lieu trop haut. Ici ce filtre DC est fait par C1 et R6, la fréquence de coupure à -3dB est: tau = R x C = 100 000 x 0.0000001 = 0.01 => fc = 1/(2 x Pi x R x C) = 15.92Hz

A 16Hz on est suffisamment bas pour ne pas dénaturer le signal.

Un transient du point B sur 200ms avec un signal à 1kHz donne:

/public/stomp/octave_multiplexer/ehx_octmult_input_02.PNG

On voit bien que le signal d'entrée (en vert) est juste déplacé autour de 4.5V (en rouge). Le bode du même point:

/public/stomp/octave_multiplexer/ehx_octmult_input_03.PNG

On a bien une fréquence de coupure à 15.9Hz.

Le premier ampli-op est monté en suiveur. La résistance R1 de 10k à la masse ne sert à rien vu que c'est la sortie de l'ampli-op qui définit la polarisation. Je ne comprend pas trop l'intérêt de cette résistance. Bon, donc à la sortie du premier ampli-op U1, on a, sur le label dry, le signal d'entrée juste adapté en impédance - il a l'impédance de la sortie de U1 en parallèle avec R1. Ainsi bufferisé, ce signal pourra être ré-utilisé à d'autres endroits du circuit sans perturber le reste de l'étage d'entrée.

Voyons le reste, justement. En parallèle de ce premier étage, un autre ampli-op va traiter le signal d'entrée, mais en le filtrant cette fois. La forme du filtre est définie par le réseau R2-R3-R4-R5-C2-C3-C4. Le switch S1 modifie la forme du filtre et le gain. On va y aller pas à pas pour analyser ce filtre. Déjà on va regarder avec S1 ouvert.

Dans un premier temps, on reconnait le schéma de l'ampli non-inverseur auto-polarisant, si on ne garde que R2, R4 et C4:

/public/stomp/octave_multiplexer/ehx_octmult_input_04.PNG

Petite (grosse) digression : J'appelle cette topologie "auto-polarisée" car il y a une capa au pied du pont diviseur du feedback, ce qui permet à l'ampli-op de définir lui-même la polarisation en DC du pont diviseur. Illustration : si on référence le pont diviseur à la masse et qu'on calcule la tension DC en chaque point, en entrée non-inverseuse de l'ampli-op on a 4.5V DC du fait du filtre DC précédent, en sortie on a 4.5V à priori du fait que l'ampli-op va garder la polarisation. Et au niveau du pont diviseur on a ... (remember théorème de Millman):

/public/stomp/octave_multiplexer/ehx_octmult_input_04c.PNG

0,28V, don on envoie un signal polarisé à 0.28V sur l'entrée inverseuse de l'ampli-op. Or, comme un ampli-op amplifie l'AC ET le DC, il va amplifier le DC de V+ - V-, donc 4.5V - 0.28V, avec son gain monstrueux, donc il va partir directement en saturation sur le rail d'alim positive. Pour régler ce problème, il faut que la polarisation en DC du pied du pont R2-R4 soit la même que la polarisation de l'entrée du pont. Solution simple : au lieu de référencer le pont diviseur à la masse (alim négative de l'ampli-op), on la référence à la tension ... de référence justement.

/public/stomp/octave_multiplexer/ehx_octmult_input_04d.PNG

Là, en théorie, tout va bien, les deux extrémités du pont diviseur de feedback sont bien sur un DC identique à 4.5V, donc le DC du signal qui arrive sur V- est bien à 4.5V, comme V+, il n'y a donc aucun DC sur V+ - V- et seul l'AC va être amplifié. C'est bien ce que l'on veut. Bon, en fait il y a des défauts à cette topologie, sinon ça serait trop facile. En fait ça ne marche que si le DC est bien parfaitement le même partout. Or, il y a du courant qui va circuler dans le pont diviseur, et surtout le DC sur V+ est créé par une injection d'une tension DC à travers une résistance de valeur élevée (100k voir plus). Donc il suffit qu'il y ait un peu de courant de bias dans l'entrée de l'ampli-op pour qu'on ait pas exactement la même tension DC sur V+ et sur le pied de l'ampli-op. Pour le dire autrement : vref et V+ sont reliés par une résistance de forte valeur, donc si il y a du courant absorbé par V+ il y aura une tension aux bornes de la résistance et V+ ne sera pas exactement à vref.

En vrai, ce genre de problème n'est pas systématique. Il est possible si la référence de tension n'est pas bufferisée - et donc que le moindre courant consommé ou réinjecté modifié la tension, si les résistances de tirage DC sont élevées - ça c'est toujours le cas - et, vu qu'il s'agit d'un problème d'amplification du DC, si le gain de l'étage est élevé. Ici le gain statique avec R2 et R4 est de 16. Ça commence à faire beaucoup. Si on a par exemple un ampli-op vraiment pourri qui a un courant de bias de 1µA, sur 100k ça va faire un écart de 0.1V, qui va être amplifié par 16, donc 1.6V de décalage DC en sortie de l'ampli-op. Ça commence à faire beaucoup, même si avec 4.5V de chaque côté on a encore de la marge. On peut vivre avec mais ça n'est pas terrible.

La vraie solution pour ne pas être emmerdé, c'est de filtrer le DC sur le pont diviseur du feedback, un peu de la même façon qu'on filtre le DC sur le signal en entrée de l'ampli-op : on va ajouter une capa qui va couper le DC sur le pied du pont:

/public/stomp/octave_multiplexer/ehx_octmult_input_04b.PNG

Ici la tension DC au niveau de V- n'est plus dépendante du pied de R4, vu que le DC est coupé par la capa C4. Reste donc la sortie de l'ampli-op, et V-. La sortie de l'ampli-op ayant une impédance largement plus basse que V-, au jeu du Millman c'est elle qui gagne. Son DC est défini par rapport au DC de V+, donc au final le tout va se polariser au DC de V+, moyennant les courant de bias et les tensions d'offset, mais qui ne seront pas amplifiées par l'ampli-op, car dès qu'il y a un offset sur la sortie il est reporté sur le V- qui va le corriger. Donc cette topologie est beaucoup plus stable. L'on remarquera d'ailleurs qu'il est tout à fait possible de référencer sur vref ou bien sur la masse, vu que C4 coupe le DC ça n'a plus d'importance ! Référencer à vref tire du courant sur vref, mais permet d'avoir une tension DC très proche de 0V aux bornes de C4, ce qui permet d'améliorer sa durée de vie si c'est un électrolytique. Après, en général la tension de rating des capas est largement supérieure à la tension d'alim du circuit, donc ce n'est pas ça qui va mettre en péril la durée de vie du circuit, mais c'est à noter.

Bon, ouf ! On a fini de digresser, revenons à notre circuit. Nous avons donc un circuit ampli non-inverseur auto-polarisé. Le gain statique est défini par le pont R2-R4, qui divise par 16, donc le gain sera de 16, ce qui fait 12dB.

Petit défaut de cette topologie : c'est un filtre passe-haut. La fréquence de coupure est définie par:

tau = C4 x (R2 // R4) = 0.0000001 x (330 000 x 22 000 / (330 000 + 22 000)) = 0.0000001 x 20 625 = 0.0020625 => fc = 1 / (2 x Pi x tau) = 77.21Hz

Ah ! on commence à perdre des basses ...

/public/stomp/octave_multiplexer/ehx_octmult_input_05.PNG

Mais le feedback n'est pas constitué que de R2, R4 et C4. Ajoutons C2, C3 et R5:

/public/stomp/octave_multiplexer/ehx_octmult_input_06.PNG

C2, C3 et R5 viennent se mettre en parallèle de R2, et va donc réinjecter de l'AC vers V-, ce qui va donc provoquer un effet passe-bas sur le filtre global. Pour se simplifier le calcul on va supposer que la fréquence de coupure est vachement plus haute que le 77Hz du filtre R2-R4-C4, et donc ignorer C4. On va se simplifier la vie tout de suite, la capa équivalente à C2 et C3 en série, si les deux on la même valeur, c'est la moitié : Ce = 11nF. L'impédance équivalente à R2-R5-Ce est:

R2 // (R5 + C2 + C3) = (R2 x (R5 + 1/jCew)) / (R2 + R5 + 1/jCew)

En HF, ça fait donc une atténuation de:

R4 / (R4 + R2 // R5) = 22 / (22 + 330 // 15) = 22 / (22 + 14.35) = 1/1.65

(Oui, pour les calculs de gains je divise tout par 1000, ça permet de simplifier les calculs) Et en BF une atténuation de:

R4 / (R2 + R4) = 1/16

Ça c'est l'atténuation du feedback. L'ampli-op va tout inverser, on va donc se retrouver avec un gain de 16 (12dB) en BF, et un gain de 1.65 (2.2dB) en HF. On a bien fait un passe-bas.

Négligeons R5. La fréquence de coupure va être:

tau = Ce x (R2 // R4) = 0.000000011 x 20 625 = 0.0000099219 => fc = 701.9Hz

/public/stomp/octave_multiplexer/ehx_octmult_input_06b.PNG

Pour cette dernière courbe j'ai aussi multiplié C4 par 1000 pour être sûr qu'elle ne nous perturbe pas, ça permet d'isoler les différents filtres. On voit bien qu'il y a un gain de 0dB en HF, l'effet de R2-R4 est completement annulé par Ce en HF. Maintenant si on ajoute R5, d'une part un va remonter le gain en HF, qui ne sera plus à 0 mais à 2.2dB, et d'autre part la fréquence de coupure va baisser, du fait du déplacement du pôle engendré par C2 et C3 (Ce).

Ici le calcul est un peu relou, donc je ne vais pas le détailler en entier. Juste, on calcule l'atténuation du pont diviseur en négligeant C4, ce qui donne en haut R2 // (R5 + Ce) et en bas R4. Le calcul donne au final:

atténuation = (1 + jwCe x R4 x (R2 + R5))) / (R2 + R4 + jwCe x (R4 x (R2 + R5) +R2 x R5))

On divise par R2 + R4 en haut et en bas pour avoir au dénominateur un terme en 1 + jwRC, et ça donne un tau:

tau = Ce x (R4 x (R2 + R5) + R2 x R5) / (R2 + R4) => fc = 406.3Hz

Ce qui n'est pas du tout trivial.

/public/stomp/octave_multiplexer/ehx_octmult_input_06c.PNG

La fréquence est légèrement différente en simu parce que C4 a quand-même une petite influence sur l'amplitude à cette fréquence.

Allez, encore un effort, on finit avec R3:

/public/stomp/octave_multiplexer/ehx_octmult_input_07.PNG

Ici on voit qu'au final il s'agir de deux passe-haut RC en série : R5-R3-C3, puis R2-C4. On va donc avoir deux fréquences de coupure:

tau1 = C3 x (R3 + R5) => fc1 = 885Hz

tau2 = C2 x R4 => fc2 = 329Hz

C'est un petit peu plus compliqué que ça vu que les deux filtres interagissent, mais faire le calcul exact ne me semble pas très intéressant. Si on analyse le circuit de feedback seul en déconnectant R2:

/public/stomp/octave_multiplexer/ehx_octmult_input_07b.PNG

Et qu'on affiche la réponse en fréquence entre C2 et C1 (vert) et après C1 (bleu):

/public/stomp/octave_multiplexer/ehx_octmult_input_07c.PNG

On voit bien le passe-haut d'ordre 2 (qui passera passe-bas une fois remis dans la boucle de feedback de l'ampli-op). Si on reconnecte R2:

/public/stomp/octave_multiplexer/ehx_octmult_input_07d.PNG

R2 vient shunter le tout et ajouter du gain en BF. Au final on se retrouve avec un pic d'atténuation à 100Hz. Donc une fois remis dans le circuit complet on a une résonance à 100Hz:

/public/stomp/octave_multiplexer/ehx_octmult_input_08.PNG

On remarque donc que ce sont surtout les fréquences autour de 100Hz qui sont privilégiées. A mon avis cela permet de filtrer pas mal les harmoniques, de façon à avoir un signal le plus sinusoïdal possible. Mais ça ne marche bien qu'autour de 100Hz. En particulier au-delà de 1kHz le signal est atténué de 20dB. Et ça se remarque au son : l'effet est beaucoup moins efficace avec les notes aigües.

Mais mais mais mais mais nous n'avons pas traité le switch S1. Ce switch vient shunter R5:

/public/stomp/octave_multiplexer/ehx_octmult_input_09.PNG

D'ailleurs, pour mieux se rendre compte, on va le représenter comme ça:

/public/stomp/octave_multiplexer/ehx_octmult_input_09b.PNG

Voilà ! Donc on shunte R5, ce qui a pour conséquence secondaire de modifier la nature du pied du pont diviseur du feedback : C2 et C3 viennent shunter R4-C4, et donc le pont devient très fortement coupe-haut, et donc le filtre devient fortement passe-haut:

/public/stomp/octave_multiplexer/ehx_octmult_input_09c.PNG

On voit une grosse résonance à 20kHz. Au final la suite du circuit va l'atténuer à mort donc ça ne compte pas vraiment. On remarque surtout que le gain statique est plus élevé (30dB au lieu de 12dB) et qu'il n'y a plus de résonance à 100Hz. Ce réglage correspond plus à la tessiture d'une guitare, alors que le précédent (S1 ouvert) correspond plutôt à la tessiture d'une basse. Donc avec S1 fermé le circuit qui marche pour les notes hautes (pas uniquement les basses) et plus de sensibilité, mais tout en étant moins immune aux harmoniques, donc avec un tracking moins bon et un comportement moins facile à gérer.

Si on regarde un transient en faisant switcher S1, on remarque tout de suite la différence de gain, à 1kHz:

/public/stomp/octave_multiplexer/ehx_octmult_input_10.PNG

Quand on active S1 on gagne en gain. Et à 100Hz c'est l'inverse:

/public/stomp/octave_multiplexer/ehx_octmult_input_10b.PNG

Détection de passage à zéro / zero-crossing detection

L'étage suivant va transformer notre signal filtré d'entrée en un signal carré, et donc détecter le passage à zéro. Enfin ... pas vraiment le passage à zéro. On va représenter le schéma comme ça:

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_01.PNG

J'ai mis un buffer (U1) juste pour remplacer tout l'étage d'entrée. Simuler le filtrage d'entrée n'a pas d'intérêt ici pour comprendre comment marche cet étage. Cet étage doit traiter un signal sinusoïdal, et le but de l'étage d'entrée est de conditionner le signal d'entrée pour qu'il soit le plus sinusoïdal possible. R1 et C7 font passe-bas, mais surtout déphaseur. La preuve:

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_02.PNG

Ensuite ce signal déphasé est redressé par U3-D1 (alternance positive) et U6-D2 (alternance négative). Il y a un peu de détection de crête, côté alternance positive avec C5-R9, côté alternance négative avec C6-R9. Pour décharger C5 et C6, il y a R10, qui au lieu d'être référencé à la masse / référence, relie les deux sorties entre elles, ce qui les polarise l'une par rapport à l'autre et permet de garder une différence de tension entre les deux. En rouge et en bleu clair le redressement.

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_03.PNG

Ces deux signaux vont être comparés au signal d'entrée déphasé, de façon à générer des fronts à un point particulier de la sinusoïde. Sur la simu suivante j'ai représenté en rouge et en bleu clair les tension (V+ - V-) des deux ampli-ops qui font la comparaison (U5 et U4), et j'ai mis un offset de 4.5 pour que les courbes soient au même niveau que le signal d'entrée, pour que ça soit lisible.

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_04.PNG

Sur cette simulation, le seuil de changement d'état des ampli-ops est donc à 4.5V (vu que j'ai mis un offset sur les courbes). Ce que l'on voit donc, c'est que ce seuil n'est dépassé côté alternance positive, que sur le "haut" de la courbe bleue foncée - le signal d'entrée déphasé - et côté alternance négative sur le "bas" de la courbe bleue foncée. Donc ici, on n'est pas en train de détecter le passage à zéro, mais plutôt le passage à la valeur max. D'où ma dénomination "zero-crossing" qui est un peu abusive. D'ailleurs, regardons tout de suite les sorties des ampli-ops:

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_05.PNG

En rose et en gris on voit donc que l'on créé des impulsions quand la courbe bleue foncée s'approche d'un min ou d'un max. Depuis le début de cette section j'ai laissé le signal d'entrée non déphasé, car c'est bien par rapport à ce signal que l'on cherche à générer les impulsions. En fait le but de ce circuit est de générer des impulsions quand le signal d'entrée atteint un min ou un max. On cherche à créer un évènement - un front de signal - quand la courbe atteint un max ou un min. Or, même si "géométriquement" ce n'est pas difficile à identifier, électroniquement ce n'est pas si évident. Pour générer des fronts à partir d'un état d'un signal, la solution technique disponible immédiatement c'est le comparateur. Malheureusement, un comparateur a besoin de comparer deux signaux, justement. Or, ici, le changement d'état intéressant sur le signal a lieu sur la dérivée du signal, pas sur le signal lui-même. Dans ce cas, il y a deux façons de réussir à créer cette comparaison:

  • Calculer la dérivée du signal, et détecter son passage à zéro
  • Détecter le fait que le signal dépasse un certain seuil, puis recaler par rapport au signal en décalant le front, voire simplement en décalant directement le signal comparé (ça revient au même que de décaler les fronts générés)

C'est cette deuxième solution qui est utilisée ici. Pour détecter le dépassement d'un seuil, on ne va pas utiliser un seuil fixe, qui ne serait efficace que pour une marge d'amplitudes de signal très faible, mais on va générer un seuil "suiveur", généré à partir de l'enveloppe du signal. Et même deux seuils, un pour l'alternance positive et un pour l'alternance négative. Le fonctionnement est le même des deux côtés, complétement symétrique. On fait un détecteur de crête classique avec diode-ampli-op (diode "parfaite") + capa, que l'on ralentit en mettant une résistance en série de la capa (c'est le rôle de R9). Regardons uniquement l'alternance positive, donc. Vu que le détecteur de crête est ralentit, lorsque le signal d'entrée approche de son plateau la capa de sortie ne se remplit plus assez vite pour que la tension à ses bornes puisse suivre le signal, et donc cette tension se retrouve momentanément inférieure à la tension d'entrée. Elle redevient supérieure dès que la capa a fini de se remplir et que la tension d'entrée commence à redescendre:

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_06.PNG

Et avec le signal de sortie du comparateur:

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_07.PNG

L'on remarquera qu'entre le temps de réaction du comparateur et de la diode, les retards divers dûs aux capas et résistances, le front n'arrive pas du tout précisément au point de détection. C'est le défaut de ce genre de circuit : ça n'est pas du tout précis. D'où d'ailleurs la présence de R1-C7, dont le but est de faire un pseudo-recallage du signal en pré-décalant le signal comparé, de façon à ce que le résultat soit mieux synchronisé avec le signal d'entrée (en vert, non déphasé). Bon, c'est pas vraiment ça ...

Maintenant que l'on a nos fronts quand le signal est - à peu près - à son max et son min, on va générer un beau créneau avec une bascule RS, ici A1. Le modèle que j'ai utilisé est celui d'une bascule D (objet dflop dans Digital) qui dispose en plus de son D et son CLK d'une entrée set (PRE) et reset (CLR). Sur le vrai circuit c'est un 4013, totalement strandard. Vu qu'on ne s'en sert que comme bascule RS, D et CLK sont tirés à la masse. L'impulsion de l'alternance positive est utilisée pour le SET, l'impulsion de l'alternance négative est utilisée pour le RESET. On obtient donc un signal carré qui passe à 1 quand le signal d'entrée atteint un maximum, et à 0 quand il atteint un minimum:

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_08.PNG

Ce signal est donc à 1 quand la sinusoïde "monte", et à 0 quand la sinusoïde "descend". En soi il n'est pas très utile.

Génération d'octave

Ici on utilise la deuxième moitié du 4013 en bascule T, ce qui est équivalent à faire un compteur jusqu'à 2. Ce qui permet de générer un signal dont la fréquence est divisée par deux. On commence à voir venir la finalité du signal.

/public/stomp/octave_multiplexer/ehx_octmult_zerocross_09.PNG

Filtrage / reconstruction du signal

On entre dans les choses sérieuses. Je vais utiliser le circuit suivant pour la simulation:

/public/stomp/octave_multiplexer/ehx_octmult_waveform_01.PNG

Dans ce circuit, j'ai donc éliminé l'étage de filtrage d'entrée - on suppose qu'on a un beau sinus donc je prends un générateur qui fait un sinus comme sur les sections précédentes. Comme je l'ai dit plus haut les circuits logiques (Digital) dans LTSPICE génèrent des signaux entre 0V et 1V, d'où U7 et V4 qui servent à simuler l'étage de sortie d'un vrai 4013, qui sera entre la masse et la tension d'alim, vu qu'il s'agit d'un composant CMOS. R12 et R13 sont bien présentes sur le circuit d'origine, elles servent à transformer le signal carré 0V-9V en 0V-4.5V, ce qui va servir à commander le JFET suivant (J1) utilisé en switch, comme sur les switchs discrets des pédales BOSS ou Ibanez. Pour rappel il s'agit d'un JFET canal N, qui va donc être passant si la tension Vgs est négative, et bloqué si cette tension est nulle. Ici la source est référencée à vref, donc pour avoir une tension négative on tire à la masse. Si on le commande en 4.5V-0V on a exactement le comportement attendu. L'on vient donc tirer ou pas R20 à vref.

Le circuit autour de U8 est un ampli différentiel. Lorsque J1 est ouvert (bloqué) on obtient le circuit suivant:

/public/stomp/octave_multiplexer/ehx_octmult_waveform_04.PNG

On remarque que le signal d'entrée (dry) est splitté en deux. D'un côté on l'envoie vers V- à travers R2, de l'autre on l'envoie vers V+ à travers C2-R4, puis C1-R5. Ces deux filtres passe-haut RC n'ont que peu d'influence sur le signal en lui-même, ils coupent tous les deux vers les 16Hz, ce qui fait que V+ récupère tout le signal AC, alors que côté V- R2 "bloque" l'AC. On a donc un ampli non-inverseur:

/public/stomp/octave_multiplexer/ehx_octmult_waveform_02.PNG

Lorsque J1 est fermé on a le circuit suivant:

/public/stomp/octave_multiplexer/ehx_octmult_waveform_05.PNG

On voit que V+ ne voit plus du tout le signal d'entrée, elle est shuntée à vref. Donc le circuit devient un ampli inverseur:

/public/stomp/octave_multiplexer/ehx_octmult_waveform_03.PNG

Nous avons donc un signal carré, dont la fréquence est la moitié de la fréquence du signal audio d'entrée, plus ou moins phasé sur un maximum du signal d'entrée. Ce signal vient commander un JFET qui sélectionne l'inversion du signal d'entrée. Lorsque le signal de commande est à 1 on n'inverse pas le signal, lorsqu'il est à 0 on inverse le signal. De cette façon, une période sur deux du signal d'entrée sera inversée. Si on colle ces deux moitiés de signaux bout à bout ... on obtient un signal qui fait la moitié de la fréquence !

/public/stomp/octave_multiplexer/ehx_octmult_waveform_06.PNG

Et voilà !

/public/stomp/octave_multiplexer/ehx_octmult_waveform_07.PNG

Ça c'est de l'ingéniosité ! Néanmoins il y a plusieurs inconvénients à cette méthode:

  • Le signal reconstitué n'est pas exactement le signal d'entrée divisé en fréquence par deux, même avec une sinusoïde parfaite - la simulation le montre bien d'ailleurs
  • Le déphasage du signal de commande avec les maximums / minimums du signal d'entrée créent un "faux raccord", ce qui provoque des artefacts en HF - ça aussi la simulation le montre bien
  • Si on a un signal un peu plus complexe qu'un sinus, ça fait un peu n'importe quoi. Ça peut être voulu ... ou pas !
  • Ça ne marche bien que pour générer l'octave immédiatement en-dessous. On ne peut pas directement diviser la fréquence par quatre par exemple avec ce circuit. On ne peut diviser correctement que par 2.

/public/stomp/octave_multiplexer/ehx_octmult_waveform_08.PNG

Bon, ce signal va quand-même être un peu traité derrière, filtré, puis remixé avec le signal d'entrée.

Filtrage / mix

/public/stomp/octave_multiplexer/ehx_octmult_output_01.PNG

Nous avons affaire à deux "signaux de sortie", que j'ai appelé wet et wet_bass. Le switch (S2, S3) permet de sélectionner le quel des deux va être mixé au signal d'entrée à travers R28-R29. wet passe à travers un filtre passif composé de R17, R19, R23, C10, C11 et C12. wet_bass passe à travers un filtre actif composé de U9, R22, C15, R24, R25, C14, R27 et C13. Analysons d'abord le premier filtre:

/public/stomp/octave_multiplexer/ehx_octmult_output_02.PNG

On constate qu'il y a un passe-bas avec R17-C10-R23, réglable par R23 qui est le potar HI filter. Ce potar permet de régler le volume d'aigües, qui est définit par le pont R17-R23. Quand R23 est à 0 les aigües sont totalement coupées, quand il est au max (10k) l'atténuation est 10k / (10k + 4.7k) = 0.68 => -3.3dB. La fréquence de coupure va varier en fonction de la position de R23, mais elle va se situer aux alentours de:

tau = R17 x C10 = 705µs => fc = 226Hz

La réponse est la suivante, en vert avec le potar à 0.1, en bleu à 0.5, en rouge à 0.9:

/public/stomp/octave_multiplexer/ehx_octmult_output_03.PNG

Si on ajoute C12, on ajoute atténue encore plus les aigües, à une fréquence plus élevée puisque C12 est plus petit que C10. Comme il est 7 fois plus petit, on peut supposer que la fréquence de coupure sera approximativement 7 fois plus grande, donc fc = 1582Hz:

/public/stomp/octave_multiplexer/ehx_octmult_output_04.PNG

Enfin on ajoute C11, qui vient réinjecter un peu d'aigües pour compenser l'atténuation de C12:

/public/stomp/octave_multiplexer/ehx_octmult_output_05.PNG

Le deuxième filtre est un filtre actif, Sallen-Key à gain variable:

/public/stomp/octave_multiplexer/ehx_octmult_output_06.PNG

Il y a une analyse un peu détaillée des filtres Sallen-Key ici.

Pour rappel, les filtres Sallen-Key sont une topologie assez courante, mais qui a comme principal défaut que les HF passent vers la sortie via la capa "shunt" (ici C15) ce qui fait remonter la réponse en fréquence en HF, mêrme sur un circuit passe-bas. Il faut donc soit ajouter un passe-bas en aval, soit utiliser une autre topologie.

Bon, ce n'est pas exactement un Sallen-Key "by the book", il y a C14 en supplément, je le suspecte d'être là pour compenser la remontée en HF. Si on l'ignore, on a la réponse suivante:

/public/stomp/octave_multiplexer/ehx_octmult_output_07.PNG

Si on prend les formules données ici, on a une fréquence de coupure à 116Hz quand le potar filter HI au max (100k). Quand on diminue le potar, la fréquence de coupure augmente.

Et si on ajoute C14:

/public/stomp/octave_multiplexer/ehx_octmult_output_08.PNG

Bon ben ça baisse juste la fréquence de coupure, et la pente en HF est plus régulière. Rien de bien méchant.

Donc, en conclusion, le filtre passif fait passe-bande autour de 100HZ-300Hz, et le filtre LOW amplifie encore ce passe-bande, avec une sélectivité plus élevée, et plus de gain. A noter que le filtre d'entrée n'a pas vraiment d'impact direct sur la bande passante en sortie, vu que le signal qui est utilisé pour le blend en sortie est pris avant le filtre d'entrée.

Quelques extraits

Je vais utiliser mon extrait de 5 secondes habituel, extrait du solo de An Evening To Remember:

Si on met tout à midi, avec SUB à 0:

Si on met tout à midi, avec SUB à 1:

Si on met tout à midi, blend à 100%, SUB à 0, pour mieux entendre l'effet:

Si on met tout à midi, blend à 100%, SUB à 1:

Pour mieux entendre l'effet de chaque réglage, je vais faire varier un réglage de 0 à 100% pendant l'extrait, le reste à 50%, blend toujours à 100%. Si on fait varier le filtre HI:

Si on fait varier le filtre LOW:

Si on fait varier SUB de 0 à 1:

Pour voir, j'ai échangé le sens des deux moitiés du switch, c'est à dire que j'ai mis le filtre d'entrée du SUB=1 avec le mix de sortie du SUB=0, et vice-versa, pour voir ce que ça change, en changeant SUB dans un sens:

Puis dans l'autre sens (pour mieux entendre):

Deluxe Octave Multiplexer - Les différences

Pour le modèle Deluxe j'ai trouvé le schéma suivant:

/public/stomp/octave_multiplexer/ehx_DeluxeOctaveMultiplexer.gif

Bon, tout de suite, le schéma est quand-même vachement plus complexe. Néanmoins on reconnait globalement les mêmes fonctions:

/public/stomp/octave_multiplexer/ehx_deluxe_octmult_functions_01.PNG

Le buffer d'entrée est le même (U1), le blend en sortie ressemble, par contre le reste ...

Déjà l'alim est symétrique, c'est du +12V / -12V, donc il va y avoir plus de headroom.

Le filtre d'entrée n'est plus un simple filtre fixe, mais il y a un OTA dans la boucle (U2, CA3080, OTA très courant dans les années 70/80, maintenant remplacé par le LM13700), et un détecteur d'enveloppe (U3, LM1458 + D1-D2-D3-D4), on peut donc tabler sur un compresseur / filtre variable. La boucle de contre-réaction est gérée par U3, Q1 et Q2. Ici la sensibilité a un potar dédié, qui va juste faire varier l'amplitude du signal qui entre dans le filtre, rien de plus.

En sortie de ce filtre il y a un shunt parallèle (D5-D6-D7-D8), visiblement uniquement pour éviter que l'amplitude en sortie du filtre ne soit trop élevée.

Puis le détecteur de passage à zéro. Là, même si le schéma a l'air de ressembler de loin, en fait ce n'est pas vraiment le même fonctionnement que sur le non-deluxe. Le redressement est fait en double-alternance, et va ensuite commander deux OTA (U9 et U10, CA3094), et là je ne comprend pas le fonctionnement de ce circuit. Dans tous les cas, par la suite le signal est "digitalisé" / transformé en signal carré par U11 (LM311, comparateur avec sortie collecteur ouvert). Vu que ce composant donne accès sur une pin à l'émetteur du transistor de sortie, c'est utilisé pour faire un mute.

Le Mute a son petit circuit de commande dédié drivé par U12 (qui est aussi un LM311), qui va générer un signal de commande pour faire un mute quand l'amplitude du signal est trop faible.

La génération d'octave est faite avec un 4013 ici aussi, mais vu que U11 a déjà généré un carré à la fréquence du signal d'entrée, les deux moitiés du composant sont utilisées en bascule T / compteur à 2, pour générer le signal divisé par 2, et un autre re-divisé par 2, de façon à avoir l'octave du dessous, et celle d'encore en-dessous (nets B et C).

La reconstruction de la forme d'onde se fait de la même façon que sur le non-deluxe, avec un ampli différentiel commandé par un JFET. Ici il y a deux étages, un pour l'octave du dessous (Q3-U5B), qui prend donc en entrée le signal d'entrée (bufferisé par U5A) et qui est commandé par l'octave du dessous (B). Le deuxième étage prend aussi en entrée le signal d'entrée, mais est commandé par l'octave encore en-dessous (C).

Le signal d'entrée est mixé avec le son saturé pour avoir un son bien massif. Ça m'étonne un peu, car j'aurais pensé plutôt utiliser le son ocatvisé pour driver la fuzz, et pas l'inverse, de façon à ce que la génération de l'octave se fasse avec le son le plus clean possible. Bon, on s'en remettra.

Par ailleurs, l'octave du dessous-dessous (sub-harmonic) est générée avec le signal d'entrée, ce qui me surprend, car la méthode construction de l'octave utilisée ici ne marche que pour l'octave directement en-dessous (division par 2). Or, ici ils s'en servent pour générer une sous-octave. Ca me semble peu judicieux, et à mon avis on doit avoir des bouts de la sous-octave uniquement du fait de la convolution avec le signal de fréquence divisée par 4. Pour moi, il faudrait utiliser la sortie du premier étage de re-génération de signal pour alimenter le deuxième.

Bon, avançons. La fuzz est juste une distortion ultra-basique gérée par U2, une bête distortion avec shunt à diodes dans la boucle de contre-réaction, même pas de filtrage (C8 sert juste à rolloff les HF pour éviter que U4A se mette à auto-osciller). Le gain est fixe, le potar de sensibilité, en plus d'alimenter le filtre d'entrée, alimente le fuzz, donc plus on met de sensibilté, plus la fuzz est vénèr. Derrière il y a juste un blend entre le son clean bufferisé et le son fuzz. Rien de plus.

Le filtre de sortie est plus simple que sur la version non-deluxe. C'est un simple passe-bas actif, avec un switch pour accentuer le filtrage, et le réglage de tonalité permet de doser entre le signal filtré et le signal non filtré.

Et un blend en sortie, entre le signal direct lui-même blend avec la fuzz, et l'octave. Ce qui veut dire qu'on peut avoir la fuzz seule sans octave.

Globalement le circuit me parait très compliqué.

Propositions d'amélioration

Suite à l'analyse du circuit non-deluxe, et en ayant regardé le circuit deluxe, j'ai quelques idées d'amélioration.

Plus d'octaves en-dessous !

Il serait pas mal d'ajouter un octave en-dessous, comme sur le deluxe. Par contre je voudrais bien utiliser le signal octavisé -1 pour générer l'octave -2, plutôt que le son clean. C'est à tester.

Plus d'octaves au-dessus !

J'aimerais essayer de générer une octave au-dessus, avec un octaver à redressement plus classique, pour pouvoir le mixer avec les autres octaves. D'une façon générale, il me semble intéressant de faire une sorte de "vrai" mixer plutôt qu'une série de blend, comme le POG - qui est sans doute plus ou moins ce que je suis en train de décrire.

Améliorer la "détection de passage à zéro"

Comme je l'ai dit dans la section sur le détection de passage à zéro, le circuit de la non-deluxe a plusieurs défauts et génère des artefacts HF par forcément souhaitables. j'aurais bien envie d'améliorer cet étage. Pas forcément en utilisant celui du deluxe, qui me semble inutilement compliqué, mais plutôt en remplaçant le pont RC qui fait le délai avec un étage déphaseur du même type que sur le MXR Phase90, pour avoir un déphasage plutôt qu'un délai. Ça permettra de s'affranchir des limitations en fréquence d'un simple filtre RC, même si la bande passante des comparateurs va devenir le facteur limitant. Encore une fois : c'est à tester.

D'ailleurs, j'ai fait une simulation sous Scilab, pour pouvoir tracer les FFT des signaux et comparer facilement. J'ai généré les signaux suivants:

/public/stomp/octave_multiplexer/in_01.PNG

Puis j'ai ajouté un paramètre pour pouvoir "décaler" la sortie, comme ce que je vois avec LTSpice:

/public/stomp/octave_multiplexer/in_021.PNG

Puis j'ai tracé les FFT de tout ce petit monde. Dans le cas où l'entrée et la sortie sont alignées, on obtient ça, en bleu l'entrée, en vert la sortie:

/public/stomp/octave_multiplexer/fft_01.PNG

On voit bien le pic du signal d'entrée à 1kHz. La sortie fait disparaitre cette raie, et créée un spectre à partie de la moitié de la fréquence d'entrée. Et uniquement des harmoniques impaires. Si on regarde le spectre du signal non aligné:

/public/stomp/octave_multiplexer/fft_02.PNG

On remarque que la forme du spectre est globalement la même, par contre les harmoniques de rang élevé sont amplifiée. Ce n'est pas une surprise : on ajoute des "ruptures" dans le signal, donc ça ajoute des harmoniques haute fréquence.

Plus de sorties séparées

Si j'ajoute des octaves en plus, il me semble intéressant de sortir sur des jacks séparés les différents signaux, de façon à pouvoir les dispatcher un peu comme je veux en-dehors de la pédale.

Ce qui me plairait aussi, ça serait de pouvoir mixer les deux modes SUB. Mais je pense que ça suppose de doubler trop d'étages ...

Bufferiser

Bufferisez, bufferisez, il en sortira toujours quelque chose.

Conclusion

J'aime cet effet, j'aime ce circuit. Il est simple, ingénieux, et il y a plein de choses à en faire, il est modifiable, améliorable, il me donne plein d'idées. J'adore ce circuit ! Et ça change des distortions ...

Ressources

Les fichiers de simulation que j'ai utilisé. Clic-droit -> Enregistrer la cible sous ...

Le schéma de l'Octave Multiplexer complet sous LTspice

Le schéma pour la simulation du buffer d'entrée

Le schéma pour la simulation du buffer de sortie

Le schéma pour la simulation de la reconstruction de la forme d'onde

Le schéma pour la simulation du détecteur de passage à zéro

Le sample pour la simulation audio

Le script Scilab

Monday, December 11 2017

Fuzzquest - Episode #0

Officialisation d'une quête : la quête de la fuzz. D'où le nom.

Continue reading

Monday, October 2 2017

DIY audio - Recto Feto

switch_pol.png

Pédale de disortion / overdrive, adaptée du circuit Dr. Boogey / Miss Woogey, qui est une adaptation de la topologie du préampli du Mesa Boogie Dual Rectifier. Du même genre que la P.I.G., mais pour un Mesa.

Continue reading

Monday, September 25 2017

DIY audio - Satelyte

topology.png

Une pédale de distortion, avec un peu d'innovation par rapport à la P.I.G. EDIT Corrections schéma + PCB + nouveaux samples.

Continue reading

Sunday, September 3 2017

Death Note version Netflix - Du sang sur les murs

Je n'ai pas vu ce film. Ni l'anime. J'ai lu le manga, je l'ai trouvé excellent. Par contre j'ai vu des vidéos de revue du film sur tutube, et c'est un massacre. Je vais dire pourquoi je trouve le manga bien, et pourquoi les modifs du film me semblent de mauvaises idées.

Continue reading

Sunday, June 11 2017

TC Electronic Corona review

C

Ca fait du bien de voir du beau design électronique sur des produits grand-public. Pour conjusrer le sort de la MOTU Ultra-Light, voici la Corona de TC Electronic.

Continue reading

Wednesday, May 17 2017

Eclipse - GCC ARM - STM32 - Standard Peripheral Library

New C Project

Comment utiliser Eclipse pour développer sur STM32. Maintenant que j'ai réussi à obtenir un setup stable et fiable, voici un petit tuto pour avoir un setup fonctionnel de développement.

Continue reading

Sunday, February 19 2017

MOTU Ultra Light review

DSCN0001.JPG

"Le DFM c'est pour les minables, nous on en fait jamais."

Continue reading

Compilation offline sur STM32 - GCC et Mbed

J'ai pas mal d'heures de recherches et de manips sur le sujet, donc je fait un CR. Pour l'instant je suis arrivé à compiler des programmes qui utilisent Mbed avec gcc. J'écris ce post en février 2017.

Continue reading

Sunday, December 4 2016

DYI audio - Menatone PIG clone

menatone_pig_schematic_TINA_01.png

Petite pédale d'overdrive que j'ai fait pour tester la fabrication d'une pédale d'effet, de la conception à la fabrication du PCB, le montage, et la fabrication du boîtier.

Continue reading

Saturday, November 5 2016

Export de layout sous KiCAD

Il m'a fallu 16 essais pour réussir à sortir un typon potable. Voici un process qui marche.
EDIT : Il semble que je soit le seul à l'Electrolab à rencontrer le problème.

Continue reading

Wednesday, October 12 2016

Réparation de deux tables de mixage - Gaffe aux régulateurs

J'ai réparé deux tables de mixage en semi-carafe. Les deux avaient le même défaut sur le même composant.

Continue reading

Saturday, August 20 2016

Update Dotclear

J'ai fait une grosse mise à jour du blog. Deux-trois remarques à ce sujet.

Continue reading

Tuesday, March 22 2016

Installation des drivers Nvidia sous Debian Jessie pour une GTX960

Ca n'a pas été de tout repos, et il y a une méthode quasi-miracle, donc je la partage.

Continue reading

Sunday, February 28 2016

Auto-hébergement - Bilan

Il est temps de faire un bilan.

Continue reading

Installation de Gitlab + BONUS : configuration de postfix

Et dire que j'ai passé plusieurs jours sur ça ...

Continue reading

Sunday, February 21 2016

Global Game Jam 2016

J'ai encore participé à la GGJ cette année. C'était cool.

Continue reading

Sunday, September 27 2015

Administration serveur

Des perturbations dans la Force sont à prévoir ...

Continue reading

Monday, August 17 2015

The Valley

Mon album en écoute et en téléchargement.

Continue reading

Sunday, April 12 2015

Installer Debian sur un EEEPC Asus 900 - EDIT

J'ai trouvé mieux pour ne pas trop se faire chier avec l'install de Debian.

Continue reading

- page 1 of 2

Page top