MDR-E+ (Yamaha Music-Disk-Recorder Emulator+) built with Purr Data / Pd-L2Ork (Pd engine)
• Music Disk Recorder Emulator+ (MDR-E+) is a free/libre, greatly improved software emulator of the Yamaha MDR-3 (Music Disk Recorder) hardware expander built with Purr Data.
It is cross-platform and working at least under free/libre GNU/Linux including Raspberry Pi OS, and proprietary macOS & Windows operating systems.
[FR] Music Disk Recorder Emulator+ (MDR-E+) est un émulateur logiciel libre/gratuit, grandement amélioré de l’expandeur matériel Yamaha MDR-3 (Music Disk Recorder) développé avec Purr Data.
Il est multi-plateforme et fonctionne au moins sous les systèmes d’exploitation libres GNU/Linux incluant Raspberry Pi OS, et propriétaires macOS & Windows.
NOTE: The MDR-E+ project is mainly targeting the owners of the vintage Yamaha Electone HS Series (Hi-Style MIDI electronic organs) released in the late ’90s (1987)!
[FR] Remarque : Le projet MDR-E+ cible principalement les propriétaires de la série vintage Yamaha Electone HS (orgues électroniques MIDI Hi-Style) commercialisée à la fin des années 90 (1987) !
The MDR-E+ project could be also adapted – tailored to other Yamaha Electone Series by anyone who is interested and who has a good knowledge about Purr Data.
[FR] Le projet MDR-E+ pourrait être adapté – ajusté à d’autres séries d’Electones de Yamaha par quiconque qui est intéressé et qui a une bonne connaissance de Purr Data.
⇒ Last update: July 8th, 2020
– A preview of what the next αlpha (5th) release of the project could be!
⇒ Previous update: April 23rd, 2020
– A workaround for fixing the Real-Time big issue
MDR-E+ is a FLOSS software published under GPL v3 license written with Purr Data (Pd-l2ork v2), an improved fork of Pure Data Vanilla, with a modern HTML5 GUI written in JavaScript using NW.js.
[FR] MDR-E+ est un logiciel FLOSS publié sous licence GPL v3 écrit avec Purr Data (Pd-l2ork v2), un fork amélioré de Pure Data Vanilla, avec une interface graphique HTML5 moderne écrite en JavaScript en utilisant NW.js.
Purr Data v.2.x.y (Pd-l2ork v.2) is a free & open source (FLOSS) visual programming environment for real-time music and multimedia creation using Pure Data Vanilla v.0.48-0 engine and carrying on an HTML5 GUI (the last major revision of HTML). It is cross-platform and working at least under free/libre GNU/Linux, and proprietary macOS & Windows operating systems. Its GUI is available in 3 languages: English (default), German and French.
[FR] Purr Data v.2.x.y (Pd-l2ork v.2) est un environnement de programmation visuelle libre/gratuit et open source (FLOSS) pour la création musicale et multimédia en temps réel utilisant le moteur Pure Data Vanilla v.0.48-0 et une interface graphique HTML5 (la dernière révision majeure de HTML). Il est multi-plateforme et fonctionne au moins sous les systèmes d’exploitation libres GNU/Linux, et propriétaires macOS & Windows. Son interface graphique utilisateur est disponible en 3 langues : Anglais (par défaut), Allemand et Français.
• The Yamaha MDR-3 expander was targeting (at least) the owners of the vintage Yamaha Electone HS Series (Hi-Style MIDI electronic organs) released in the late ’90s.
[FR] L’expandeur Yamaha MDR-3 ciblait (au moins) les propriétaires de la série vintage Yamaha Electone HS (orgues électroniques MIDI Hi-Style) commercialisée à la fin des années 90.
• Performers who are willing to test the MDR-E+ project and to give feedback are the welcome!
[FR] Les performeurs qui sont désireux de tester le projet MDR-E+ et de donner un retour d’information sont les bienvenu·e·s !
⇒ The next αlpha (5th) release of MDR-E+ is forecasted to be published during the Winter 2020/21. The MDR-E+ project is a Work in Progress (WIP)…
[FR] La prochaine version (5ème) αlpha de MDR-E+ devrait être publiée au cours de l’Hiver 2020/21. Le projet MDR-E+ est un travail en cours…
◊ MDR-E+ project – Table of contents
- Current version & Installation with Purr Data
- Main features
- Project synoptic
- Releases history & Changes log (in English & French)
- The project has been in STAND-BY for more than 6 months!
The Control panel (normal+extended) of the original Yamaha MDR-3
MDR-E+ project could be also tailored
to other Yamaha Electone Series
by anyone who is interested!
♦ Current version as of 2019/11/24
• The current version of MDR-E+ is the 0.3.4 (αlpha 4th release).
DOWNLOAD ===> |
mdr-emulator034.zip | Build.20191124 | File size ~ 130 KB |
MDR-E+’s GUI is optimized for 16/9 screens with 1,920 x 1,080 resolution. As its GUI is freely zoomable on 15 levels + full screen without any definition loss, the performer can easily adapt it to her/his specific screen/taste. Bigger will be the screen better will be the readability.
As for all MIDI/Audio environment and Home Studio, I suggest to split MDR-E+ and the associated software across multiple screens and/or multiple virtual desktops (like under GNU/Linux systems).
[FR] L’interface graphique du MDR-E+ est optimisée pour des écrns 16/9 avec une résolution de 1.920 x 1.080. Comme son interface graphique est librement zoomable sur 15 niveaux + plein écran sans aucune perte de définition, le performeur peut facilement l’adapter à son écran/goût spécifique. Plus grand sera l’écran, meilleur sera la lisibilité.
Comme pour tout environnement MIDI/Audio et Home Studio, je suggère de fractionner MDR-E+ et les logiciels associés sur plusieurs écrans et/ou plusieurs bureaux virtuels (comme sous les systèmes GNU/Linux).
MDR-E+ project under GNU/Linux
• Purr Data (Pd-L2Ork v.2)
NOTE that before using Music Disk Recorder Emulator+ (MDR-E+), Purr Data v.2.10.0 or higher (a free/libre graphical data-flow programming environment which is geared towards real-time interactive computer music and multimedia applications) must be installed (~ 100 MB -> 300 MB) on your computer under:
– either GNU/Linux with the recommended OBS/JGU (Open Build System / Johannes Gutenberg University) procedure,
– or Apple macOS or Microsoft Windows,
as Music Disk Recorder Emulator+ is running inside Purr Data.
[FR] NOTEZ bien qu’avant d’utiliser Music Disk Recorder Emulator+ (MDR-E+), Purr Data v.2.10.0 ou version ultérieure (un environnement libre et gratuit de programmation graphique de flux de données orienté vers des applications de musique et multimédias interactives en temps réel) doit être installé (~ 100 Mo -> 300 Mo) sur votre ordinateur sous :
– soit GNU/Linux avec la procédure recommandée OBS/JGU (Open Build System / Johannes Gutenberg University),
– ou macOS d’Apple ou Windows de Microsoft,
comme Music Disk Recorder Emulator+ s’exécute à l’intérieur de Purr Data.
Make sure to read at least the following chapters of Purr Data Installation for setting up your fresh install:
- macOS & Windows
- GNU/Linux
- Running Purr Data: First-Time Setup, macOS and Windows Users, Linux Users, Using JACK MIDI with Purr Data.
- – as well as- ‘Meet the Cat’ Tutorial – A quick introduction to Purr Data, how it came about, and how to use it, including Configuration: Audio and MIDI Devices, GUI and Startup Options and Getting Help.
- [FR] – Rencontrez le Chat : Introduction rapide à PURR DATA (vs Pd-l2ork vs Pd-extended vs Pure Data) – Cet article fournit aux nouveaux et potentiels utilisateurs de Purr Data une introduction en douceur au programme et quelques informations utiles pour commencer à programmer des patches (modules) avec les centaines d’objets graphiques internes et externes (bibliothèques) disponibles.
• MDR-E+ zipped file
The MDR-E+ project consists of 2 files: the program itself (a main module with about 20 integrated sub-modules) and an Electone HS image. The whole thing, after decompression, weighs only about 400 KB, of which 1/4 is for the image. These 2 files, after decompression, are to be deposited into the same folder of your choice on your computer.
Once on your computer with Purr Data installed and configured, to run MDR-E+, simply double-click on its *.pd file which will first launch Purr Data and then the program itself. And you are ready to go!
As always, the MDR-E+ project can be used as it is or freely modified – adapted by anyone to her/his particular taste. Do It Yourself (DIY) and tailor Music Disk Recorder Emulator+ to your particular needs and to your MIDI/Audio environment.
[FR] Le projet MDR-E+ se compose de 2 fichiers : le programme lui-même (un module principal avec environ 20 sous-modules intégrés) et une image de l’Electone HS. Le tout, après décompression, ne pèse qu’environ 400 Ko, dont 1/4 est pour l’image. Ces 2 fichiers, après décompression, sont à déposer dans le même dossier de votre choix sur votre ordinateur.
Une fois sur votre ordinateur avec Purr Data installé et configuré, pour exécuter MDR-E+, double-cliquez simplement sur son fichier *.pd qui lancera d’abord Purr Data puis le programme lui-même. Et vous êtes prêt à passer en mode utilisation !
Comme toujours, le projet MDR-E+ peut être utilisé tel quel ou librement modifié – adapté par chacun à son goût particulier. Faites-le par vous-même (DIY) et adaptez Music Disk Recorder Emulator+ à vos besoins particuliers et à votre environnement MIDI/Audio.
MDR-E+ project under Windows 10
• Once « this crucial workaround » (which is only a workaround!) will have been implemented into all MDR-E+ project’s sub-patches containing a GOP (Graph-on-Parent)…
[FR] Une fois que « cette solution de contournement cruciale » (qui n’est qu’une solution alternative !) aura été implémentée dans tous les sous-patchs du projet MDR-E+ contenant un GOP (Graph-on-Parent)…
We could expect that MDR-E+ will include various improvements and bugs fixes as well as new major functionalities, which are not available on the physical Yamaha MDR-3 expander, like:
[FR] On peut s’attendre à ce que MDR-E+ inclut diverses améliorations et corrections de bogues ainsi que de nouvelles fonctionnalités majeures, qui ne sont pas disponibles sur l’expandeur physique Yamaha MDR-3, comme :
- an Electone HS Voices Volume & Balance module,
- a MIDI Channels Transposition module,
- an Audio/Voice Recorder & Player module, and
- a Last used Files & MIDI Chords Detector module,
- but also the removal of [pd kbs] module (see after the picture)!
- The default zoom level will be increased to offer a better readability to the performer.
The next αlpha (5th) release of MDR-E+ could look like this one
NOTE that even with the implementation of Purr Data’s proposed workaround for its Audio engine, I am obliged to remove the [pd kbs] module and don’t add [Audio Effects] which are still too much demanding on CPU load when using real-time data flow (MIDI as well as Audio). These functions/modules could be reintegrated into MDR-E+ once Purr Data would have been able to fix the bad RT behavior of its Audio engine, in fact how badly the GUI is impacting the Audio engine performances.
♦ Main features
Summary for the current αlpha 0.3.4 version of MDR-E+ and the next αlpha*.
CONTROL PANEL | General Purpose Sequencer | Performance + Cur-Reg Sequencers | SysEx Bulk Sequencer | Comment |
SEQUENCER | 1 TRACK | 16 + 1 TRACKS | 1 TRACK | |
SEQ NAME |
[seq MIDI Type 0] | [seq T1] to [seq T16] + [seq TREG] | [seq BULK] | i.e. 19 [seq] in total |
FEATURES | MIDI Recorder-Player + Conversion 1xTK => 16+1xTK | Electone MIDI Performance + Cur-Reg SysEx + Conversion 16+1xTK => 1xTK | HS ALL RAM SYSEX | Much more than the original MDR-3 |
MIDI IN/OUT | √ [midiin] + [midiout] | √ [midiin] + [midiout] + [sysexin] | √ [sysexin] + [midiout] | |
MIDI THRU | √ | √ | Built-in loopback | |
Channel/Track | 16×1 | 1×16 + 1xSysEx | 1xSYSEX | |
RT RECORD | √ | √ track by track or all | √ | Real Time |
Write SMF | √ Format 0 | Std MIDi File | ||
PLAYBACK | √ | √ track by track or all | √ | [bang) [start) |
Read SMF | √ Format 0 & 1 | Std MIDi File | ||
Conversion | √ [seq0] <=> | √ <=> [seq1-to-16 + cur-reg] | Mono/Multi TKs | |
File disk Read/Write | √ .txt + .mid |
N/A | √ .txt |
Use System File Manager |
Chrono display | √ mm:ss | √ mm:ss | [clock] | |
Play Tempo | √ +/- 40-240 bpm | √ +/- 40-240 bpm | [start) [metro] | |
Full Music Programmer |
√ Separate Playback | commands for CSP/RSP + FMP | Electone HS Series | |
Synchro Tempo | √ internal/external | Auto / Manual | ||
* HS Voices Volume + Balance |
UK + LK + Arp. Chord + Rhythm | UK + LK + Arp. Chord + Rhythm | * in next Alpha | |
* MIDI Channels Transposition | from among CH1-to-16 <=> | to among <=> CH1-to-16 | * in next Alpha | |
* Audio/Voice Recorder & Player | Can be used in standalone mode | or in synch. with General Sequencer | * in next Alpha | |
* MIDI Chords Detector | Recognizes several hundreds of chords | Chords names + Associated notes + Bass | * in next Alpha | |
** MIDI HS Keyboards |
has been removed until | Audio engine RT issues are fixed | ** removed & postponed | |
** Audio Effects |
Chorus, Reverb, | Vibrato & Vocoder | as above | ** postponed |
Note: A number of Purr Data objects and glue are not really required for the good operation of the MDR Emulator+. They are only present to check the smooth running of the project and facilitate its debugging.
♦ Project Synoptic
This synoptic is presenting the principal parts (modules) of the MDR-E+. It allows the performer to better understand how the project works for easy use and appropriation.
♦ Releases History & Changes Log (in English & French)
• 2019/12/12 — MDR Emulator+ Alpha v.0.3.4
The MDR-3 Emulator for Yamaha Electone HS Series – (English version)
- 4th release
- Optimization of the Control panel ergonomics which is always flexible, zoomable on 16 levels including full screen
- Added contextual messages for the performer in most modules
- Added HS – All and None (Tracks) choices to the Individual Tracks Performance Sequencer
- The File Manager is now fully integrated directly into the two concerned modules (General Purpose Sequencer & SysEx Bulk Data Sequencer)
- Fixed known bugs
- Improvement and optimization of the different modules operation
- Addition of flow control mechanisms (SysEx-In/Out and Midi-In/Out)
- Strengthening mechanisms against crashes
- Improved documentation in the different modules (for easy reuse in other projects)
- The rest of the (invisible) work was essentially done under the hood
• 2019/11/27 — MDR-E+ Alpha v.0.3.4 – (French version)
• 2019/09/22 — MDR-E+ Alpha v.0.3 – (French version)
- 3ème publication
- Introduction d’un nouveau Panneau de Contrôle (Control Panel) complet, modulable, zoomable ainsi que plein écran
- Utilisation de Modules (sous-programmes / sous-patches) afin de séparer l’interface utilisateur des modules de programmation Purr Data / Pure Data
- Ajout de la fonction Lecture en boucle pour les modules ‘Performance Sequencer’ et ‘In/out Sequencer’
- Ajout du module Get (Obtenir) le modèle de l’Electone HS Series (HS-8/7/6/5/4)
- Ajout du module Memorized Registration on Electone = Changement mémoire de registration sur l’Electone HS
- Ajout du module Expression Pedal = Contrôle du volume audio de l’Electone HS
- Ajout du module Full Music Programmer (F.M.P.) du panneau de l’Electone HS
- Amélioration des possibilités du module Electone HS-Series ‘Pseudo’ Keyboards
- Ajout d’une Documentation d’utilisation
- Correction de bogues connus
- Optimisation du fonctionnement des différents modules
- Amélioration de la documentation des différents modules
• 2019/09/11 — MDR-E Alpha v.0.2 – (French version)
- 2ème publication
- 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)
• 2019/08/29 — MDR-E Alpha v.0.1 – (French version)
- 1ère publication
- POC – Proof of concept / Démonstration de faisabilité
MDR-E+ project using VMPK (3 instances) for cloning the 3 keyboards (UK + LK + PK) of Yamaha Electone HS Series organs
♦ MDR-E+ project has been in STAND-BY for more than six months (~ 1st half of 2020)!
Why that? To make it short…
Purr Data (currently version 2.10.1 – April 2020) has still serious ongoing issues with the proper management of real-time MIDI and Audio data. So, in these conditions it’s making no sense to pursue further the development of this project. It should return to life when the developers of Purr Data will have fixed these major issues, sooner or later.
Pourquoi cela ? Pour faire court…
Purr Data (actuellement la version 2.10.1 – Avril 2020) a encore de sérieux problèmes en cours avec la bonne gestion en temps réel des données MIDI et Audio. Dans ces conditions, cela n’a donc aucun sens de poursuivre le développement de ce projet. Il devrait reprendre vie lorsque les développeurs de Purr Data auront résolu ces problèmes majeurs, tôt ou tard.
⇒ April 23rd, 2020 — A « workaround » (but not the final solution) was proposed by its development team. See detail at the end of this chapter.
23 avril 2020 — Une « solution alternative » (mais pas la solution finale) a été proposée par son équipe de développement. Voir détail à la fin de ce chapitre.
Short explanation of one of these major Purr Data’s issues
Purr Data has several big issues with the real-time MIDI & Audio data management. The problems are increasing as the project is getting bigger. One of them is a very bad handling of the mouse leading to increase abnormally the CPU load as you just move the mouse on the top of the project’s control panel, up the complete freeze of the project!
Then, when I’m effectively running (with EditMode = Off) such or such GOP(s), the situation is getting worse and worse, leading very quickly to continuous erroneous MIDI values, audio glitches from short to long, random freezes of few seconds and finally totally freezing the whole project by just moving the mouse over the GOPs. This is an undocumented and hidden feature of Purr Data!
Purr Data 2.10.1 / All GOPs = IDLE (except [pd dt]) / DSP = OFF => Moving the Mouse => See the very unexpected bad impact on CPU load on the following 2 screen captures.
It’s the same very bad behaviour under GNU/Linux (Linux Mint 19.3) with/without JACK as well as under Windows 10 (v.1909) with/without JACK or ASIO. There is no error or warning mentioned in the Purr Data’s Console.
a- with EditMode = OFF (Purr Data + System Monitor together)
b- with EditMode = OFF (Purr Data + Htop alone)
• ‘Workaround’ proposed by Purr Data’s Development Team (04/23/2020)
The Real Time big problem was confirmed by Purr Data’s Leader.
There are 2 combined major issues.
The first one is how the Pure Data Vanilla engine (used by Purr Data) is very poorly managing the mouse moves especially in GOPs (Graph-on-Parent) embedded into medium to more complex sub-patches.
The second one is the additional system resources needed by NW.js – the HTML5 graphic engine of Purr Data versus the legacy Tcl/Tk of Pure Data.
Proposed workaround (but not the final solution !)
I will not enter in the detail of Purr Data (Pd-l2ork v2) / Pure Data functioning. There are good articles and books available on the web where you can find all the necessary explanations.
Hereafter the comments from the Team Leader of Purr Data
- The spikes shown in Gnome Performance Monitor are probably a result of the Audio engine, not the GUI toolkit.
- Since the Audio engine is the CULPRIT, I would guess the spikes would look roughly the same in Pd Vanilla. The way it works in both pieces of software is this:
- GUI toolkit calls a routine when mouse motion is detected.
- The routine forwards a ‘motion’ message to the Audio engine with the mouse coordinates for that particular canvas.
- The Audio engine iterates over EVERY object on the canvas until it finds the one under those mouse coordinates. (Or if there’s nothing under the mouse it iterates over the entire visible patch.)
- For GOPs it gets even worse — the Audio engine will get the list of inner objects and iterate through those, too.
- There’s an outstanding GSoC project to change this algorithm so that you don’t get those spikes.
- In the meantime: I noticed that some of your GOP canvases have a lot of objects hidden inside which don’t get displayed on the parent. For example — inside the perf-seq subpatch you have over 400 objects. Even if that were the only GOP subpatch being displayed, every time you move the mouse on an empty area of the parent canvas the Audio engine will iterate over 400 objects!
- That particular GOP subpatch appears to have about 40 Gui objects for display in the GOP window. If you were able to hide away all those other 400 objects in a single [pd] sub-patch you should see a 10x efficiency boost. I see a big 350 object chain in perf-seq which only has two connections going into it. So maybe you could test putting that in a [pd] sub-patch.
- Depending on how many objects are in your other GOPs that workaround might be enough to avoid dropouts in audio and MIDI.
Proof of Concept for this Purr Data workaround which is not the final solution!
I just finished implementing and testing above proposal as a POC on one part of my MDR-E+ project, using the most demanding one; i.e. [pd perf-seq]. The result is very positive and the CPU spikes up to 100 % are definitively gone down to ± few 10%s, which still need to be reconfirmed and investigated later on when Purr Data will have implemented its new Audio engine behavior. Wait and see.
The principle of Russian (nested) dolls is really a good one to turn around the conceptual limit of Pure Data / Purr Data, but it requires a lot of and too much works to adapt and modify ALL modules (patchs and subpatchs) in my project. In add, with this additional constraint I loose the at-a-glance view of all my sub-patches, which is very bad for a so-called visual programming language.
Main patch (the higher level; i.e. the Control panel) + Sub-patches with GOP (restricted to the strict minimum of visible and no-visible objects) + Main part of each sub-patch into a separated & embedded [pd] sub-patch = a working workaround… until Purr Data will change the very bad behavior of its Audio engine.