Aller au contenu principal

Fabriquer un thérémine

InformatiqueTechnologieMusiqueSciencesSTM32 IoT NodeMakeCode
ProjetDuréeDifficultéÂge
Let's STEAM30 minutesAvancé11-15 ans

Matériel

  • 1 carte programmable "STM32 IoT Node Board"
  • 1 câble USB Micro-B
  • 1 buzzer piézoélectrique ou un haut-parleur
  • 1 breadboard
  • Câbles de connexion

Prérequis

Télécharger en PDF
Thérémine

De quoi parle-t-on ?

Un thérémine est un instrument de musique électronique dont on peut jouer sans le toucher. Le concept original est basé sur l'utilisation de deux antennes pour détecter la position des mains. Une antenne est utilisée pour le volume, et l'autre pour la hauteur du son.

Objectifs d'apprentissage

  • Utiliser un capteur de distance et comprendre son fonctionnement
  • Faire de la musique avec un instrument vraiment étrange
  • Utiliser la fonction map pour transformer un nombre d'une plage à une autre

Introduction

Le thérémine est un instrument de musique électronique contrôlé sans contact physique par le théréministe (interprète). Il doit son nom à son inventeur, Léon Thérémine, qui a fait breveter l'appareil en 1928. La section de contrôle de l'instrument se compose généralement de deux antennes métalliques qui détectent la position relative des mains du théréministe et contrôlent les oscillateurs pour la fréquence avec une main et l'amplitude (volume) avec l'autre. Les signaux électriques émis par le thérémine sont amplifiés et envoyés à un haut-parleur.

Notre version sera plus simple : nous ne contrôlerons que la hauteur du son avec le capteur de distance, le volume sera prédéterminé. Faisons de la musique !

Ressources : https://en.wikipedia.org/wiki/Theremin, https://youtu.be/x0NVb25p1oU


Étape 1 - Construire

Schéma de câblage du thérémine

1. Câbler le buzzer/haut-parleur

En théorie, un buzzer ou un haut-parleur n'est pas polarisé (cela signifie qu'il n'y a pas de « + » ni de « - »), mais il y a souvent une paire de fils noir/rouge ou des signes (« + » et/ou « - ») sur l'appareil. Si vous êtes dans cette configuration, attachez le fil du côté « + » du buzzer à la broche D3 et l'autre à la broche GND. S'il n'y a pas de couleur ou d'indication, branchez simplement un fil sur la broche D3 et l'autre sur la broche GND.

2. Connecter la carte à l'ordinateur

Avec votre câble USB, connectez la carte à votre ordinateur en utilisant le connecteur micro-USB ST-LINK (sur le coin en haut à droite de la carte). Si tout se passe bien, vous devriez voir apparaître sur votre ordinateur un nouveau lecteur appelé DIS_L4IOT. Ce lecteur est utilisé pour programmer la carte en copiant simplement un fichier binaire.

3. Ouvrir MakeCode

Allez dans l'éditeur MakeCode de Let's STEAM. Sur la page d'accueil, créez un nouveau projet en cliquant sur le bouton « Nouveau projet ». Donnez à votre projet un nom plus expressif que « Sans titre » et lancez votre éditeur.

Ressource : makecode.lets-steam.eu

4. Programmer la carte

Dans l'éditeur JavaScript de MakeCode, copiez/collez le code disponible dans la section « Programmer » ci-dessous. Si ce n'est pas déjà fait, pensez à donner un nom à votre projet et cliquez sur le bouton « Télécharger ». Copiez le fichier binaire sur le lecteur DIS_L4IOT et attendez que la carte finisse de clignoter : votre programme est prêt !

5. Exécuter, modifier, jouer

Votre programme s'exécutera automatiquement chaque fois que vous le sauvegarderez ou que vous réinitialiserez votre carte (appuyez sur le bouton intitulé RESET). Essayez de comprendre l'exemple et commencez à le modifier.


Étape 2 - Programmer

let distance = 0
forever(function () {
// Mesurer la distance
distance = input.distance(DistanceUnit.Millimeter)

if (distance > 500) {
// Convertir la distance en fréquence
let note = Math.map(distance, 0, 500, 440, 830)
music.ringTone(note)
} else {
music.stopAllSounds()
}
})

Comment cela fonctionne-t-il ?

Dans ce programme, il y a 2 variables. La première, distance, est utilisée pour mémoriser la distance et déterminer la note à jouer. Ensuite, il y a note, qui n'est pas techniquement nécessaire/obligatoire mais permet d'introduire une plus grande compréhension de chaque étape du programme. Elle contient la transformation de la distance en fréquence du ton.

Mesurer la distance

Utiliser une variable pour mémoriser la distance, c'est bien, mais savoir comment mesurer la distance, c'est mieux ! Cette opération ne présente aucune difficulté. Nous devons appeler la fonction input.distance(DistanceUnit.Millimeter). Le paramètre DistanceUnit.Millimeter indique à la fonction que nous voulons le résultat en millimètres (1 mètre = 1 000 millimètres).

Condition

La condition if (distance > 500) { ... } indique que nous ne jouons un son que si la distance mesurée est inférieure ou égale à 500 millimètres.

Convertir la distance en fréquence

La partie la plus importante est la conversion. Pour la réaliser, nous utilisons une fonction mathématique appelée map. Cette fonction transforme une valeur d'une plage à une autre. Dans ce cas, la valeur est transférée de la plage de distances à la plage de fréquences. Comme vous pouvez le voir dans le code ci-dessus, cette fonction prend cinq paramètres :

ParamètreDescription
valueLa valeur à transformer
in_minLa valeur minimale de la plage d'entrée (distance)
in_maxLa valeur maximale de la plage d'entrée (distance)
out_minLa valeur minimale de la plage de sortie (fréquence)
out_maxLa valeur maximale de la plage de sortie (fréquence)

Nous pouvons donc comprendre ce que fait cette ligne : transformer la distance (avec une plage de 0 mm à 500 mm) en fréquence (avec une plage de 440 Hz à 830 Hz).

Fréquences et octave

Les fréquences choisies ne sont pas aléatoires : la gamme de fréquences de 440 Hz à 830 Hz représente une octave. Cela signifie que vous pouvez trouver toutes les notes : LA, SI, DO, RÉ, MI, FA, SOL.

Nous avons maintenant une fréquence. Il est temps de la jouer, en utilisant simplement la fonction music.ringTone(note).


Étape 3 - Améliorer

  1. Modifiez la valeur de map pour ajouter des octaves et/ou de la distance afin d'améliorer votre musique.
  2. Essayez d'ajouter un potentiomètre pour contrôler le volume.

Aller plus loin


Cette fiche fait partie du projet Let's STEAM, financé par le programme Erasmus+. Contenu sous licence CC BY-SA 4.0.