Midi/out/cc hr ? Possible or not?

midi
out
14bit

#1

Having a few axo boxes with a number of pots, plugged into my computer. I've made midi controller patches for each of them to use with VCV Rack and other software.
I'm so used to the axoloti resolution of the knobs that using midi's 127 values is getting frustrating.
Most of my software can accept 14bit midi messages (MSB-LSB) (VCV Rack should be having it soon) so I was wondering if ever the axoloti could send out midi via the same format.

There are two midi/in/cc hr but nothing for the midi output. Is it possible, or am I missing something ?


Parameter control: midi vs analog?
#2

well 14bit midi out is just two cc's combined (on the receiver side) to one 14bit nr.
i guess you can simply upshift your pot-signal to 14bit. (<<4) if it was 10 bit.

then shift down by >>7 for the msb out and you will need a bitwise & 0b1111111 for the lsb. not sure if that exists. let me make an object...


#3

try this, it's not tested. connect inlet to analog out and msb and lsb to two midi out cc objects with the right cc number.

out_hr.axp (1002 Bytes)


#4

Here is the MIDI standards list of CC commands with the command numbers for the MSB and LSB pairs needed to combine to make 14-bit signals - https://www.midi.org/specifications/item/table-3-control-change-messages-data-bytes-2


#5

@mtyas

did you have a chance to try my object? curious to know if it works...


#6

Sorry for the late answer, but I'm slightly occupied these few days. I did have time to test it out, and I think it works well.
The thing is, I discovered how badly implemented 14bit midi is in softsynth and DAW's
Hopefully VCV rack will implement it soon, and I should have time to test it with some hardware soon too.
It's also a useful way to send HD info from one axoloti to the other. I'll test it out properly very soon.
Thanks for being so fast and responsive to my question. It was even too fast for me :wink:


#7

could well be my object that is misbehaving... or does it not work as intended in general?

hope this works out for you sooner or later.


#8

Hi, had a bit more time to test it out, and it does seem to have a bug, and I think I know why, let me explain :
The input value is sent to the msb as it is, but I think the midi/out/cc objects convert it to the closest integer (after probably multiplying it by two), so as soon as it goes past a medium position (for example 0.24<x<0.26) the value jumps up and then goes back down only once the LSB goes back to 0, so you have a kind of small saw following the output signal.

I'm not sure if I'm right, and if I've managed to explain what's happening ? I think the solution would be either having a specific midi/out/cc object that rounds off the (input*2) information at it's highest limit, or changing your object so that it's MSB output only send multiples of 0.5 (or something like that)

Does any of this make sens ?

Thanks again @lokki for tackling this question


#9

ok, here is another attempt. this one is tested and it works as expected i think. (i have no 14bit midi receiver, but i looked at the data it generates in pd and it is ok there, also a test with axoloti internal midi works as expected.) EDIT: attachment deleted, it had a stupid mistake, because i tried to understand what was wrong with the midi/in/hr object...(i started shuffling bits of code around in my object) fixed a couple of posts below...

i think though that the hr object of @thetechnobear has a bug in that it uses the last received LSB value, not the current one (on the assumption that MSB is sent first which seems to be the standard, no?)
a quick look at the object code seems to confirm this. @thetechnobear can you confirm?

so if you test with the attached patch, the LSB value will lag behind by one, so if you go from 38.05 to 38.07 and then to 38.04, the disp/dial will always be one behind (only works so obviously if the MSB stays the same...)

can you try this and tell me if that works?

i am not sure about your post and if i get what you are writing. it is to be expected that the LSB value ramps up between normal MSB midi steps, essentially all you are doing is extend each midi step to 127 new steps.

so "normal midi" would be (in MSB LSB lingo)

MSB 0
no values in between
MSB 1
no values in between
MSB 2
etc...

14-bit Midi would be:

MSB 0
LSB 0
LSB 1
LSB 2
....
LSB 127
MSB 1
LSB 0
LSB 1
etc...


Midi/in/cc hr issues [solved]
#10

ok, just tested my old object with the hr in from factory and it does also work as expected. (aside from the bug i mentioned before in the hr object)

try2withold_cc_hr.axp (3.1 KB)


#11

@lokki Sorry about my explanation, I was wrong about the mid crossing point, I only had my ipad and tried to understand what was happening and why there was (and still is) a tiny jump before every MSB change when doing a smooth swipe.

Using midi-ox it seems like the LSB goes to zero just before the MSB goes up. Here are the screen shots of the midi information.
The first one is the old version (using cc16 and cc48)

and this second one is the new version. (cc 1 and 33)

The thing is, I can seem to think of a solution, because if the MSB changes first, the jump would be in the other direction. (no ?)

In the newest version, the timestamp seems to say they are send both at the same time. So it should work out (actually it seems to respond better) , but I still have tiny flickers when using it the model-15 app on iPad (and that's using a very slow LFO on the axoloti, to make sure it's not noise from my pot)

Overall it still works well, and is a big step up from 7bit midi


#12

stupid me!

because i tried to understand what is wrong with the midi/in/hr object i shuffled the code around in my midi object, to find out that if i send lsb first things are fixed :slight_smile: this is of course not desired! i thought i changed it back, but did not...

sorry about that, try attached version. (it has the same name as the "old" new version)

try2cc_hr.axp (4.1 KB)


#13

and, here is a fixed midi/in/hr object, @thetechnobear is this the proper way to do it?

i think so, ntrig should still be sent on MSB change.

hr_in_fixed.axp (5.4 KB)


Midi/in/cc hr issues [solved]
#14

and, to complete the set (sorry for so many posts)

a cc out version where the LSB cc value is automatically set by the MSB cc (offset by 32 cc messages)

hr_suite.axp (7.9 KB)


#15

This is working fine now, thanks a lot, great job. I think this will be really useful for using the Axoloti as a high resolution midi controller.
I now have to try and understand NRPN 14bit formatting, as iVCS3 uses it :slight_smile:
Thanks for everything


#16

@mtyas

thanks for debugging :slight_smile: