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

Some GS instruments aren't playing (wrong banks) #40

Closed
sneakernets opened this issue Jan 25, 2018 · 17 comments
Closed

Some GS instruments aren't playing (wrong banks) #40

sneakernets opened this issue Jan 25, 2018 · 17 comments
Assignees
Labels
Milestone

Comments

@sneakernets
Copy link

Today I was playing that Christmas Song midi that I had made some recordings of, it has an instrument choice on Bank 16 Instrument 24, called "Nylon Gt.o". Unfortunately, libADLMIDI sees it at bank 4096?

image

image

Is this the midi file or what? It's in SMF0/GS format.

@sneakernets
Copy link
Author

Here are the MIDI commands to set up that instrument on Channel 4:
image

@Wohlstand
Copy link
Owner

Wohlstand commented Jan 25, 2018

Did you confused MSB or LSB bank codes? I mean in the bank. If something missmatching to standard, Ill fix that in bank editors.

@sneakernets
Copy link
Author

Hmm, I picked this configuration:
image

Is this correct? do I need to add something to MSB for this? 🤔

@sneakernets
Copy link
Author

O---ohhh wait I think I know now. I know with GM2, I need to set MSB to "121" and then the LSB to whatever I need. Is that what I'm missing here? I tried that just now and adlmidi still didn't see my guitar...

@Wohlstand
Copy link
Owner

Bank numbers are parsing by libADLMIDI as unsigned integers, and I think you need to use the calculator to get the binary view of msb/lsb and then convert into decimal. Anyway, I think to solve this inconvenience to give right data format into bank numbers are shown in bank editor's ui to let setup right bank number that will be catched correctly by libADLMIDI's internal. Maybe Ill also provide a test MIDI files for each instrument? I already have a set of test MIDI files for GM set.

@Wohlstand
Copy link
Owner

Wohlstand commented Jan 29, 2018

Try to use bank ID cointing from 0... Instead of from 1... . I had experimenting with TR-808 on libOPNMIDI and I had found that bank ID is different with -1 from standard.

@freq-mod
Copy link

Try to use bank ID cointing from 0... Instead of from 1... . I had experimenting with TR-808 on linOPNMIDI and I had found that bank ID is different with -1 from standard.

-1? What's on scr below works fine for me
tr808

@Wohlstand
Copy link
Owner

Wohlstand commented Jan 29, 2018

Yeah, I meant when bank ID is 26, the 25 must be set as bank ID in the editor. As data are shown as-is as internally in MIDI files. Editors usually adding +1 to bank ID which causes a difference in raw and human views.

@sneakernets
Copy link
Author

Ah then we're good!
Anyway here's a release: https://github.com/sneakernets/DMXOPL/releases/tag/v2.11e

@freq-mod
Copy link

freq-mod commented Apr 21, 2018

(somewhat related to sneakernets/DMXOPL#38)
What about cases like that:
gs

Do I need some specific MSB/LSB values to deal with such crap?

@Wohlstand
Copy link
Owner

I think, I need to look into MIDI file itself, is it valid GS or for something other? For case of GS, MSB is a main bank number when LSB is ignored by GS. Usually if it is 0, then everything must be fine. IF it's GS, but dirty file where are both MSB and LSB used and there are not maching GS bank numbers, that makes misses in full-ranges. As I told before, I must to implement SysEx support to catch GS-Reset event to change the bank number formula. I.e. all LSB values in GS must be zeroed to let foruma be correct.

@freq-mod
Copy link

OK, grab .mid then
bls_11t.zip

@Wohlstand
Copy link
Owner

Wohlstand commented Apr 21, 2018

It seems not a GS:
default

And I see two bank events:
default
default

And yeah, 8*256 + 2 == 2050
And second case:
default
and:
default

So, 16*256 + 2 == 4098

The only question what F0 41 10 42 12 00 00 7F 00 01 F7 SysEx event wants to do, in Sonar it was called as "System mode set".

Maybe it's a GS, but looks very weird... Usually GS-targeted MIDI files are having "GS-Reset" SysEx command.

@freq-mod
Copy link

freq-mod commented Apr 21, 2018

It's most likely a SC-88Pro/SC-8850 midi file.

@Wohlstand Wohlstand self-assigned this Apr 22, 2018
@Wohlstand Wohlstand added this to the SysEx milestone Jun 21, 2018
@Wohlstand
Copy link
Owner

As now SysEx events are implemented, I'm now able to catch "GS Reset" related calls to change behavior of bank changing, so, when GS mode is turned on, LSB part is ignoring, and only MSB is in use. Please test this by yourself.

@freq-mod
Copy link

For me it looks and sounds OK so far.

@Wohlstand
Copy link
Owner

I'll close this as issue has been solved.

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

No branches or pull requests

3 participants