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

Mod. Wheel no position reset when changing performance #603

Open
Banana71 opened this issue Jan 19, 2024 · 11 comments
Open

Mod. Wheel no position reset when changing performance #603

Banana71 opened this issue Jan 19, 2024 · 11 comments

Comments

@Banana71
Copy link

Banana71 commented Jan 19, 2024

The position of the mod. wheel remains in memory when the performance changes.

Problem example:
Performance "063 - Wilkinson" (TG1-TG8 is used) is played with the Mod Wheel turned up.
Then switch to "064 - Flute" (TG1&TG2), the tone has vibrato and the modwhell is turned down.
Then switch to Performance "067 - Tom's OB_DX" (TG1-TG6), the sound has vibrato again because TG3-TG6 still have the ModWheel position of Performance 063.

The problem depends on the position of the Mod. Wheel and not on the parameters:

ModulationWheelRangeX=99
ModulationWheelTargetX=1

When a performance is changed, the position of the ModWheel should be written to zero for all MIDI channels and TG's (MIDI CC: B0 01 00 n)

Peter

@Banana71
Copy link
Author

What does the command "B0 79 00 1" CC: Reset Cntrl actually do?

@diyelectromusic
Copy link
Contributor

I've been chewing this over and I think it is a symptom of the problem with having MIDI channels stored in the performances, which I've raised concerns about before.

The issue is that changing the performance has the potential to change the entire MIDI context for the whole of MiniDexed, yet when using performances we also want to treat the whole system as a single 8-TG instrument...

So it isn't surprising that the sequence:

  • 8 TGs listening on MIDI channel 1 get a ModWheel control message.
  • Performance changes to voice that disabled MIDI on 6 TGs.
  • 2 TGs listening on MIDI channel 1 get a different ModWheel control message.
  • Performance changes to voice that re-enables MIDI on all 8 TGs.
  • ModWheel status of TGs is out of sync...

This could happen for pretty much any parameter that a TG has to react to over MIDI.

Part of the problem is that we use MIDI channel as basically an enable/disable indicator for TGs in performances when really that should be independent of MIDI channel.

So the real fix is to have the MIDI channel configuration for all TGs as a single, system-level parameter and have the possibility of muting TGs in the performances.

But whichever way we look at it, this is a bit of a mess at the moment...

Kevin

@RK11111111111
Copy link

Yeah it's a mess. With my configuration, I have 8 midi channels mapped. One through eight in my keyboard, 7map to pads and one to the keybed, and a pad(there are 8 pads). In the performances.ini default, I set each TG to a different channel one through eight. I have for midi momentary buttons two for next and back. One for previous and one for select. When I hit select it toggles the keybed of the device to different midi channels I can step through each one just by hitting select and then back through by hitting prev. It will go past 8 channels, but there is silence, but I can go back. However, using the forward and next buttons I can navigate the menu next goes from TG1 to TG2(but the sound stays the same.) I eventually hit the effects menu, then the performance menu. If I hit select and go down to load, I can load another performance. Interestingly enough, it loads all the TG correctly, but the keybed is playing the third TG(TG3), then I can hit prev and go to the top level menu, then I can play the performance as specified in the performance.

I say this, because while it is a bug, it is kind of a cool bug to be able to go through the TG as specified in the performances. Though I have a hard time explaining it to my daughter. Ideally, IMO, it would be the next and back keys, when the TG2 is displayed, the second tone generator would make sound. It's pretty weird because it seems to be literally remapping the midi device driver to different midi channels, as my keyboard actually registers the pads as a separate device, and I set one pad to channel one which doesn't change. Weirdly enough, if I unplug/replug the keyboard USB the midi resets, and everything works as designed. I thought it was a rogue sysex midi send messing with the keyboard, but mini dexed uses a different sysex device ID. I also tested a number of different hardwiring of channels/tone generators, and it appears that something in dexed itself changes.

I haven't got out my edirol pcr-m30 to test it, that device can actually store/edit different midi channel configurations and select different channels. I hesitate to use that keyboard, because mini-dexed has no use for all the sliders and knobs.

@Banana71
Copy link
Author

@diyelectromusic
I think you're thinking too complicated :-)
It doesn't matter which MIDI channel and how many TGs are used. The position of the modulation Wheel is not reset when changing performance. Other multitimbral synthesizers also ignore the position of the mod. wheel after a performance change (tested with a Yamaha MODX).

I am of the opinion that when changing performance, all TG's (regardless of the MIDI channel) have to set the controller position to zero. No matter where the mod. wheel is located, the sound must not be influenced by the mod. wheel after a performance change. The same probably applies to the foot controller.

@diyelectromusic
Copy link
Contributor

No, I'm trying to think about how to fix it so the same issue doesn't happen with other controllers too and in a way that makes sense for the system. You're seeing the issue with the ModWheel but it could happen with any controller (foot, breath, sustain, etc) - there is always the possibility of a TG receiving a message but then not a follow up message.

But some of this goes back to how people use MiniDexed differently. Some want the performances to be the new presets. In such configurations, the synth ought to behave (from a controller point of view) the same for any preset, which means not having presets where some TGs are affected by controllers and others where they are not.

But I'm now wondering if we should do an internal "reset all controllers" on all TGs on a performance change... I'll have a look.

But I still think having MIDI channel, an inherently "system" level configuration, mixed in with performance data, an inherently "voice/sound" level configuration is wrong, but that is maybe something to chew over another day!

Kevin

@diyelectromusic
Copy link
Contributor

Yeah it's a mess. With my configuration, I have 8 midi channels mapped.

Well, I have repeatedly asked you for different information as part of you reporting #595.

I'm afraid I'm just not understanding quite what your issue is. I really do need you to answer those questions as fully as possible if I am to help any further, especially as I think you're describing different configurations and results as part of the same issue.

Someone else might have a better understanding of your issue, but for me, that is what I'd need to know to go any further.

Kevin

@diyelectromusic
Copy link
Contributor

diyelectromusic commented Jan 20, 2024

But I'm now wondering if we should do an internal "reset all controllers" on all TGs on a performance change... I'll have a look.

MIDI "Reset all Controllers" is MIDI CC 121, which we currently don't support, so we should probably add that in generally anyway, but then the functionality if implemented per TG can also be used on performance change I'd imagine.

Some device implementation suggestions here: http://midi.teragonaudio.com/tech/midispec/ctloff.htm

From the MIDI spec:
image

Curiously, I don't think the DX7 or DX7II implemented this, from what I can see in its MIDI implementation charts...

Kevin

@Banana71
Copy link
Author

Curiously, I don't think the DX7 or DX7II implemented this, from what I can see in its MIDI implementation charts...

MIDI CC 121 Reset cntrl was introduced with the first GM modules (Roland Sound Canvas SC55). The DX7 did not know the command. But I'm no longer sure whether the DX7 reset the modulation when the sound changed. @diyelectromusic Kevin, how does the Yamaha DX11 behave when changing sounds with the modulation wheel turned up?
But I don't think it matters at all, what matters is that, depending on how you use the miniDexed, it can be very annoying if the position of the modulation sources remains the same after a performance change.
I don't think you necessarily have to recreate the MIDI CC 121 either. I see the simplest solution as follows: as soon as a new voice is loaded (via performance load or voice load), a subroutine is called which writes the control position (mod. wheel, foot controller) to the minimum.

@diyelectromusic
Copy link
Contributor

Yes, that is what I'm thinking - but once implemented, there is no reason not to tie it to the MIDI CC.

But it will definitely do at least an internal "reset all controllers" - I don't want to do something special for the ModWheel then to have someone else report the same issue with the breath controller, and so on...

And I'm still mulling over a "mute" setting for TGs rather than use "MIDI disabled"...

Kevin

@Banana71
Copy link
Author

I don't want to do something special for the ModWheel then to have someone else report the same issue with the breath controller, and so on...

I understand what you mean, but with the miniDexed only two controllers would have to be reset.
The sustain pedal is reset when the sound changes. Aftertouch and breath controllers do not need to be reset. At some point you will run out of breath and aftertouch will go to zero when you release the keys you are holding. 😄
Then only the modulatios wheel and the foot controller remain, which should be reset after a sound change.

And I'm still mulling over a "mute" setting for TGs rather than use "MIDI disabled"...

Doesn't actually have anything to do with the problem. Wouldn't the solution be the same regardless of whether deactivated TG's are muted or the MIDI channel is simply set to off?

@diyelectromusic
Copy link
Contributor

Re: Mute - no, it is more a step on the way to handling MIDI a bit better for performances.

Kevin

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

No branches or pull requests

3 participants