probonopd / MiniDexed

Dexed FM synthesizer similar to 8x DX7 (TX816/TX802) running on a bare metal Raspberry Pi (without a Linux kernel or operating system)
https://github.com/probonopd/MiniDexed/wiki
1.04k stars 76 forks source link

MIDIAutoVoiceDumpOnPC and Performances #541

Open Banana71 opened 1 year ago

Banana71 commented 1 year ago

I have arrived in modern times and edit the voices in the miniDexed with Dexed via MIDI. Changes on the PC in Dexed are adopted in miniDexed. So far so good. :-)

What I miss the most about miniDexed is the ability to save Voices. I usually fine-tune performances directly in the miniDexed. These Voice changes cannot be saved as a Patch, only in the Performance.

I hoped that the MIDIAutoVoiceDumpOnPC=1 function would allow me to transfer these patches from the performances to the PC. (reverse engineering) . When loading a performance, the sysex data of all TG's are transmitted, regardless of which MIDI channel is set in the performance (1-16, off). Unfortunately, the data of the VoiceData stored in the Performance is not transferred, but the data of the Voice linked to the Performance on the SD card (BankNumber, VoiceNumber of the folder /sysex/voice/...) is sent to Dexed .

I can copy the voices in sysex files on the SD card to the PC at any time and then edit them via Dexed. What is important are the voices stored in the performance. This is all very complicated to describe and I hope you understand what I mean. Am I doing something wrong? Or the function can be changed? Can it be changed so that the VoiceData(s) are sent to the PC (Dexed) on the corresponding MIDI channel. The Voice Data from TG's that have the MIDI channel set to off should not transmit any data.

https://github.com/probonopd/MiniDexed/issues/386#issue-1486829987 I read but didn't find out


Example: Performance.ini

BankNumber1=1
VoiceNumber1=9 //The data from the target Voice will be transmitted MIDIChannel1=1 Volume1=68 Pan1=0 . . . VoiceData1=3E 0B 0E 0C 5C 63 5C 00 24 04 03 00 00 01 00 01 50 00 01 00 0A 32 10 0D 0D 5B 5F 5B 00 26 00 00 03 00 02 00 00 52 00 01 00 05 34 0B 0D 13 5C 63 52 00 32 07 00 00 00 04 03 02 4A 01 00 1C 00 34 0B 0D 23 5C 63 52 00 32 07 00 00 00 04 00 02 63 01 00 1C 00 3E 0B 0E 0C 5C 63 5C 00 24 17 03 00 00 01 00 01 50 00 01 00 0A 34 0B 0D 23 5C 63 52 00 32 07 00 00 00 04 00 02 63 01 00 1C 00 57 11 3C 62 32 32 32 32 01 07 00 1B 37 30 00 01 00 01 18 48 65 72 61 20 20 20 20 20 20 00 //This data should be transferred to Dexed MonoMode1=0 ModulationWheelRange1=99 . . .

diyelectromusic commented 1 year ago

I think part of the issue is that really, MiniDexed ought not to be automatically spamming out SysEx data at all without being asked (either over MIDI or on user request via the UI).

Maybe we need a user-invoked "performance dump" command or similar?

I don't know. I'm really not happy about the way voices/banks and performances (don't) relate to each other (more here: https://github.com/probonopd/MiniDexed/discussions/454#discussioncomment-5516966) but suspect this isn't an easy thing to untangle and do properly without some major overhaul, that would almost certainly break backwards compatibility.

Kevin

probonopd commented 1 year ago

Sooner or later the point is approaching where we need to get our hands on a DX7IID/FD or TX802 to learn how it handles a few things ;-)

diyelectromusic commented 1 year ago

Well if someone wants to buy me a TX7, TX802 and TX816, I promise to do a full and thorough comparison :)

probonopd commented 1 year ago

fwiw, the emulator MAME (known for emulating arcade games) can also emulate a few synths, including the TX81Z. The way I understand it, it emulates the chips, and runs the original firmware. Maybe it can be helpful for experimenting.

https://www.youtube.com/watch?v=Dj-n3HQNch4

diyelectromusic commented 1 year ago

fwiw, the emulator MAME (known for emulating arcade games) can also emulate a few synths

I keep looking in on this from time to time, but I've never really found any concrete information on how to actually do it... Personally I'd like a CZ equivalent of MiniDexed but as far as I can see, no-one has gone down that route.

Kevin

diyelectromusic commented 9 months ago

One option for solving this is to have a "voice dump" menu item somewhere to automatically trigger sending the currently loaded (active, tweaked, whatever) voice over sysex.... I haven't looked in detail at the menu structure to work out where best to put it.

But would this solve the issue?

Kevin

Banana71 commented 9 months ago

Personally, I don't think much of an automatic MIDI dump. With an automatic dump, I fear that voice data in Dexed (PC-VST) will be overwritten if you load another performance after a dump. How about a MIDI menu with the MIDI Dump submenu from which you can manually select a voice (between TG1-TG8 from the current performance) for the MIDI dump. Dexed could then receive the voice data and process it further. Or would it be possible to send the 8 voices (+24 empty voices) from a performance as a sound bank in the sysex to e.g. MIDI-OX?