Program Change CC Number?


#1

I'm trying to send program change info to the Axoloti from a Korg nanoKontrol.

Which CC number does the midi/in/pgm object expect to see program change info coming from? I've read that it's usually CC0 but that doesn't seem to work.

Thanks for any help.


#2

A MIDI program change is not a form of continuous controller but a distinct message type.


#3

Depends on what version of the nanokontrol you have. It looks like the nanokontrol 2 can't send program change messages. http://zilchified.blogspot.be/2011/03/korg-nanokontrol2-review.html


#4

This is with the nanoKontrol 1 (original version).

The CC stuff works fine but it could be it isn't able to handle program change info. Certainly doesn't seem to be picked up by midi/in/pgm any way...


#5

Have you tested if the program change works with other software like Ableton Live or any other DAW? Might be a good starting point to debug.

If I send a program change from Ableton Live to the Axoloti, it works, but the numbers are off by 1. So if I send Program Change 3 from Ableton, the Axoloti patcher will display the number 2.


#6

I have a Nord Micro Modular and if I plug that into the Axoloti and watch the program change info via the midi/in/cc any and disp/i on the cc output, it shows as coming from CC32.

If I send something from CC32 via the nanoKontrol, nothing is picked up by midi/in/pgm. As @johannes said though, program change is a specific command rather than a CC function. Guess the Korg isn't quite right for this.


#7

program changes are not sent/recv as CC. (generally not sure about Nord, but would seem odd for them to do this)

However...
CC 0 is Bank Select,
and (I'm getting there :wink: ) if its using 14 bit midi then CC32 could be Bank Select (LSB) ( where CC 0 is Bank Select MSB)

I guess what this could mean is that Nord are using a 14 bit midi and bank selections as opposed to program changes. (perhaps they use program changes for something else, something like axolotl's presets?)

you can probably test this, select patch number 128, I suspect you might see CC 0 = 1 , CC 32 = 1

all just a guess, as I don't have a nord modular

Note: this is all a nord oddity, not something axoloti should be doing differently.
if the nord is using 14 bit midi like this, you may want to look at the CC HR objects.


#8

It's actually quite a nice oddity to have - it means I can simultaneously change patches on the Nord and the Axoloti with one button push (the patch selection on the Nord).

This in each patch on the Axoloti with everything in a patch bank:

I'm basically looking for a controller that can send program change info to the Axoloti for when I'm not running it in conjunction with the Nord. While my Korg doesn't seem to, the Arturia Beatstep and Behringer X-Touch Mini both appear to do this, although I've never used either.


#9

You can also make Axoloti respond to a midi CC (midi/in/cc i) to load a program.
And instead of adding the patch load mechanism to each patch, you can also do this with a controller object https://sebiik.github.io/community.axoloti.com.backup/t/how-to-use-controller-object/910


#10

Ah yes! That looks like a much more straightforward approach. Thanks!


#11

Slight snag... I've created this as a controller object:

So, the idea is the button sending on CC36 advances a patch and CC37 goes back one.

I uploaded a blank patch as the SD startup patch. When I hit CC36 the first patch loads fine, but anything after that won't load, it stays on the first loaded patch. I can go back to the blank/silent patch using CC37.

Any idea why this won't advance beyond the first load? I attached a disp/i object and CC36 is counting up fine (the math/div 2 is there because the Korg sends 1 + 1 on a button push - down is 1, up is 1.)

Thanks for any help.


#12

does the patch bank contain patches index 0-1-2-3 and so on? Upload bank table?

Think all patches in patch bank have to be also uploaded to SD, right ?

edit: and about console; can you see
Using controller object: controllers/...... (file name)
Generate code complete


#13

The value in the counter (or any other object inside (or outside) the controller object) is discarded when loading a new patch, I have no easy solution for this.


#14

There is a slightly messy work around for this...

First patch in the patchbank just needs this in it somewhere:

Then the next in the patch bank needs this:

After that, the math/+c needs to go up 1 incrementally on each patch. Can make a subpatch of this so the only that needs changing is the value of math/+c:

I haven't worked out how to set the maths to get the decrements to work, but at least this works with increments. Obviously the easy answer is buy a controller that handles proper program changes :smiley:


#15

perhaps we should have a (very) small memory region that is outside the patch memory, and so not cleared.
... actually thinking about it, this can be in the 'firmware memory' i.e. we just have a few methods in firmware to get/set e.g. int32_t session_table[32] getsessionvar(int idx) setsessionvar(int idx, int32_t val).

then we have couple of object that can store/recall from there.
(later we could even add options to persist this table to sdcard )


#16

Can only speak for myself but I'd find that sort of feature very useful.

Main use for the Axoloti for me is in live performance, so the ability to move from one patch to the next on a button push is what I'm looking for. Not everyone works this way of course, so as long as having this in the firmware didn't lock out other ways of working I think it'd be a good option.

At the moment, it seems like a controller that sends program changes would give me what I need.


#17

indeed thats what the new program switching stuff does.

but 'session variables' could be useful for other things, e.g. you could standardised where to store you FX sends values, and then if you changed whilst in one patch, you could use them in another.
(you'd probably need to load them from the session table when you load the patch, but that should be possible)


#18

I'm also all about live performance /program change but what i have now works great! nothing against making it better :wink:


#19

I picked up a Behringer X-Touch Mini which has a program change option on it. The controller editing screen has these options:

I've set a two buttons up, one with Inc/+1 and the other with Dec/-1. Using patches loaded on the Axoloti in a patchbank as before, I can go through them incrementally using the Inc/+1 button but the Dec/-1 is ignored.

Any idea if the MSB and LSB need a value of some sort? @keyman - did you need to assign anything specific to get your controllers working in your demo video?


#20

Program change messages dont have MSB/LSB this will be for CCs

can I suggest the best idea , is to connect it up to a PC/Mac and then use a midi monitor application to check what values are being sent. that way we can rule out, its not controller config issues.
(sorry, I dont have a X-Touch, so dont know how it is needed to be configured)

once you know that you are getting program changes events that go up and down, then we can determine if its the patch that needs looking at or not. at the moment. (though I doubt it, since then you are merely getting the program number, and up or down becomes irrelevant to axoloti!)