Yeah, that sounds about right. I think Richie is working on both so the Host module and the VST version. Maybe there was something that was copied from the Host to the VST.
Hmm… so this was Bitwig transferring MIDI to a Standalone Rack, via LoopMidi, and Rack getting the wrong MIDI notes. Interesting. I wonder if that ruins my hypothesis and there’s more things going on here, because the same thing is working correctly in some circumstances and not in others.
Does LoopMidi have the ability to spy on MIDI traffic? If so it would be interesting to attach it to Bitwig (in your first/standalone case) to verify that Bitwig indeed sends C4.
Also Jens Peter, it would be very interesting if you have a MIDI keyboard, that you could play into the MIDI-CV module in your Rack standalone and see whether it receives the correct MIDI notes.
Could you try and see if it’s also the same error in MIDI-CV for you Omri?
I will check it later and report back.
Expert opinions differ on what to call the Octaves - that’s all If you google search for midi note’s you will find different answers.
from MIDI.org, midi specification:
“… the International Standards Organization (ISO) system for register designations. In that system, middle C (the first ledger line above the bass staff or the first ledger line below the treble staff) is C4 . An octave higher than middle C is C5, and an octave lower than middle C is C3.”
But in Ableton and Bitwig - Middle C (aka ISO C4) is MIDI note 72.
Here’s an answer from KMI:
" There are actually multiple MIDI note number to note name conventions — different companies follow different standards. KMI follows the C3=60 paradigm (as does Ableton, Logic, MainStage, and more), while other companies follow the C4=60 paradigm (Native Instruments and others). It’s even possible to run into a C5=60 standard, but that is much more rare.
If all MIDI notes appear to be an octave off, it simply means that there are two different note naming standards involved. it’s only the note number that matters — the name is irrelevant."
Also, more in-depth: Scientific pitch notation - Wikipedia
Yeah, the whole confusion about “middle C” being C3 or C4 is annoying. BUT… “middle C” should IMHO not be a factor here, because if Bitwig (or any other program) says it’s transmitting the MIDI note C4 it should damn well be C4 with no room for confusion. But I’m reaching my limits - @Squinky I’m sure you would have more expertice here. A certain MIDI note is a certain MIDI note, right?
Ok, now I’m reading the last paragraphs you wrote. That indeed seems like a complete trainwreck, and that actually MIDI note F2 (e.g.) is only F2 if you think it is, and another manufacturer can say “no, it’s actually F3 instead”. If that’s the case… well, what a weird industry, and as I see it, it means that all the MIDI modules in Rack needs a switch/option to switch between middle-c being C3, C4 or C5, otherwise it can never be properly interoperable with the outside world, or rather: Causes massive confusion and support cases.
@Richie any thoughts on this? Would you agree that actually the MIDI modules need a switch like this otherwise confusion+support continues? Because it seems that the most popular DAW’s with Rack users, Ableton and Bitwig, have middle-C=C3 whereas Rack has middle-C=C4, so things will never line up for them.
Good find Jens Peter!
My god what a trainwreck of an industry
The main thing I noticed wasn’t even the notes yet, but I’m glad it came up as I noticed @Omri_Cohen mention the note was off in that same live stream. While the conversation of that fix is happening, I also just want to mention that the grid of notes in the module itself doesn’t match the grid of outputs as shown in the screengrab. On top of the note confusion, is anyone else seeing the grid mismatch as well? So glad to be back to this community, it’s been a minute.
With the test I made above with my Keystep, set to middle-C=C4, the grid worked as it should, they matched.
maybe it’s just an issue with bitwig, I was expecting row 1 to trigger row 1 of outputs, row 2 for row 2 and so on
I think the issue is this, as I describe above:
In short: Bitwig, Rack, and everyone else disagreeing on what a specific note is. I know…
yes, my distant memory of the spec is that 64 is middle C, or something like that? It is for sure specified.
Yes, distant memories, but I do remember facing this issue many times during my ~35 years of doing MIDI hardware and software development. Different vendors define middle C in different ways. I cannot remember the specifics but eventually just accepted that as a fact of life.
By the way, I count up about a dozen MIDI keyboards in my studio around me (literally!). Almost every one has two marks on the keyboard to indicate the middle C may be this one, or may be the other, depending on what the hardware or software I am controlling has chosen. And of course modern keyboards usually have an octave transpose button(s), so I am usually just confused
I’m just trying this in Reaper and it works as it should actually. So C2 in Reape is also C2 in the Midi-Gate module…
Yeah, which means that Reaper is in the “Middle-C = C4” camp and therefor matches Rack. I think this will never be solved without being able to switch this in the Rack MIDI* modules, as I describe above.
Yep - a simple right click menu setting would do the job.
You can have right-click menus for everything I think. Some knowledge is needed to work with diffent software and hardware following different standards - people learn, and find their own method of transposing the CV - be it using the VCV octave - a formula - or a mixer adding +1 or -1 volts. IMO That’s one of the many beauties of playing with modular systems - getting a feeling of accomplishment by solving the little “glue” challenges.
There’s no way to transpose the signal though between the note the DAW puts out and the note that Midi > Gate displays because that is happening outside Rack. Therefore a right click menu setting would be the only option here I think.
Actually there is a way - you’d need to transpose the signal before it left the DAW and most DAWs have a transpose device.
But that’s no more intuitive than knowing/remembering to set your notes an octave down to start with.
Let me try and summarize and reframe the discussion, correct me if I’m wrong.
MIDI is a standard for sending digital data in packets between equipment, whether hardware or software. When you press a note on a physical/virtual/software keyboard, including a piano roll in a DAW, what happens is that a “note number” is sent, such as the value 60 (middle-C). So far so good.
Now the trouble begins…
The question arises: So what note (an audible frequency) is note number 60 (or any other) actually? Ideally the MIDI standard should be crystal clear about this but something happened. Either the standard is lacking or ambiguous, or/and some vendors took matters into their own hands and said “well, we decree that note number 60 is a C4” and others said “no, it’s a C3” and others said C5. So now we have a right mess because it means that MIDI equipment and software is not interoperable and users are caught in the middle.
So e.g. Ableton and Bitwig will transmit note value 60 when you hit a C3 on the piano roll, Reaper and VCV Rack and others will transmit note value 60 when you hit a C4, and for some others it’s a C5. So out of the box, when you hit C4 in Bitwig, VCV Rack will say “thank you very much for that C5 note”, and everyone is confused and things don’t work as they should.
As is the case with standards confusion there’s a couple of responses that vendors and developers can have in the face of that:
- Screw the users, we’re right and they’ll just have to figure it out and find workarounds themselves. Or…
- Poor users, we need to do something to help them make their different MIDI equipment work together in the face of this situation.
I think answer #2 is the right one unless it’s prohibitively expensive. To help users one of the things various manufacturers have done, is enable them to configure what middle-C means. Whether it’s C3, C4 or C5, and I think that’s what the VCV MIDI modules should do as well. Give users an option to define this so that the various MIDI software and hardware can work correctly together.