Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sostenuto pedal does nothing #624

Open
Kirtai opened this issue Mar 11, 2024 · 9 comments · May be fixed by #750
Open

Sostenuto pedal does nothing #624

Kirtai opened this issue Mar 11, 2024 · 9 comments · May be fixed by #750

Comments

@Kirtai
Copy link

Kirtai commented Mar 11, 2024

I just tried the latest release with my dpiano and while the sustain pedal works the sostenuto one doesn't.

Any thoughts on adding support for this?

The MIDI CC# for sostenuto is 66.

@diyelectromusic
Copy link
Collaborator

Ok, so I've had a bit of a look at this and I'm not sure this is implemented in the Synth_Dexed synth engine MiniDexed uses.

I've found references online to sostenuto being "key hold" which can be set to be controlled by the second foot controller (FC2) in a DX7ii:

image

But can't see where this maps into Dexed itself - I'm not sure it is part of the original DX7? There are a number of API calls in Synth_Dexed to set what the foot controller will do for voices (choosing combinations of pitch, amplitude, EG and the range) and there is a global sustain function. But I can't see a mention of sostenuto or key hold in the original DX7 manual and I'm not sure the original DX7 recognised CC66 either from the MIDI implementation chart I've found - again I'm wondering if this might be a DX7ii thing...

Kevin

@Kirtai
Copy link
Author

Kirtai commented Mar 14, 2024

"Key Hold" sounds like the right thing though it's sad that it's not in the original DX7. :(

@Kirtai
Copy link
Author

Kirtai commented Apr 1, 2024

Should I suggest this to the upstream Synth_Dexed or the original Dexed?

@diyelectromusic
Copy link
Collaborator

Hmm, good question. Not sure. I guess ultimately it would have to be in Synth_Dexed regardless even if the original change is further upstream, so I'd probably start there.

I can see that each note has a "sustain" flag but that seems to always be set according to the voice's global sustain status. I don't know how the two would interact so it might be necessary to introduce a "hold" flag for notes too to allow either sustain or hold to hang on...

I don't follow the Dexed code as much as Synth_Dexed, but I couldn't obviously see it implemented there either. It certainly didn't look like it processed CC 66, only CC 64 - this is in PluginProcessor/processMidiMessage, which appears to have most of the logic that became dexed.cpp in Synth_Dexed.

Given how the code is quite diverged anyway, it could perhaps be added to Synth_Dexed and not worry about the original...
I don't know how much time Holger has to think about such things in Synth_Dexed these days though...

Kevin

@soyersoyer
Copy link
Contributor

@probonopd
Copy link
Owner

Thanks @soyersoyer. As soon as it is merged in https://codeberg.org/dcoredump/Synth_Dexed, we shall update MiniDexed to use the updated Synth_Dexed version.

@dcoredump
Copy link
Contributor

It's merged in Synth_Dexed.

Thanks!

probonopd added a commit that referenced this issue Nov 9, 2024
Hopefully closes #624
@probonopd probonopd linked a pull request Nov 9, 2024 that will close this issue
@probonopd
Copy link
Owner

@Kirtai please test whether the build in #750 fixes this for you. Thanks!

@soyersoyer
Copy link
Contributor

This one needs to be merged also #746. And the CC 66 should call the new functions. I'll create a PR.

probonopd added a commit that referenced this issue Nov 9, 2024
soyersoyer pushed a commit to soyersoyer/MiniDexed that referenced this issue Nov 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants