Wohlstand / OPN2BankEditor

A small cross-platform editor of the OPN2 FM banks of different formats (Downloads in README below)
GNU General Public License v3.0
40 stars 8 forks source link

update GYB file format specification #86

Closed ValleyBell closed 4 years ago

ValleyBell commented 4 years ago

The current GYB file format specification was reverse-engineered.
Feel free to use the actual specification instead: http://vgmrips.net/programs/_gyb_format.txt

Wohlstand commented 4 years ago

Thanks for the specification, now the file should be in a correct format... Yeah, Me and my friend, @jpcima, have inspected Nineko's MIDI2VGM to get the ability to use the format here, in OPN2-BE. So, the support of the format should now be completed, not partially and guessed.

Wohlstand commented 4 years ago

BTW, why this file has version 2, however, at 0x105 instruments data begins and no LFO frequency value? Instruments.gyb.zip

ValleyBell commented 4 years ago

The value 0x0C at 0x105 is the LFO value. (for YM2612 register 0x022) The actual instruments begin at 0x106. (The first instrument's data is 71 33 0C 01 ...)

For GYB v1, the LFO value is missing and instruments begin at 0x105.

jpcima commented 4 years ago

Thanks @ValleyBell for this document, I hope to implement it sometime shortly.

Are there samples of GYBv3 in circulation currently, or some program to make them?

Under which license do you provide the source code 2612_checksum.c? I will gladly reuse and credit you, howver I don't see license indications in there.

ValleyBell commented 4 years ago

2612edit version 0.4 (which included with mid2smps 0.3.5) reads GYB v1 to v3 and always writes GYB v3. So you can just open an old GYB file with it, resave it and it will be v3.

Regarding 2612_checksum.c: There is no license file in the source code, sorry. I'll go with BSD-3-Clause for it.

jpcima commented 4 years ago

GYB formats have been implemented in read and write capacity.

v1 and v2 are able to save GM only. v3 is able to save banks with LSB:MSB.

note: since v1 and v2 lose non-GM instruments, it will be nice to implement the warning regarding saving using these formats. (like OPL3BankEditor)

Other remarks:

Wohlstand commented 4 years ago

libOPNMIDI falls into 0 when requested bank is not exist, or instrument of existing bank has a "blank" flag (all instruments in WOPN files are stored in 128 sets and any instruments are absence, usually marked as "blank").

ValleyBell commented 4 years ago

The "chord note" stuff is merely of descriptive nature. It isn't intended to instruct the software to "play note+0 and note+7", it just says "when you play note X, it sounds like x+0 and x+7" (e.g. for a 2x2op instrument that plays a 5th chord)

I never got so far to actually implement editing it, so it's an unused feature and it's not necessary anyway.

Wohlstand commented 4 years ago

2x2op instrument

Do you mean something like this? https://github.com/Wohlstand/OPN2BankEditor/issues/2

Or, please check my xg.wopn and "Lead 5ts", it's a regular OPN instrument that sounds like 5th chord via a small trick with operators and detunes I have picked up from one random game for it.

BTW: About OPL3 world, You may know Doom, Heretic, Raptor games and Voyetra SuperSAPI driver for Win3x, they are using dual-voice instruments in some OPL instruments and that is supported on a side of libADLMIDI and OPL3BE editor (a similar project to this but for OPL3 chip). Did you mean something like this? Anyway, I may guess, GYB-side will just play the same instrument as two notes while my feature and dual-voice on OPL3BE/libADLMIDI allows giving different voices.

ValleyBell commented 4 years ago

I meant something like that "Lead 5th", yeah.

It's a combination between Algo 4 (output on operator 2 and 4) and the multiplicators set to 3 and 4. You would set the chord notes to 0 and -5 semitones for it. (It's actually 5+8 and not 1+5, that would be multiplicators 2 and 3.)