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.1k stars 80 forks source link

Some trouble with Classic MIDI In and old Roland Piano #356

Closed Banana71 closed 1 year ago

Banana71 commented 2 years ago

Hello,

i have some troubles with the classic midi input

after releasing a single note, the Roland RD-300 or the master keyboard Roland MKB-300 sends the command "CC: All Note off". MiniDexed then promptly cuts off all tones. The sustain pedal also has no effect. Other devices such as Waldorf Blofeld or the Roland JX-08, JD08 can handle it and can be played well with the RD-300. Is there a way to filter the "CC All Note Off" command in MiniDexed.

Logfile vom Roland RD-300: Roland RD-300 Midi In

If it ever works I'll put the MiniDexed in the RD-300 and MKB-300.

probonopd commented 2 years ago

According to https://community.cantabilesoftware.com/t/roland-d-50-midi-cc-123-all-notes-off/2157/6, certain Roland devices send CC 123 ("All Notes Off") when the last key is released. This is probably a bug or a misinterpretation of the MIDI standard by Roland at the time.

Apparently Roland owners just filter out CC 123.

We would need to make this configurable via minidexed.ini, since it is not desirable for non-Roland owners.

Essentially, we would need to wrap

https://github.com/probonopd/MiniDexed/blob/aa5a7c7450a86b95f4eb80e8122a802eefd4accc/src/mididevice.cpp#L305-L307

in an if statement, depending on a setting in minidexed.ini.

In the meantime, if you do a local build, you can just comment out the lines in question above.

Banana71 commented 2 years ago

Thank you very much Holger, It's time to learn how to develop.

diyelectromusic commented 2 years ago

Interestingly this is a channel mode message, so only tone generators listening on a specific channel should respond to it. The MIDI spec says that any instruments in Omni mode should ignore All Notes Off (see "channel mode messages: all notes off". Also synths don't have to respond to it, it is optional...

So we ought to have something in the tone generators that checks for omni mode and ignore it if set...

probonopd commented 2 years ago

Please test MiniDexed_2022-10-03-dc1a0e0

Set IgnoreAllNotesOff=1 in minidexed.ini.

Banana71 commented 2 years ago

It works very well, only sometimes there is hanging a tone. Maybe it's another problem with the old Roland hardware. Tomorrow I will take a little more time and investigate with MIDI-OX, among other things. Thank you very much

probonopd commented 2 years ago

Hanging tones could also be an issue on the Raspberry Pi software side. Which model of RPi are you using?

Banana71 commented 2 years ago

I use a Raspberry Pi 3 Model B+

probonopd commented 2 years ago

Does it happen when you put a lot of load on the machine?

Banana71 commented 2 years ago

I've played 4 TG's simultaneously with high polyphony on other Masterkeyboards connected via USB or classic MIDI In. So i exclude the Raspberry Pi in the problem.

Banana71 commented 2 years ago

After I deleted the line "usbspeed=full" in the "cmdline.txt" file, it ran even more stably.

Please test MiniDexed_2022-10-03-dc1a0e0

Set IgnoreAllNotesOff=1 in minidexed.ini.

I would be very happy if you would apply your changes to "Main".

probonopd commented 1 year ago

Thanks, merged.