Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update getsysex.sh #1

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Update getsysex.sh #1

wants to merge 1 commit into from

Conversation

soholt
Copy link
Owner

@soholt soholt commented Jan 11, 2024

Counting Bank voices from 1, to make use of bank 000000_rom3a.syx, as banks are indexed from 1 probonopd#599

Counting Bank voices from 1, to make use of bank 000000_rom3a.syx, as banks are indexed from 1 probonopd#599
@probonopd
Copy link

probonopd commented Jan 13, 2024

Thanks @soholt. I have to admit that this is confusing me (and has been for a while). I thought that when MIDI commands are sent to select 0, then the file 0 should be used (while 1 is shown on the LCD display), and so on.

Is there any MIDI documentation that defines this? Or is there any documentation of existing MIDI instruments that use files for voices and/or performances internally where we could cross-check the behavior?

cc @diyelectromusic

@diyelectromusic
Copy link

Is there any MIDI documentation that defines this?

Yes! The MIDI specification! :)

The trick is to stop thinking about what is in the contents of the MIDI messages themselves - that is irrelevant. We have to think of "user layer" and "protocol layer".

The MIDI spec is quite clear that when the user interacts with these things the numbers 1..128 should be used. The fact that these are 0..127 "on the wire" is a protocol translation issue.

I am writing letters here in this post, the fact that they get translated into ASCII or Unicode is irrelevant. But of course, if I was writing code to parse them I'd have to know about the encodings.

Treat 0..127 as an encoding - it isn't something anyone should care about unless they are writing MIDI parsers.

Taking that view, the filename is a "user interface" for MiniDexed - it is where the user chooses which number to assign to a performance or voice. Any MIDI editor or program selector or controller /should/ present the "user interface" view to MIDI (1..128) not the "protocol encoding" view unless it is acting as a MIDI protocol sniffer.

Ultimately it is probably up to the synth designer how "user visible" numbers are represented - I have some keyboards that use 00..07,10..17 and some that start with 11..17,20..27 and so on (i.e. 0-indexed or 1-indexed octal), but General MIDI when it came in set a standard in how they are meant to be used.

MIDI Spec:
image
image

Also notice how the Advanced MIDI manual for the DX7II talks about Program Change messages (i.e. using 1..64 and 65..128):
image

And compare it with the DX7II MIDI Technical Data and Charts manual:
image

And how the DX7II manual tells you to select a manual program change message from the panel controls:
image

Vs the MIDI implementation chart in the same manual:
image

It really is quite universal!

That doesn't mean there aren't possibilities for confusion mind. The most annoying one is the General MIDI numbering for drums on the drum channel. No one seems to have decided that when the GM spec says 35 = Base Drum if that is a 1-indexed list or a 0-indexed list and apparently there are drum machines that do different things!

(this confusion is because whilst they are "voices", they are using note numbers. In MIDI voices are 1-indexed, but notes are 0-indexed... the spec talks about "assigning drums to keys" so the implication being these should be the actual 0-indexed, MIDI note number equivalents! If only the spec had allocated a drum to either #0 or probonopd#128 then we'd know for sure!)

Kevin

@soholt
Copy link
Owner Author

soholt commented Jan 16, 2024

Thanks @soholt. I have to admit that this is confusing me (and has been for a while). I thought that when MIDI commands are sent to select 0, then the file 0 should be used (while 1 is shown on the LCD display), and so on.

Is there any MIDI documentation that defines this? Or is there any documentation of existing MIDI instruments that use files for voices and/or performances internally where we could cross-check the behavior?

cc @diyelectromusic

Thanks, I would have thought the same (Seems like Bank number gets incremented by 1 internally)

@probonopd
Copy link

probonopd commented Jan 16, 2024

Opened and merged probonopd#602 since I believe that was the intent of this PR - to get it merged into the main MiniDexed repo, not into your fork. Thanks @soholt and @diyelectromusic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants