Program Change CC Number?


#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!)


#21

Midi monitor reports this:

18:58:36.274 From X-TOUCH MINI Control 1 Bank Select 0
18:58:36.274 From X-TOUCH MINI Control 1 Bank Select (fine) 0
18:58:36.274 From X-TOUCH MINI Program 1 1
18:58:38.027 From X-TOUCH MINI Control 1 Bank Select 0
18:58:38.027 From X-TOUCH MINI Control 1 Bank Select (fine) 0
18:58:38.027 From X-TOUCH MINI Program 1 127
18:58:39.058 From X-TOUCH MINI Control 1 Bank Select 0
18:58:39.058 From X-TOUCH MINI Control 1 Bank Select (fine) 0
18:58:39.058 From X-TOUCH MINI Program 1 2
18:58:39.813 From X-TOUCH MINI Control 1 Bank Select 0
18:58:39.813 From X-TOUCH MINI Control 1 Bank Select (fine) 0
18:58:39.813 From X-TOUCH MINI Program 1 126
18:58:41.977 From X-TOUCH MINI Control 1 Bank Select 0
18:58:41.977 From X-TOUCH MINI Control 1 Bank Select (fine) 0
18:58:41.977 From X-TOUCH MINI Program 1 3
18:58:42.726 From X-TOUCH MINI Control 1 Bank Select 0
18:58:42.726 From X-TOUCH MINI Control 1 Bank Select (fine) 0
18:58:42.726 From X-TOUCH MINI Program 1 125

So Inc/+1 gives 1, 2, 3 while Dec/-1 gives 127, 126, 125

Makes sense why Dec/-1 is being ignored as there are no patches with those numbers in the patchbank. Not sure how to get around that :confounded:


#22

Comparing this to the program change via my Nord (which does let me move through the indexed patches on the Axoloti) I get this:

19:06:54.365 From MIDI Port Control 1 Bank Select (fine) 0
19:06:54.366 From MIDI Port Program 1 1
19:06:56.823 From MIDI Port Control 1 Bank Select (fine) 0
19:06:56.824 From MIDI Port Program 1 2
19:06:58.496 From MIDI Port Control 1 Bank Select (fine) 0
19:06:58.497 From MIDI Port Program 1 3
19:06:59.820 From MIDI Port Control 1 Bank Select (fine) 0
19:06:59.821 From MIDI Port Program 1 2
19:07:01.116 From MIDI Port Control 1 Bank Select (fine) 0
19:07:01.116 From MIDI Port Program 1 1
19:07:07.710 From MIDI Port Control 1 Bank Select (fine) 0
19:07:07.711 From MIDI Port Program 1 0

So an increment is 1, 2, 3 and decrement is 3, 2, 1 and so on... So that's the behaviour I need to set up on the X-Touch. Some how...


#23

Maybe not very helpful; also don't a X Touch mini; sometimes it's just the obvious.

MIDI monitor is a savior :wink: