MDR Emulator Alpha v.0.2 – L’émulateur de MDR-3 pour Yamaha Electone

MDR Emulator = Projet d’émulation libre et multi-plateforme de l’expandeur MDR-3 (Music Disk Recorder) de Yamaha réalisé avec Purr Data

MDR Emulator = Free/libre and multi-platform emulation project of the Yamaha MDR-3 (Music Disk Recorder) expander built with Purr Data (an improved version of Pure Data Vanilla)

Pour avoir une vison globale du projet, consultez l’article sur l’Alpha v.0.1 :

Contenu de cet article :

  • Avant-propos
  • Améliorations apportées à l’Alpha v.0.2
  • Panneau de contrôle
  • Séquenceurs x 19
  • Messages SysEx
  • Configuration de tests

♦ Avant-propos

L’Alpha v.0.2 est la 2ème version fonctionnelle du projet MDR-E.

L’objectif premier du projet MDR Emulator (MDR-E) est de reproduire aussi fidèlement que possible le fonctionnement du MDR-3 de Yamaha. Cependant l’utilisation exclusive de l’objet séquenceur [seq] nous a obligé à faire des concessions plus ou moins importantes (voir article précédent sur l’Alpha v.0.1).

De ce fait, il a fallu implémenter un ‘mécanisme’ (plutôt contraignant) pour simuler autant que faire se peut le fonctionnement de l’objet [seq] utilisé seul lors de son utilisation en [seq] multiple (16x). Celui-ci sera développé plus loin dans l’article au paragraphe ♦ Séquenceurs.

Nota bene : Un certain nombre d’objets et de glue Purr Data ne sont pas réellement nécessaires au bon fonctionnement du MRD Emulator. Ils sont uniquement présents pour vérifier la bonne marche du projet et faciliter son débogage.

Rappel : Afin d’assurer un maximum de compatibilité du Projet MDR Emulator entre Purr Data (PRD) et Pure Data Vanilla (PDV), nous avons utilisé des bibliothèques d’objets (externals) qui sont disponibles dans ces deux environnements de programmation libres. Ce sont Cyclone, Maxlib et Zexy. Ces 3 bibliothèques sont intégrées par défaut dans PRD. Pour PDV, il faudra les importer en utilisant le plugin Deken, intégré par défaut depuis la version 0.47.

♦ Améliorations apportées à l’Alpha v.0.2

Liste des principales évolutions :

  • PROJET : Disposition sur 2 écrans, un pour le Panneau de contrôle (commandes) + un pour les Séquenceurs et Messages SysEx afin de pouvoir ajouter les fonctions manquantes et améliorer le fonctionnement
  • PROJET : Correction des bogues et dysfonctionnements connus, et ajout de commentaires (en anglais pour les non francophones intéressés par ce projet)
  • FICHIERS : Le gestionnaire de fichiers a été simplifié et optimisé
  • AFFICHAGE : Les notes sont affichées sur le panneau de contrôle avec sélection d’une des 3 sources MIDI
  • SEQ16 : Les 16 pistes sont maintenant toutes gérées individuellement pour permettre une utilisation mix orgues Electone ou MIDI généraliste (autres équipements MIDI compatibles GM/GS/XG ou pas)
  • SEQ16 : Ajout LED d’activité REC/PLAY pour chaque piste
  • SEQ16 : Ajout du désarmement réciproque des boutons REC/PLAY des pistes individuelles
  • SEQ16 : Ajout de la gestion de END des pistes individuelles pour PLAY ALL et PLAY/CONVERT
  • SEQ16 : Ajout de la fonction ‘Tempo interne’ PLAY
  • SEQ16 : Amélioration de la fonction ‘Chronomètre’ RECORD/PLAY
  • SEQ1 : Amélioration de la fonction ‘Tempo interne’ PLAY
  • SEQ1 : Amélioration de la fonction ‘Chrnomètre’ RECORD/PLAY
  • SEQ TRAM : Amélioration de son fonctionnement
  • SEQ TREG : Modification de son fonctionnement
  • SYSEX : Modification de la gestion des messages (TRAM et TREG)

Nota Bene :  Comme l’Alpha v.0.2 du MDR-E a permis d’atteindre une émulation satisfaisante du fonctionnement du MDR-3, il n’y aura pas de version Lite du projet MDR-E.

♦ Panneau de contrôle

Le panneau de contrôle de l’Alpha v.0.2 du MDR-E a été étoffé et il intègre maintenant l’affichage des notes MIDI sélectionnable selon 3 sources.

Il est constitué de 5 [canevas] principaux :
  • * seq T1-T16 + seq TREG / * Individual TRACKS
  • * seq MIDI Type 0
  • * seq TRAM
  • * FILE MANAGER
  • * MIDI NOTES IN/OUT Display / * ELECTONE ‘Pseudo’ KEYBOARDS

Par défaut, le panneau de contrôle du MDR-E est configuré pour enregistrer une performance Live incluant la mémoire de registration actuelle depuis l’Electone.

Yamaha MDR Emulator – Alpha v.0.2 | Panneau de contrôle (Séquenceurs, Messages SysEx, Fichiers et Affichage des notes)

* seq T1-T16

Les [seq T1-T16] sont contrôlés tous en même temps par les commandes REC / PLAY / PLAY+CONVERT et STOP / PAUSE / CONTINUE. À utiliser pour enregistrer / lire une performance Electone sans sélection préalable de piste individuelle ou pour convertir une performance déjà en RAM du PC avant de la sauvegarder sur disque avec le [seq MIDI Type 0].

Pendant un PLAY de la performance, il est possible de faire varier la vitesse de lecture en utilisant le [Hslider] TEMPO-Int PLAY de 40 à 240 BPM (120 par défaut).

Le chronomètre REC/PLAY indique la durée d’enregistrement ou de lecture en MM:SS.

* seq TREG

Le commutateur ON/OFF CUR-REG, par défaut sur ON, permet d’enregistrer – d’envoyer automatiquement la Registration actuelle (SysEx) avant la performance depuis-vers l’Electone.
Si le MDR-E est utilisé comme un séquenceur MIDI généraliste, il est recommandé de passer ce commutateur sur OFF.

* Individual TRACKS [seq T1-T16]

Chacun de ces 16 séquenceurs gère une piste MIDI = un canal MIDI.

Si au lieu de faire un enregistrement global nous voulons le réaliser piste par piste, alors nous pouvons commander chacune des pistes à notre gré. Les boutons REC / PLAY agissent sur les pistes individuelles après leur sélection.

RECORD = Bouton INI + Sélection des pistes individuelles (UK, LK, PK, LD, ACC, KP, CTL) à enregistrer + Bouton REC (pistes individuelles) + Bouton STOP pour arrêter.
PLAYBACK = Sélection des pistes individuelles (UK, LK, PK, LD, ACC, KP, CTL) à lire + Bouton PLAY (pistes individuelles) + Bouton STOP pour arrêter.
REC/PLAY en même temps = Il est possible de lire des pistes déjà enregistrées tout en enregistrant d’autres. La sélection d’une piste REC désarme automatiquement la même piste PLAY si elle était cochée et réciproquement. Chaque piste individuelle possède une Led d’activité.

Pour mémoire, sur la série HS des Electone de Yamaha, il n’y a que 6 pistes Notes + 1 piste Contrôle actives. Ce sont UK (Ch.1), LK (Ch.2), PK (Ch.3), LD (Ch.4), ACC (Ch.5), KP (Ch.15) et CTL (Ch.16), en jaune sur le panneau de contrôle.

Pendant un PLAY de la performance, il est possible de faire varier la vitesse de lecture en utilisant le [Hslider] TEMPO-Int PLAY de 40 à 240 BPM (120 par défaut).

Le chronomètre REC/PLAY indique la durée d’enregistrement et/ou de lecture en MM:SS.

Si le MDR-E est utilisé comme un séquenceur MIDI généraliste, alors les 16 pistes individuelles MIDI sont à la disposition du performeur. Dans ce cas, il est recommandé de basculer le commutateur ON/OFF CUR-REG sur la position OFF.

* seq MIDI Type 0

Ce séquenceur mono-piste mais multi-canaux (Type 0 de la spécification MIDI) a plusieurs fonctions essentielles dans le projet MDR-E.

Il sauvegarde sur disque les fichiers de performance au format texte et non MIDI, après conversion depuis [seq T1-T16 + seq TREG].

Il charge en RAM du PC les fichiers de performance qui ont été sauvegardés sur disque. Il peut les jouer directement et/ou les convertir en pistes individuelles pour être traitées par [seq T1-T16 + seq TREG].

Il peut aussi charger puis lire directement des fichiers au format MIDI (SMF), par exemple avec extension .mid ou .kar. Mais, il ne sait pas sauvegarder dans ce format !

Et, nous retrouvons les commandes habituelles attendues sur un séquenceur, REC / PLAY / PLAY+CONVERT, STOP / PAUSE / CONTINUE, TEMPO-Int PLAY et Chronomètre REC/PLAY.

* seq TRAM

Contrairement au MDR-3, nous avons ici un séquenceur indépendant qui est dédié à l’enregistrement – à l’envoi de la totalité de la RAM (SYSEX) des Electone HS/HX. Pour mémoire celle-ci est composée des données de REG-MEM, CSP/RSP, URP, UVD et FMP. Pour plus de détails, voir le manuel d’utilisation des HS/HX et MDR-3.

Son utilisation est simple. REC stocke les données de la RAM de l’Electone dans la RAM du PC. SEND envoie ces données dans le sens inverse. Après appui sur l’un de ces boutons, le processus est automatique. Le bouton STOP est présent uniquement si une erreur devait se produire.

* FILE MANAGER

File Manager permet de sauvegarder vers ou de charger depuis le disque dur, SSD et/ou USB les fichiers des séquenceurs [seq MIDI Type 0] ou [seq TRAM].

Son utilisation est basique. Après avoir choisi le séquenceur F.SEQ ou F.SQX, puis Save ou Load, un clic sur GoTo (ici vers le dossier /home/joe/Musique/MDR-3) ouvre le Gestionnaire fichier du système d’exploitation (ici Linux Mint) et nous nous retrouvons en terrain connu.

* MIDI NOTES IN/OUT Display

Cette fonction n’est pas réellement nécessaire mais elle peut être utile. Quitte à utiliser un environnement de programmation graphique, faisons-nous plaisir. Nous affichons le nom des notes jouées + Led d’activité, le niveau de leur vélocité, le numéro de leur octave + Led d’activité ainsi que, mais beaucoup trop rapidement, le numéro de leur canal. Nous pouvons sélectionner 3 sources différentes : TKO = les sorties MIDI de [seq T1-T16], MDI = les entrées de MIDI de [midiin] et SQO = la sortie MIDI de [seq MIDI Type 0].

* ELECTONE ‘Pseudo’ KEYBOARDS

Idem que pour au-dessus, pour le fun. Ici, nous affichons le nom des notes mais sur 5 octaves / 6 pistes-canaux, ceux des Electones, avec Led d’activité.

♦ Séquenceurs x 19

Le fonctionnement des séquenceurs de l’Alpha v.0.2 du MDR-E a été étoffé, principalement celui des [seq T1-T16] en intégrant une double fonction TRACKS Initialization + [buddy 16] (fin des pistes).

Cet écran est constitué de 4 [canevas] principaux :
  • * seq Type 0
  • * seq T1-T16 / * seq TREG
  • * seq TRAM
  • * SYSEX MESSAGES (voir prochain paragraphe)

Yamaha MDR Emulator – Alpha v.0.2 | les 19 Séquenceurs + les Messages SysEx

* seq Type 0

Ce séquenceur mono-piste mais multi-canaux (Type 0 de la spécification MIDI) a plusieurs fonctions essentielles dans le projet MDR-E comme décrit dans le chapitre précédent ♦ Panneau de contrôle. Par rapport à l’Alpha v.0.1, les commandes ont été optimisées afin de mieux interagir avec les autres objets/fonctions du projet.

Il est composé de 3 objets principaux : [midiflush] + [seq MIDI Type 0] + [midiflush]. Le flux MIDI brut entrant est reçu depuis [midin] et celui sortant envoyé vers [midiout].

Il écrit et sauvegarde ses fichiers avec FILE MANAGER sur disque au format texte et lit les fichiers SMF (.mid, .kar, etc.). Mais il ne peut pas les sauvegarder dans ce format !

* seq T1-T16

Chacun de ces 16 séquenceurs gère une piste MIDI = un canal MIDI.

Le fonctionnement des [seq T1-T16] a été grandement amélioré afin qu’ils se comportent, quand nécessaire, comme un unique [seq]. La combinaison du bloc TRACKS Initialization associé à l’objet [buddy 16] a permis d’atteindre cet objectif. Par rapport à l’Alpha v.0.1, les commandes ont été optimisées afin de mieux interagir avec les autres objets/fonctions du projet.

Néanmoins, le contenu des [seq T1-T16] ne peut pas être directement sauvegardé sur disque en une seule étape. Il faudrait le faire piste par piste et en faire autant lors du chargement depuis le disque. C’est beaucoup trop long, contraignant et fastidieux. Le compromis qui a été implémenté passe d’abord par une conversion des [seq T1-T16] + [seq REG] (quand nécessaire) vers [seq MIDI Type 0] puis depuis ce dernier la sauvegarde du fichier sur disque. Pour le chargement du fichier depuis le disque, nous procédons en sens inverse.

Il est composé de 22 objets principaux et d’un bloc : [midiflush] + [midiparse] / [midiformat] / [demux 16] + [seq T1-T16] + [buddy 16] / bloc Tracks Initialization + [midiflush]. Le flux MIDI brut entrant est reçu depuis [midin] et celui sortant envoyé vers [midiout].

*seq TREG

Ce séquenceur est dédié au flux MIDI SysEx pour le registre courant de l’Electone. Lorsque le commutateur ON/OFF CUR-REG est en position ON (par défaut), il est synchronisé avec les [seq T1-T16] et reçoit-envoie automatiquement les données SysEx au début de la séquence REC ou PLAY.

Il est composé de 2 objets principaux : [sysexin] (accepte que les messages MIDI entrant débutant par F0h) + [seq TREG] et d’une fonction de détection de F7h (fin d’un message SYSEX) pour arrêter automatiquement l’enregistrement. Le flux MIDI SysEx sortant est envoyé vers [midiout].

* seq TRAM

Ce séquenceur indépendant est dédié au flux MIDI SYSEX pour la totalité de la RAM de l’Electone.

Il est aussi composé de 2 objets principaux : [sysexin] (accepte que les messages MIDI entrant débutant par F0h) + [seq TRAM] et d’une fonction de détection de F7h (fin d’un message SYSEX) pour arrêter automatiquement l’enregistrement. Le flux MIDI SYSEX sortant est envoyé vers [midiout].

♦ Messages SysEx

Avec l’Alpha v.0.2 du MDR-E, la gestion du flux et de l’ordre des messages SYSEX ont été corrigés et améliorés.

Les messages ALL DATA RAM sont utilisés en association avec le [seq TRAM], un pour le RECORDING et un pour le PLAYBACK.

Les messages REG/PERFORMANCE sont utilisés en association avec le [seq TREG], 3 pour le RECORDING et 4 pour le PLAYBACK.

♦ Configuration de tests

Le projet MDR Emulator (MDR-E) étant multi-plateforme, il est compatible avec les systèmes d’exploitation libres GNU/Linux, et propriétaires macOS et Windows, avec peut-être quelques adaptations mineures pour ces 2 derniers.

Since the MDR Emulator project (MDR-E) is multi-platform, it is compatible with the free GNU/Linux OS, and the proprietary macOS and Windows, with perhaps a few minor adaptations for the latter two.

Pour l’instant, les tests de l’Alpha v.0.2 du MDR-3 se déroulent principalement sous GNU/Linux (Linux Mint 19.2). L’Alpha v.0.3 sera aussi complètement testée sous Windows 10.

For now, the Alpha v.0.2 tests of the MDR-3 are mainly running under GNU/Linux (Linux Mint 19.2). Alpha v.0.3 will also be fully tested on Windows 10.

Yamaha MDR Emulator – Alpha v.0.2 | Configuration de test sous GNU/Linux

♦ Lire la suite

MDR Emulator+ Alpha v.0.3 – L’émulateur de MDR-3 pour Yamaha Electone

• Pour suivre l’évolution de ce projet MIDI/Audio :

Music Disk Recorder Emulator+ (MDR-E+) est un travail en cours (WIP)…