Electronique > RéalisationsProduction sonore > Orgue 007

Dernière mise à jour : 14/05/2014

Article non terminé, volontairement non référencé dans les sommaires du site


Présentation

Cet orgue est un orgue de barbarie électronique, sans soufflet ni tuyau. Les notes sont jouées grâce à une feuille transparente qui se déplace en ligne droite entre une rangée d'émetteurs de lumière (LEDs) et une rangée de capteurs photosensibles (photodiodes) montés en regard.

orgue_007_calque_notes_001a

Chaque fois qu'un faisceau lumineux est interrompu par une des zones noircies sur la feuille transparente, une note est jouée. Et dès que le faisceau n'est plus interrompu (fin de la zone noircie), la note en cours de jeu s'arrête. La feuille dispose de 2 x 13 colonnes (un seul groupe de 13 est représenté sur le dessin ci-avant), un ensemble de 13 colonnes pour les notes principales et un second ensemble de 13 colonnes pour les notes d'accompagnement, plus graves. Les sons sont produits localement par le biais d'un oscillateur simple suivi de plusieurs diviseurs de fréquence (voir page Notes de musique) mais grâce à une interface MIDI optionnelle ils peuvent aussi être générés par un instrument doté d'une entrée MIDI (instrument autonome style synthé ou expandeur, ou ordinateur avec logiciel séquenceur et instruments virtuels). J'avais pensé au départ réaliser un instrument capable de jouer deux notes à la fois (une note aigue pour la mélodie et une grave pour l'accompagnement), cela aurait grandement simplifié la réalisation du générateur de son local. Mais il me semblait plus intéressant de ne pas être bridé par un instrument "double monodique" et j'ai donc décidé d'en faire un instrument totalement polyphonique.

Schémas

Afin de rendre le descriptif plus digeste, l'ensemble est présenté sous forme de sous-modules :
- schéma 007_lux : circuit avec les émetteurs de lumière et les récepteurs de lumière qui leur sont associés,
- schéma 007_osc : oscillateur général 4 MHz
- schéma 007_gen : circuit de génération de sons locaux (générateurs audio individuels),
- schéma 007_midi : circuit générateur de notes MIDI (facultatif).

Schéma 007_lux - Circuits lumières

La section "lumières" regroupe les émetteurs de lumières qui sont de simples LED et les récepteurs de lumière qui sont des photodiodes, phototransistors ou LDR (résistances photosensibles). Dans d'anciens orgues électroniques de ce type, il était fait usage d'ampoules à incandescence associées à des LDR. Je ne vois pas de raison particulière de ne pas utiliser des LEDs, qui peuvent être (presque) aussi lumineuses qu'on veut et qui bénéficient d'une bien meilleure durée de vie et qui de surcroit sont mécaniquement plus robustes vis à vis des vibrations. Les photodiodes et phototransistors régissent plus rapidement que les LDR et fait marquant j'ai dans mes stocks de composants plus de photodiodes que de LDR. J'ai donc suivi la logique implacable de mettre des LDR sur le schéma qui suit, et d'utiliser des phototransistors. Le schéma en question doit être réalisé en deux exemplaires, un pour les notes aigus.

orgue_007_lux

En toute franchise, il n'y a pas de réelles contraintes pour les émetteurs de lumière et leur récepteur associé. Faites donc des tests avec les composants que vous voulez (que vous avez) et finalisez le tout comme bon vous semble. Si vous avez de vieux stocks de transistors, rappelez-vous que ces derniers peuvent être sensibles à la lumière si on les décapote...

Détection présence lumière
Comme dit, on éclaire les récepteurs photosensibles (LDR ou phototransistors) qui sont montés en diviseur de tension avec une résistance de valeur fixe. Cas par exemple avec la LDR LDR1 et la résistance R13 (c'est le même fonctionnement pour les autres). La valeur de la tension disponible au point nodal du diviseur résistif LDR1 / R3 dépend de la quantité de lumière reçue par la LDR. Si cette dernière est très éclairée, sa résistance est faible, de quelques centaines d'ohms au maximum. Comme la résistance qu'on lui a collée en binome et qui est reliée à la masse vaut 10 kO, on dispose d'une tension bien supérieure à +2,7 V qui est le seuil de basculement des AOP de type LM324 qui suivent et qui sont montés en comparateurs de tension. Cette tension de référence (de basculement) est obtenue grâce à la diode zener D13 polarisée par la résistance R37. En dépassant cette tension de basculement, la sortie de l'AOP correspondant passe à l'état logique haut, si peu que l'on puisse parler d'état logique haut pour un AOP (disons que je me permet cette fantaisie). Pour ceux que ça dérange, disons que la sortie de l'AOP monte aussi haut en tension qu'elle le peut, à savoir qu'elle sera limitée au plus à la tension d'alimentation qui est de +5 V. Si maintenant la LDR n'est plus éclairée, la tension en sortie du pont diviseur chute d'un coup et cela a pour conséquence de faire basculer la sortie de l'AOP correspondant vers le niveau bas, proche de 0 V.

Schéma 007_osc - Oscillateur général

L'oscillateur général fournit le signal rectangulaire périodique de 4 MHz qui est utilisé ensuite par chaque diviseur de fréquence pour générer les notes locales. Il fait appel à des portes logiques d'un circuit intégré TTL de type 74HCT04.

orgue_007_osc

La stabilité de la fréquence de 4 MHz étant importante, elle est stabilisée par un quartz de même valeur. Les portes logiques non utilisées pour l'oscillateur lui-même sont mise à profit pour délivrer plusieurs sources à 4 MHz qui sont toutes en phase (les portes logiques d'un même boitier présentent très peu de différences entre elles au niveau des temps de transit).

Schéma 007_gen - Générateurs sonores locaux

Les générateurs sonores locaux permettent d'entendre quelque chose sur place, même quand on ne dispose d'aucun générateur sonore externe pilotable ou non par MIDI. J'avais au début pensé utiliser un microcontrôleur pour générer les 12 notes de base, comme présenté à la page Orgue 003. J'ai finalement opté pour un oscillateur de base (schéma 007b précédent) qui attaque en même temps un diviseur différent pour chaque note d'une octave, car la précédente solution ne me convenait pas pour la partie mélodie (fréquences générées trop basses). Pour les diviseurs principaux, j'ai opté pour des PIC 12F629, chacun possédant un rapport de division qui lui est propre.  Et pour les diviseurs par deux permettant d'obtenir les notes des octaves inférieurs, j'ai choisi des CD4040.

orgue_007_gen

Au départ et pour les diviseurs principaux, je comptais utiliser une horloge externe de l'ordre de 4 MHz et simplement compter le nombre d'impulsions reçues pour n'activer la sortie qu'aux moments désirés, mais je n'ai pas obtenu un fonctionnement correct en procédant ainsi. J'ai donc cherché à faire autrement, tout en souhaitant conserver la simplicité d'un unique boitier 8 broches pour chaque diviseur. J'ai trouvé une façon de faire qui n'est pas très pro mais qui fonctionne plutôt bien : je fais simplement tourner en boucle le programme principal du PIC, en incluant dans la boucle un petit délai d'un nombre de microsecondes bien précis. J'aurais pû tout déterminer par calcul mais j'ai fait par approximations successives. Au final, voici les valeurs de retard que j'ai du implémenter pour disposer des notes de musique de la gamme allant de Do5 à Do6.

program electronique_orgue_007_osc_diviseurs_12f629;

var
Out_Clk: sbit at GP0_bit;

procedure Main_Init;
begin
INTCON := 0;
OPTION_REG := %10000001;
CMCON := %00000111; // comparators OFF
TRISIO.0 := 0; // main out (divided freq)
TRISIO.1 := 1; // input
TRISIO.2 := 1; // input
TRISIO.3 := 1; // always input
TRISIO.4 := 1; // input
TRISIO.5 := 1; // input for external clock
end;

begin
Main_Init;
while true do
begin
Out_Clk := Out_Clk xor 1;
delay_us(473); // Div by 508 -> In = 4 MHz, Out = 1046 Hz (Do 5)

continue;

delay_us(234); // Div by 254 -> In = 4 MHz, Out = 2092 Hz (Do 6)
delay_us(248); // Div by 269 -> In = 4 MHz, Out = 1976 Hz (Si 5)
delay_us(263); // Div by 285 -> In = 4 MHz, Out = 1865 Hz (La# 5)
delay_us(279); // Div by 302 -> In = 4 MHz, Out = 1760 Hz (La 5)
delay_us(296); // Div by 320 -> In = 4 MHz, Out = 1661 Hz (Sol# 5)
delay_us(314); // Div by 339 -> In = 4 MHz, Out = 1568 Hz (Sol 5)
delay_us(333); // Div by 359 -> In = 4 MHz, Out = 1480 Hz (Fa# 5)
delay_us(352); // Div by 380 -> In = 4 MHz, Out = 1399 Hz (Fa 5)
delay_us(374); // Div by 403 -> In = 4 MHz, Out = 1319 Hz (Mi 5)
delay_us(397); // Div by 427 -> In = 4 MHz, Out = 1245 Hz (Re# 5)
delay_us(420); // Div by 452 -> In = 4 MHz, Out = 1176 Hz (Re 5)
delay_us(446); // Div by 479 -> In = 4 MHz, Out = 1109 Hz (Do# 5)
delay_us(473); // Div by 508 -> In = 4 MHz, Out = 1046 Hz (Do 5)
end;
end.


Cette façon de faire paraîtra surement un peu cavalière à certains, mais encore une fois j'assume. Une seule ligne de délai est incluse dans la boucle While, on choisie celle qu'on veut (après la ligne Continue) juste après avoi fait changer d'état logique la sortie GP0 (accès via la variable Out_Clk). Pour la suite on revient dans le domaine du standard avec des compteurs logiques de type CD4040, dont les sorties fournissent les notes des octaves inférieurs pour chaque note de base.

Amélioration des générateurs de tonalité
En 2014, j'avais décidé d'utiliser des PIC 12F629, à raison de 1 PIC par note. La méthode que j'avais employée pour obtenir les fréquences adéquates (méthode décrite ci-devant) fonctionnait mais manquait de précision, même si à l'oreille on n'entendait pas de décalage flagrant. En 2024, j'ai décidé d'améliorer la précision de la fréquence des notes délivrées et pour cela je me suis basé sur un article de Roman Black publié sur son site. Adaptation aux nouvelles technologies oblige, j'ai remplacé les 12F629 par des 12F1572, plus performants et moins coûteux. Le résultat est à la hauteur des attentes. Non seulement la précision est meilleure, mais en plus on peut choisir l'octave de base (la plus élevée) avec un potentiomètre ajustable ! Plus de détails...

   

Schéma 007_midi - Module MIDI (facultatif)

Le module MIDI permet de transcrire les notes jouées par l'orgue en évenements MIDI aptes à piloter un générateur de sons externes tel qu'un synthétiseur, un expandeur ou un ordinateur équipés d'instruments virtuels. Ce module, qui est facultatif dans le sens où il est totalement indépendant des générateurs sonores locaux, fait usage d'un microcontrôleur de type PIC.

schéma 007_midi

C'est la solution que j'avais déjà retenue pour mon orgue 006, je n'allais pas m'amuser à réinventer la roue.

Circuits imprimés

Tous les circuits seront réalisés en simple face.

Réalisation pratique

Je ne sais pas si vous l'avez déjà remarqué, mais la mécanique n'a jamais été mon fort. J'ai imaginé plusieurs solutions pour le défilement de la bande calque :
- entrainement par roue dentée avec des perforations dans la bande calque, à la manière des anciennes imprimantes matricielles avec papier à bandes perforées;
- entrainement avec des galets presseurs en caoutchouc.
- entrainement style "pellicule dans appareil photo" ou "bande audio" avec support dévidoir et support récepteur.
Pour chacune de ces solutions on peut envisager un déplacement motorisé ou manuel, mais je penche nettement pour la solution manuelle car la motorisation risque de donner un côté un peu trop régulier et on n'a pas le plaisir d'agir sur quelque chose. J'envisage donc l'emploi d'une petite manivelle comme sur certains orgues "d'époque". Comme à l'avenir je souhaite que des enfants écrivent leurs propres "partitions" pour cet instrument, je conçois mal de les laisser regarder l'instrument jouer tout seul. Après tout, le jeu de leur partition leur appartient !

Historique

14/01/2024
- Amélioration de la circuiterie de génération des 12 notes de base.
14/05/2014
- Première mise à disposition.