View Issue Details

IDProjectCategoryView StatusLast Update
0001315OpenMPTFeature Requestpublic2020-08-15 11:12
ReporterAndreB Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
Status newResolutionopen 
Platformx86OSWindowsOS VersionXP
Summary0001315: standard panning command to Midi-out
Description

Dear Programmer, dear Saga Musix

Volume and Velocity can be handled great for MIDI, I'm glad for that!
But why does the panning command (CC10) not get transmitted to the MIDI-out?
I mean, if some weird synth takes another command, oh well, no loss. But I think panning - next to volume, is one of THE basic things one should be able to control without much hassle. It's even in the the instrument parameters of OpenMPT.
I would greatly appreciate if OpenMPT could do it.

Kind regards,
Andre
PS: I'd also be interested to know: Are velocity/volume (and pitch and note-off) really the only standard tracker-effects that get sent to MIDI-out? Thank you in advance for the clarification!

Additional Information

panning cc10 in the official midi-standard:
https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2020-04-28 16:44

administrator   ~0004295

I mean, if some weird synth takes another command, oh well, no loss.

It's a bit more complicated than that, and not just "weird synths". Many plugins just don't use MIDI CCs at all. And I don't want to implement a half-baked solution that only works for some plugins, just to replace it by a solution that works for all plugins and then having to support both solutions forever. When you do that, you end up with the terrible volume handling situation that takes away more space in the instrument editor than it should. For this reason it's mostly a UI issue - once that UI issue has been solved, it's easy to support all plugins no matter if they support CC 10 or not.

For what it's worth, you can already manually transmit the current panning value to plugins using MIDI macros: https://wiki.openmpt.org/Manual:_Macro_Configuration#Panning_Variables

PS: I'd also be interested to know: Are velocity/volume (and pitch and note-off) really the only standard tracker-effects that get sent to MIDI-out? Thank you in advance for the clarification!

Why "only"? There's not much left apart from those. And yes, pretty much any effect apart from volume / pan changes is sent via MIDI. That includes arpeggio, tremor, vibrato and many other effects.

AndreB

AndreB

2020-04-28 17:54

reporter   ~0004296

So that's how it is, alright. I figured there could be a good reason, thank you for explaining.

But what about a little option called 'send panning' in a Setup-tab or the Instrument tab (right next to where panning is able to be set)?

I found the volume handling in the instrument editor very useful.

  • AndrĂ©
Saga Musix

Saga Musix

2020-04-28 18:04

administrator   ~0004297

little option called 'send panning' in a Setup-tab

Making this a global setting that affects all songs is an even worse idea.

or the Instrument tab (right next to where panning is able to be set

See, this is exactly the problem I was talking about - there is simply no space the instrument tab to address this problem properly. The volume command handling is already taking up way more space there than it should. I have considered in the past to put both volume and panning handling into a dialog that would be hidden behind a button on the instrument tab, but that would make reviewing those settings much more difficult. I just need a good idea how to solve this problem, then the issue is basically done. The rest of code the code is simple.

AndreB

AndreB

2020-04-30 11:03

reporter   ~0004299

Dear Saga Musix


Admittedly, I didn't understand all that you said, but I believe you with pleasure. I'm a beginner with OpenMPT, and the setting up Macros I would have to learn first.


If I may ask....You said arpeggio, tremor, vibrato, etc, get transmitted to midi; is that by macro-configuration, or standart effects? Does it in the manual somewhere list up the commands of Fasttracker or MPT that get transmitted to midi?

Thank you for openly sharing that proplem, may I give a suggestion? What about moving some midi-stuff that is rather general over to the midi-in/out-plug-in screen? Each device needs it's own midi-plugin anyway, good for setting spertaining to the midi-device/plugin. What do you think?


Kind regards,

Andre

Saga Musix

Saga Musix

2020-04-30 12:47

administrator   ~0004300

You said arpeggio, tremor, vibrato, etc, get transmitted to midi; is that by macro-configuration, or standart effects?

Why don't you just try it yourself? You will see that these effects work out of the box. As Vibrato is implemented by using pitch bends, you need to set the correct pitch wheel depth in the instrument, just like for normal portamentos.

Does it in the manual somewhere list up the commands of Fasttracker or MPT that get transmitted to midi?

No, because the general assumption is that all effects are evaluated; it's just that not all of them (in particular volume related stuff) get transmitted because of the lack of standard behaviour. However, in principle it is possible to transmit any volume and panning commands by defining the correct MIDI macros.

What about moving some midi-stuff that is rather general over to the midi-in/out-plug-in screen? Each device needs it's own midi-plugin anyway, good for setting spertaining to the midi-device/plugin. What do you think?

These settings apply to any instrument plugins, not just the MIDI I/O plugin. And they are per-instrument, not per-plugin, so if you have two different instruments using the same plugin but have different volume configurations, you cannot express that anymore with your suggestion. And we have to keep supporting existing files which are configured that way (which do exist), so we cannot simply remove these instrument settings. They have to stay part of the instrument configuration. Again, this is part of the whole idea that I don't want to change the behaviour from one imperfect solution to another imperfect solution, because in the end that means that later on I have to support two imperfect solutions and one final (perfect) solution. I will find a proper way to handle this some day, but now is not the time I'm afraid.

AndreB

AndreB

2020-04-30 13:22

reporter   ~0004301

Thanks a lot for the interesting explanations.

Yes, I should test it, good idea, with a synth that can receive all of them.


Okay, I see. but then why in the Instrument tab, Sample-based and midi-based is side-by-side, and not for the midi/plugin stuff a separate tab with only the things that actually do something to it. for instance, filter and resonance don't need to be in the instrument info, if my instrument isn't sample-based. Fasttracker even had it's own tab for the midi-instruments. :)


Andre

Saga Musix

Saga Musix

2020-04-30 13:23

administrator   ~0004302

You can have instruments with both samples and MIDI output at the same time. And again, such files already exist in the wild. If it was that simple, it would have already been done. :)

AndreB

AndreB

2020-04-30 13:58

reporter   ~0004303

Ah, true.

But I didn't say they had to be separate, just another page for the midi/Plugin stuff. Wouldn't that be the change in the UI you're looking for? Then, you could browse through the instruments on their second pages or on their first pages.

Saga Musix

Saga Musix

2020-04-30 15:27

administrator   ~0004304

Again, it's not simply "just add another page / button / etc.". I don't want a temporary crappy UI. I want a good approach to solves the problem once and for all, and not implement a crutch that makes the program more difficult to use and that will be replaced with something better later. OpenMPT has suffered in the past from randomly throwing stuff together in the user interface (the instrument editor is actually a good example for that), and I don't want that to happen again.

PS: Comments in this issue tracker are formatted with Markdown, not HTML.

AndreB

AndreB

2020-08-13 12:30

reporter   ~0004415

Dear Saga Musix
I hope you're doing well!
I thought about this, may I tell you: If there are plug-ins, midi, and sample-based, why are they all mushed into one? Couldn't midi-settings and sample-instrument settings be clearly separated visually? If there are values that they share, a change could simply be updated in all the tabs. Then however, one could understand/see what all belongs to midi-settings, what all belongs to sample-based instruments, and so on.
In case my interjection is annoying, you don't necessarily need to answer me!

On the following, I'd appreciate your advice.
I've found out that these effects are transmitted via MIDI:
initial volume (to velocity);
arpeggio (to pitch);
volume (to channel volume);
vibrato and slide-up/down (to pitchbend).

It's what I've found out. I don't know if tremolo is sent somewhere, panning you said isn't sent.
Would you be so kind as to tell me what else is passed on to midi? I haven't found it in the manual. Thank you,
André

Saga Musix

Saga Musix

2020-08-13 12:40

administrator   ~0004416

If there are plug-ins, midi, and sample-based, why are they all mushed into one?

SImply put: All of this is for historical reasons, and we cannot change the past. OpenMPT extends the work other developers have done in the past (e.g. in Impulse Tracker) and builds upon it, so we cannot simply change those rules and break existing modules. And once again: None of this can be changed easily. We cannot "just" add yet another tab just for MIDI stuff, because there is no clean distinction between MIDI and sample-based instruments. You can have both in one. People (including myself) have been making use of that before, and we cannot just make it stop work. Everything you see in OpenMPT is done the way it's done for a reason, and often that reason is history.

In case my interjection is annoying, you don't necessarily need to answer me!

I just wish you understand that I have been thinking about all of these things before, many times, for many years, and if it was so simple to fix them for everyone, I would have already done it. There are many things to keep in mind and there is no simple solution due to our strict desire to keep backwards compatibility.

Would you be so kind as to tell me what else is passed on to midi? I haven't found it in the manual. Thank you,

All effects including any panning effects can be passed to MIDI, by means of manually crafted Zxx commands (as mentioned above).

AndreB

AndreB

2020-08-14 12:50

reporter   ~0004417

Dear Saga Musix
I frankly don't understand why the same code couldn't be displayed in a different way. A tracker could also be displayed left to right or with a blank screen. But maybe we weren't talking about the same thing.

I'm all in all pleased with all that OpenMPT can do, and it's nice we could talk.
Andre

Saga Musix

Saga Musix

2020-08-14 16:30

administrator   ~0004419

Of course things could be done differently. I want them to be done differently eventually. But what I don't want is a mishmash of many different options that will just make the whole issue more complicated for everyone. That's what you have to keep in mind. You might imagine a simple fix for the problem that will suit your needs, but a simple fix will not be enough for some other user's needs. The difficult part here is to balance all of that, while also keeping the code maintainable.

Saga Musix

Saga Musix

2020-08-15 11:12

administrator   ~0004422

Since I sense this answer will probably still not make you happy, here is the bigger picture that we are moving in:

  1. First and foremost, I believe that the current way of managing plugin volume commands is fundamentally flawed. Most importantly I believe that it should be managed per plugin, not per instrument (you can have more than one instrument controlling the same plugin). This is the big problem to solve before we can proceed with plugin panning settings.
  2. However, we cannot simply move the existing setting from instrument settings to plugin settings because there are already modules in the wild which may use different volume settings for different instruments controlling the same plugin. Even when we move forward to make this a plugin-specific setting, these files must stay editable and playable.
  3. I want to avoid adding more settings to instruments for this specific reason: First off they would clutter the instrument tab even more (we would maybe even have to put them in a popup dialog, which is the worst of all possible solutions), and second we would eventually have yet another setting to convert from instrument-specific to plugin-specific.
  4. If we add a plugin-specific pan setting right now, it will be completely inconsistent with the volume settings, and while it might make you happy, it will mostly create confusion due to the inconsistent handling between volume and panning.
  5. Eventually, I want to have common volume and panning configuration in the plugin settings in a consistent way: Either let the user choose a simple preset (e.g. the default preset for panning would simply be to send CC 10), or let the user specify any sort of MIDI macro they want.

I hope it's also clear from the above that we cannot simply start sending MIDI CC 10 without asking the user (by adding some UI element somewhere) because it might change the sound of existing modules.

Issue History

Date Modified Username Field Change
2020-04-28 13:07 AndreB New Issue
2020-04-28 16:44 Saga Musix Note Added: 0004295
2020-04-28 17:54 AndreB Note Added: 0004296
2020-04-28 18:04 Saga Musix Note Added: 0004297
2020-04-30 11:03 AndreB Note Added: 0004299
2020-04-30 12:47 Saga Musix Note Added: 0004300
2020-04-30 13:22 AndreB Note Added: 0004301
2020-04-30 13:23 Saga Musix Note Added: 0004302
2020-04-30 13:58 AndreB Note Added: 0004303
2020-04-30 15:27 Saga Musix Note Added: 0004304
2020-08-13 12:30 AndreB Note Added: 0004415
2020-08-13 12:40 Saga Musix Note Added: 0004416
2020-08-14 12:50 AndreB Note Added: 0004417
2020-08-14 16:30 Saga Musix Note Added: 0004419
2020-08-15 11:12 Saga Musix Note Added: 0004422