MIDI CC numbers one/two off the actual numbers


#1

First, thanks for the great tool! I am really stunned by the capabilities and ease of use of the Axoloti!

It seems that the MIDI CC assignment window lets one assign which MIDI
CC value to use for which controller element.
Now, first I see that there are only CC001CC127 available, which, in my counting are only 127 control numbers. Now, either you follow the actual implementation (which starts with 0 and goes to 127), or the popular assignment in GUIs/Controllers (which starts with 1 and goes to 128).

Second, I found that, if I assign MIDI CC 1 to a knob in the Axoloti patch, I have to wiggle the MIDI controller element that sends out MIDI CC 2, which does not make sense to me at all :confused:


#2

(this is a follow-up / explanation of https://github.com/axoloti/axoloti/issues/262 )


#3

Thanks!

I believe the reason for not allowing to select CC0 is cosmetic - the popup menu would not be square.

I don't believe indexing CC's starting from one is standard. Can you give an example of software that indexes CC's from 1 to 128 included? For midi channels, calling them 1 to 16 (included) is standard.

Which controller? Mod wheel is assigned to CC1 by convention, and using mod wheel by assigning CC1 works.


#4

I don't believe indexing CC's starting from one is standard. Can you
give an example of software that indexes CC's from 1 to 128 included?
For midi channels, calling them 1 to 16 (included) is standard.

ok, cannot think of any atm. only some controllers that have (printed) labels 1..8 for CC-NUM 0..7.

I believe the reason for not allowing to select CC0 is cosmetic - the popup menu would not be square.

why not make it a numberbox? that way, people can just type in the CC NUM they want to use.

Which controller? Mod wheel is assigned to CC1 by convention, and using mod wheel by assigning CC1 works.

e.g. korg NANOkontrol, Behringer BCF2000 have faders assigned to CC0.

Also, this is not exactly what I tried to say: I meant that, the Assignment of CC1 from within Axoloti results in it capturing CC2 values (sent from my device, in this case a nanoKONTROL2), all successive CC assignments are also one off.

cheers and thanks for looking into this


#5

Standard range in MIDI is 0-127. Offset by one could perhaps be an negative result if range are set to 1-127?

Many controllers and/or unit may display i e preset slots as 1-128, but the commands (program change) to be sent are still 0-127. It's just for display, and not to be confused with any kind of mapping one might use.

C00 are often used in Bank Select commands. Should be possible to select although it's often recommended to not use it due to the abovementioned reason.


#6

The printed labels are to confuse the user.

I think music education should adapt to 0-based indexing. Programmers do it too.
Counting quarters 0 - 1 - 2 - 3 - 0 - 1 - 2 - 3.... :smile:


Using a number box, don't know why I did not think of that.
Originally the idea was to add the standard CC meanings like http://nickfever.com/music/midi-cc-list
The nord editor shows the full list with all other CC assignments in the patch, useful...

You certainly have a point that CC0 should be assignable. As a dirty workaround, you can copy an object, paste into a text editor, change the CC assigment to 0 in the XML, copy the XML and paste in your patch.


#7

good list... but then again, no-one I know cares for those... MIDI's a mess, really. But then again, maybe I just don't know the "right" people :smile:

cool, didn't know that feature, will try :smile:


#8

hmmm but if you use a sequencer, some compliance is useful.
Like CC123 "all notes off". This one is implemented invisibly, and maybe it should be non-assignable to controls to avoid confusion ("hey I assigned this controller, but when I use it, my sound stops").


#9

In SuperCollider-Land (where I have my roots), the paradigm is "let the user decide"...
in this light, a fruitful implementation would be IMHO to allow assignment of CC values "all notes off"-funtionality plus give advice to set it to CC123 (without forcing)


#10

but sometimes this becomes a source of confusion and does not improve usability

And save that in the patch, or as an installation preference?
It's a goal that patches can be shared and played. Assuming some midi controller numbers like

  • CC1: modulation wheel
  • CC64: sustain pedal
  • CC123 all notes off

helps patch portability.

To conclude, can we agree that CC numbering is not off, and that CC0 should be select-able?


#11

Totally :smile:


I am still learning about all this... (n00b) and of course I often forget the intention of the things around. Axoloti is just so versatile and for me so full of possibilities :smile:

thanks for all the help amd don't take my comments offensive; in case you understand them this way, I have to work on my language (because they are meant productive, trying to contribute with options rather than my silly "this is how it's done"-ideas)

cheers :smile:


#12

I am really charmed hearing that from a SuperCollider user!

Of course not! Axoloti improves from open discussion.


#13

Don't know if we should be able to use MIDI CC0, since it's used for bank select. Numbers CC120 to CC127 should not be used as well.

The best way in my opinion is to use the predefined CC numbers where possible (e.g. CC71 for resonance and CC74 for Frequency Cutoff) and the undefined CC numbers for all other things. A full list of MIDI CC numbers can be found here: http://www.nortonmusic.com/midi_cc.html This might be the best way to share patches that work for everybody.

A lot of software synths don't follow the list and kind of break the experience, so a slider on your controller can be filter resonance on one synth, and envelope release on another synth.


#14

I like to have guidelines. However, I'd like to have options rather than be restricted by non-technical limitations.
The NanoKontrol (2) e.g. has a factory mode in which CC0 is assigned to the first slider.

Even if it is possible to use CC0, no-one forces you to use it in your design. However, if I'd like to use the NNKtl in factory mode, I currently can't.


#15

Guidelines + the ability to deviate from it, is the strength of MIDI
Here's a sneak preview of the new controller assignment dialog:

A sneaky trick that should currently work is copying the object from the patch, paste it in a text editor, modify the assigned midi controller in the xml to 0, copy&paste the xml back into your patch.


#16

it should be objects/parameters ... no? since you can (and should be able to) assign the same CC # to a number of objects/parameters.

CC 0 - the other 'trick' is to use midi/in/cc i to an inlet, or use patch/modsource_cc and then use a modulation. both allow CC 0

Q for @johannes, why do we have both CC parameter mapping AND mod sources?
surely we could view parameter mappings as a specialised case of mod sources. the later is more advantageous since it allow attenuation etc.
(I guess its 'easier' but multiple ways of achieving similar results can cause confusion, and increase code complexity/maintenance)


#17

this is a beautiful way to do it :smile:


#18

I plan to use a lookup table for midi CC mapping, with just one entry per midi CC. That 'd make midi handling more efficient, and allow assigning while a patch is running, but that also implies mapping one CC to multiple parameters will not be possible anymore.

A fundamental difference is that parameter changes are reflected to the patcher, while modulating the parameter value is not. I think it is desirable, for example, when you map key velocity to a parameter modulation, that the parameter is not actually modifying the patch.


#19

Think it was very useful feature to map one CC to multiple parameters!

Is there a chance to have MIDI learn?


#20

Certainly on my radar screen, "live" midi assignment brings this one step closer...