Table des matières:

(presque) Programmeur universel MIDI SysEx CC (et séquenceur) : 7 étapes (avec photos)
(presque) Programmeur universel MIDI SysEx CC (et séquenceur) : 7 étapes (avec photos)

Vidéo: (presque) Programmeur universel MIDI SysEx CC (et séquenceur) : 7 étapes (avec photos)

Vidéo: (presque) Programmeur universel MIDI SysEx CC (et séquenceur) : 7 étapes (avec photos)
Vidéo: Comprendre le MIDI 2024, Novembre
Anonim
(presque) Programmeur universel MIDI SysEx CC (et séquenceur…)
(presque) Programmeur universel MIDI SysEx CC (et séquenceur…)
(presque) Programmeur universel MIDI SysEx CC (et séquenceur…)
(presque) Programmeur universel MIDI SysEx CC (et séquenceur…)

Au milieu des années 80, les fabricants de synthés ont commencé un processus "moins c'est mieux" qui a conduit à des synthés barebones. Cela a permis de réduire les coûts du côté du fabricant, mais a rendu le processus de correction fastidieux voire impossible pour l'utilisateur final.

Les fabricants eux-mêmes et des sociétés tierces ont réalisé des boîtes optionnelles pleines de boutons et/ou de curseurs pour vous permettre de "jouer" avec les sons de vos synthés, mais ceux-ci sont ridiculement chers de nos jours et, comme toujours, nous sommes obligés de trouver des solutions bon marché par nous-mêmes;)

Ce projet est né de mon besoin de programmer facilement des patchs sur certains de mes derniers synthés achetés: un Roland Alpha Juno 2 et un JX8P. Cela a commencé comme un simple contrôleur SysEx, puis il a grandi sur moi et est devenu quelque chose de plus complexe, avec d'autres synthés pris en charge en cours de route (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) et un séquenceur intégré.

Dans ce instructable, je vais vous montrer comment réaliser votre propre contrôleur: un outil bon marché qui émule ces boîtes de contrôle de paramètres très chères… et plus (continuez à lire pour plus de détails…).

Étape 1: Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui ne l'est pas…)

Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui n'est pas…)
Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui n'est pas…)
Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui n'est pas…)
Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui n'est pas…)
Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui n'est pas…)
Qu'est-ce qu'est exactement cette chose (et qu'est-ce qui n'est pas…)

Le contrôleur MIDI SysEx et Control Change ici est essentiellement un contrôleur MIDI à 16 boutons (potentiomètres) et 4 boutons. L'esquisse par défaut gère trois "pages", pour un total de 48 paramètres de tonalité de synthé.

J'ai rendu le contrôleur compatible avec les messages MIDI de changement de commande (un type de message MIDI simple et "global" largement utilisé par les fabricants de synthés en particulier à partir des années 90) et les messages SysEx (un autre type de message MIDI, beaucoup moins général et fortement spécifique au synthé) utilisé dans les années 80).

En particulier, le contrôleur par défaut est compatible avec:

-Roland Alpha Juno (1/2)

-Roland JX8P

-Korg DW8000

- Oberheim Matrix 6/6R (> firmware 2.14)

- Circuits séquentiels MAX/SixTrak.

Vous pouvez éventuellement permettre au contrôleur d'agir sur n'importe quel synthé pouvant recevoir des messages de changement de contrôle MIDI (CC), mais il est désactivé par défaut.

Étant la nature open source du projet, il est très facile de prendre en charge tout autre synthé de votre choix (voir l'étape de code pour plus de détails).

La disposition des paramètres de tonalité avec tous ces nombres peut être déroutante au début, mais ce n'est pas "aléatoire" comme cela pourrait ressembler: il suit l'ordre du tableau d'implémentation MIDI du fabricant. C'était un choix de conception pour garder le code simple et "universel".

Vous pouvez télécharger des feuilles d'images avec le "layout" 4x4 que j'ai réalisé pour Alpha-Junos, JX8P, DW8000, Matrix 6 et MAX/SixTrak sur cette page: les paramètres bleus sont ceux que vous pouvez modifier en page 1, noirs ceux de la page 2 et orange ceux de la page 3.

Même si le contrôleur n'a pas d'écran, jouer avec des synthés qui vous montrent quel paramètre est réglé en temps réel rend le processus de création d'un patch une joie. Le JX8P et le Matrix 6, par exemple, en sont capables; l'Alpha Juno, à la place, ne vous montre pas le paramètre en cours de modification et rend les choses un peu plus difficiles (mais créer de superbes patchs est certainement faisable et plus facile qu'en utilisant l'interface intégrée sans bouton); Le DW8000 n'a que des affichages numériques, mais vous pouvez voir vos réglages en temps réel afin qu'il se place entre les deux.

Et ces boutons là ?

Eh bien, le premier (en haut à gauche dans ma mise en page) est pour la navigation sur les pages: passez à la page du paramètre suivant à chaque pression sur le bouton. Les LED indiqueront dans quelle page vous vous trouvez.

La seconde, lorsque vous appuyez dessus, renvoyez le patch sur lequel vous travailliez au synthé (imaginez: vous avez créé le patch de votre vie, puis vous avez touché un bouton de programme sur la surface du synthé et le patch spécifique au bouton a été chargé… tout votre travail est parti !). Avec ce bouton, vous pouvez envoyer toutes les valeurs que le programmeur avait mémorisées lors du dernier processus de patch. Ce processus de rappel de patch ne fonctionne pas si vous appuyez à nouveau sur le randomiseur (le processus de randomisation écrase tous les paramètres en mémoire) et il n'est efficace que sur les paramètres que vous avez édités au moins une fois. Le dernier correctif n'est pas conservé en mémoire après l'arrêt.

Le troisième est pour une fonction secondaire: le randomiseur/patcher ! Tournez complètement dans le sens antihoraire les boutons sur lesquels vous voulez que le paramètre sur lequel ils agissent pour verrouiller à la valeur minimale (c'est-à-dire le LFO de l'oscillateur, l'enveloppe de l'oscillateur, etc.) le bouton pour démarrer le processus de randomisation pour tous les autres paramètres.

Le quatrième bouton est là pour activer un easter egg (en quelque sorte…) que j'ai placé dans le code après avoir remarqué que la disposition était parfaite pour… un séquenceur MIDI de 16 pas ! Exactement: appuyez sur le quatrième bouton (bouton MODE), le contrôleur entrera en "mode séquenceur" et vous serez autorisé à déclencher des notes de la même manière que l'ancien séquenceur analogique. Bien euh !

Appuyez à nouveau sur le bouton MODE pour revenir au mode contrôleur/patcher.

Et ces LED ?

Il y a 4 LEDs en corrispondance à chaque bouton (à droite de chaque bouton dans mon layout); ces leds ont plusieurs pourpous:

1) ils vous indiquent dans quelle page de paramètres vous vous trouvez (la LED supérieure est allumée lorsque vous êtes en page 1, la LED du dessous est allumée lorsque la page 2 est active, la LED 3 est allumée… vous l'avez deviné vous-même). Nous sommes limités à 3 pages ATM, mais le code peut être facilement réglé pour gérer plus de pages;

2) la deuxième LED indique les paramètres page 2 ET est allumée lorsque le microcontrôleur envoie le patch précédent (rappel de patch);

3) la troisième LED indique la page 3 des paramètres ET est allumée pendant le processus de randomisation.

La quatrième LED ne fait rien en mode contrôleur MIDI et est utilisée pour le changement de MODE global.

Toutes ces fonctions sont transmises sous forme de messages MIDI, donc pour être efficace, votre synthé doit être capable/activé de recevoir et d'interpréter ce genre de messages

Étape 2: Le séquenceur "caché" de 16 étapes

Les
Les

Comme dit, en testant le contrôleur, j'ai réalisé qu'il serait formidable de laisser une séquence de notes s'exécuter afin que je puisse modifier les paramètres du synthé et avoir une meilleure idée de l'effet final sur le son. J'ai un séquenceur logiciel (j'aime tellement le seq24 !), mais ce matériel est un séquenceur 16 pas presque PARFAIT ! Ensuite, ce n'était qu'une question de code pour l'implémenter.

Vous pouvez basculer entre le mode contrôleur et le mode séquenceur en appuyant sur le bouton #4 (bouton MODE).

En mode séquenceur, les boutons fonctionnent différemment et les LED vous donnent de nouvelles informations:

- le premier bouton (bouton SHIFT) lorsqu'il est enfoncé permet de modifier le tempo, la longueur des notes, les canaux et l'octave; la valeur du tempo est donnée par la position du premier potentiomètre, la longueur de note est calculée à partir de la deuxième position du potentiomètre, les canaux MIDI à partir des troisième et quatrième positions du potentiomètre et l'octave (-1 o jusqu'à +2) à partir du cinquième potentiomètre. Vous pouvez contrôler le tempo de 40 BPM (tournez le potentiomètre #1 à fond dans le sens inverse des aiguilles d'une montre tout en maintenant le bouton #1 enfoncé) à près de 240 BPM (tournez le potentiomètre #1 à fond dans le sens des aiguilles d'une montre tout en maintenant le bouton #1 enfoncé). Vous pouvez régler la longueur des notes en blanches, noires, croches, doubles en tournant le potentiomètre #2 tout en maintenant le bouton SHIFT enfoncé. Vous pouvez régler les canaux MIDI (canal principal et canal secondaire) de 1 à 16. La plage des notes de base (de C2 à F#4) peut être abaissée d'une octave ou augmentée d'une ou deux octaves.

Par défaut, le tempo est réglé sur 120 BPM et la longueur des notes sur les noires.

- le deuxième bouton démarre et arrête la séquence de notes. Comme dit, si vous changez de mode en appuyant sur le bouton #4 (MODE) pendant l'exécution de la séquence, vous passerez en mode contrôleur mais la séquence continuera à s'exécuter.

- le troisième bouton est une PANIQUE ! En appuyant dessus, toutes les notes seront coupées.

- le quatrième permet de basculer entre les modes globaux (pather ou séquenceur) lorsque le bouton #1 n'est pas enfoncé, ou entre les modes séquence (voir ci-dessous) lorsque le #1 est enfoncé.

En mode séquenceur, si vous appuyez sur le bouton de sélection de mode tout en maintenant le bouton #1 (SHIFT) enfoncé, vous pouvez basculer entre 3 modes de séquence différents:

1 - séquence mono de 16 pas

Séquence poly 2 - 16 pas: les notes une octave plus basses que celles définies par les potentiomètres sont également déclenchées (cela draine 2 voix par temps)

3 - séquence poly 8 pas, double canal: deux séquences parallèles de 8 pas sont envoyées vers deux canaux différents (CH1 et CH2 par défaut); en réglant la même valeur de canal à la fois sur les canaux primaire et secondaire, vous pouvez avoir deux séquences parallèles de 8 pas jouées par le même synthétiseur (polyphonique).

À propos des LED: dès que vous entrez en mode séquenceur, les quatre voyants s'allument. Lorsque vous démarrez la séquence, les LED suivront la séquence (ou les séquences). J'ai placé une LED tous les quatre potentiomètres et c'est assez bon pour moi. Il serait simple de modifier le croquis pour gérer 16 LED, une pour chaque étape.

Le séquenceur pas à pas dispose de fonctionnalités que quelqu'un pourrait trouver nécessaires: synchronisation MIDI IN, maintien des pas (vous ne pouvez fermer qu'un pas), sortie CV.

J'ai implémenté l'horloge OUT, mais elle est en quelque sorte boguée. J'ai essayé deux approches pour cela (une avec et une sans interruptions de minuterie), mais elles étaient toutes les deux imparfaites (ou un échec total). L'horloge MIDI doit être stricte-parfaite pour travailler sur le long terme. Un signal d'horloge est quand même envoyé et vous pouvez le désactiver directement sur le croquis (voir plus loin pour plus de détails).

Notez que ce séquenceur pas à pas est MIDI, ou numérique si vous préférez, donc pour fonctionner il faut être connecté à un synthé capable de recevoir et d'interpréter ce genre de messages

Étape 3: Matériel nécessaire et construction

Matériel nécessaire et construction
Matériel nécessaire et construction
Matériel nécessaire et construction
Matériel nécessaire et construction
Matériel nécessaire et construction
Matériel nécessaire et construction
Matériel nécessaire et construction
Matériel nécessaire et construction

Après tous ces mots, amusez-vous bien !

Nous allons à la manière commune d'Arduino. J'ai utilisé un Arduino MEGA en raison de la grande quantité d'entrées analogiques (nous voulons une boîte pleine de boutons à boutons, n'est-ce pas?!:)).

En particulier, Arduino MEGA peut gérer 16 entrées analogiques (avec quelques ajustements matériels, c'est-à-dire par multiplexage, vous pouvez augmenter cela mais nous n'allons pas dans cette voie ici), nous allons donc envoyer les 48 messages MIDI via 16 potentiomètres. Chaque potentiomètre contrôlera alors trois paramètres, un pour chaque « page »; les pages sont sélectionnées par un bouton de commutation.

Liste du matériel:

- 1x Arduino MEGA

- 16x potentiomètres linéaires monotour 10 Kohms

- 16x potentiomètres

- 4x boutons poussoirs momentanés

- 4x LED

- Résistance 6x 220 ohms

- 1x connecteur MIDI

- 1x boîte de projets ABS

Du câble, du fil à souder et six à huit heures de temps libre.

J'ai utilisé un perfboard et des en-têtes de broches pour réaliser une sorte de blindage sur lequel j'ai soudé les résistances et dirigé les câbles. Cela a l'avantage de vous permettre de sortir votre Arduino et de l'utiliser pour d'autres projets (nous sommes tous à court de cartes Arduino à un moment donné !). Ce n'est de toute façon pas obligatoire et une autre bonne approche pourrait consister à dessouder les embases arduino MEGA et les câbles de soudure directement en place.

J'ai utilisé des résistances de 200 ohms à la place des résistances de 220 ohms et elles fonctionnent parfaitement de toute façon; Je parierais que même des résistances de 150 ohms fonctionneraient très bien (à la fois pour la communication MIDI et les LED).

Pour façonner la boîte, j'ai d'abord appliqué du papier adhésif sur la surface de la boîte, mesuré où les trous devaient être percés (j'avais 3 cm d'un trou à l'autre pour laisser tous les pots s'adapter) fait les trous de guidage puis agrandi vers la droite taille pour laisser passer l'enfilage des pots ou des boutons à l'aide d'une mini perceuse. J'ai mis plus ou moins 2 heures pour finir la boite. J'ai aussi réalisé des petits trous et collé des LED en place.

J'ai également percé un trou pour le connecteur MIDI OUT et un autre pour le connecteur d'alimentation arduino (j'ai utilisé directement le connecteur d'alimentation USB intégré et j'ai fermement verrouillé l'arduino MEGA en place).

ATTENTION: portez TOUJOURS des protections pour les yeux et les mains pendant le perçage, quel que soit le matériau sur lequel vous travaillez (plastique, bois, métaux, composites… peu importe: vous êtes à risque à la fois vis-à-vis des outils électriques et des copeaux de matériau érodés/cuisinés de l'outil mobile).

Ensuite, j'ai placé tous les pots et boutons et soudé les composants selon l'image ci-jointe. Un moyen efficace de réduire le poids de l'objet final (et la longueur des câbles) est de connecter en série tous les pots à la fois sur la ligne 5V et la ligne GND.

Et avant que quelqu'un ne demande: je sais, cette boîte que j'ai utilisée est moche ! Mais c'était gratuit et rien ne vaut la gratuité:)

Étape 4: Câblage

Câblage
Câblage

Le câblage est simple comme le câblage d'un potentiomètre (x16), d'un bouton-poussoir (x4) et d'une LED (x4) à une carte de microcontrôleur Arduino. Toutes les bases d'Arduino sont couvertes ici:)

Ci-joint le câblage. Remarquerez que:

- Toutes les broches analogiques sont utilisées (de A0 à A15), une pour chaque potentiomètre;

- 4 broches numériques (entrées) sont utilisées (de D51, D49, D47, D45), une pour chaque bouton;

- les 4 autres broches numériques (sorties) sont utilisées pour les LED (D43, D41, D39, D37);

- La connexion MIDI out est très simple et demande deux résistances de 220 ohms (mais jusqu'à 150 ohms fonctionnera)

- Les boutons ne demandent pas de résistances pulldown étant donné que l'esquisse active les résistances pullup internes de l'Arduino.

- Chaque LED demande une résistance de limitation de courant (200-220 ohms sont ok pour les LED vertes).

J'ai utilisé les broches numériques répertoriées pour la commodité, mais ce ne sont pas des broches "spéciales" (nous n'utilisons pas la capacité pwm de certaines broches ici ou une autre fonctionnalité spécifique aux broches): vous pouvez définir vos broches numériques préférées, mais n'oubliez pas de modifier le code en conséquence ou vos boutons/LED ne fonctionneront pas !

Veuillez noter que la connexion MIDI OUT dans l'image est la vue FRONT (pas la vue arrière).

Étape 5: Logiciel - Quelques liens vers la théorie

Je ne vais pas expliquer toute la théorie derrière les messages System Exclusive ou Control Change, car il existe de nombreux bons articles et il est idiot de réécrire ce qui a déjà été écrit.

Juste un lien rapide pour l'implémentation de Roland SysEx:

- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (ANGLAIS)

- https://www.2writers.com/eddie/tutsysex.htm (ANGLAIS)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ANGLAIS)

- https://www.audiocentralmagazine.com/system-exclusi… (ITALIANO)

et quelques liens pour le MIDI en général:

-

-

Étape 6: Logiciel - l'esquisse

Voici ci-joint le croquis que vous devez télécharger sur votre Arduino Mega.

J'ai essayé de garder le programmeur aussi "universel" que possible, ce qui signifie que j'ai essayé de réduire les morceaux de code spécifiques au synthé. J'ai essayé de garder le code aussi simple que possible. L'ajout du séquenceur pas à pas a rendu les choses plus complexes et le code plus désordonné, de toute façon cela en valait la peine pour moi. Garder le code "universel" est la raison pour laquelle la disposition du contrôleur est si "aléatoire": elle suit l'ordre des paramètres de l'implémentation MIDI du synthétiseur défini dans le manuel. Cela peut être déroutant au début, mais vous vous y habituerez très vite.

Le code/sketch/firmware par défaut ne supporte "que" 48 paramètres (trois pages de 16 potentiomètres chacune) donc il ne pourrait pas être possible de contrôler tous les messages MIDI supportés par votre synthé (pensez à un Access Virus ou Novation Supernova: ils en acceptent plus ou moins 110 paramètres compatibles MIDI). Vous pouvez facilement modifier le croquis pour prendre en charge plus de messages, si nécessaire.

En fait, les messages SysEx compatibles avec Roland Alpha-Juno, JX8P, Korg DW8000 et Oberheim Matrix 6 sont pris en charge. J'ai laissé le code pour les messages compatibles Juno 106 au cas où vous en auriez besoin.

Pour Matrix 6, je devais sélectionner les paramètres à contrôler. J'ai omis la troisième enveloppe, la deuxième rampe et autre chose. La matrice ne peut pas être contrôlée via MIDI de toute façon, donc elle est sortie aussi. Vous avez besoin du firmware mis à jour (ver. 2.14 ou supérieur) et vous devez régler le paramètre "Master -> Sysex Enable" sur "3".

L'horloge de sortie est en quelque sorte boguée (l'horloge doit être stricte - parfaite pour fonctionner comme elle le devrait et probablement les deux approches que j'ai adoptées n'étaient pas efficaces). Par défaut, c'est désactivé.

Le code comprend des commentaires, il n'est donc pas nécessaire de commenter davantage ici.

Comme toujours: rappelez-vous que je ne suis pas un codeur dans la vraie vie et qu'il existe certainement de meilleures façons de coder ce dont nous avons besoin ici. Si vous êtes codeur et avez des suggestions, vous êtes les bienvenus ! Veuillez m'envoyer toute variation pouvant augmenter l'efficacité/l'efficacité du code et je l'inclurai dans l'esquisse principale (en citant le contributeur évidemment !).

J'apprends toujours quelque chose de nouveau en lisant un bon code de codeur;)

Étape 7: Projets connexes

Pour autant que je sache, il n'y a pas de contrôleur de paramètres MIDI et de séquenceur (peut-être l'ancien Behringer BCR2000 avec un firmware modifié ?)

de toute façon, si vous n'êtes pas enclin à réaliser une box comme celle-ci mais très intéressé par des solutions bon marché pour contrôler à distance les paramètres de votre synthé, pensez à ces autres alternatives:

- Éditeur CTRL MIDI: il s'agit d'un programme open source brillant et gratuit fonctionnant sur win/Linux/mac qui peut transformer votre PC en un contrôleur complet pour les synthés SysEx

- Le convertisseur CC "junosex" de David Konsumer: ce projet demande un travail matériel mineur de votre part et l'idée est géniale) pour parler avec votre synthé compatible SysEx

Conseillé: