sezero / mikmod

Mikmod Sound System (mirror of git repo at https://sf.net/projects/mikmod/)
http://mikmod.sourceforge.net/
72 stars 22 forks source link

OctaMED transpose and octave wrapping are not supported. #24

Closed AliceLR closed 3 years ago

AliceLR commented 3 years ago

Several behaviors of OctaMED affecting note translation do not currently work:

The fix for all of these is the same: the OctaMED loader should allocate instruments and implement these features with the tuning table. This is a fairly easy fix (and this will be required to implement the IFFOCT instruments down the road anyway).

Tentative patch here. It is not well-tested yet, so expect some table spam here as I do that over the next few days. https://github.com/sezero/mikmod/compare/master...AliceLR:med-transpose-octave-wrap

AliceLR commented 3 years ago

Modules that don't use any of these features

Module Uses Still works?
- unknown/anvil.mmd0 8 ch. mode Yes
- unknown/wizardry.mmd0 Yes
Jason Honingford/trend.mmd0 8 ch. mode "Yes" (order 11- tone portamento is not strong enough?)
Orpheus/electrosound 64.mmd0 Yes
Teijo Kinnunen/kinnunen 2.mmd0 8 ch. mode Yes
- unknown/alien breed ii.mmd1 Yes
- unknown/fair.mmd1 Yes
Eivind Segrov/nighttrain.mmd1 Yes
Mixer/superaxel.mmd1 8 ch. mode Yes
Toady/secret of mana.mmd1 8 ch. mode Yes

High octaves

Module Uses Description Fixed?
- unknown/death.mmd0 Oct4-7 Expects C#3 and C#4 to be the same note. (ord. 0) Yes
soul crystal - cyberfunk.mmd0 Oct4-7 Expects C#3/C#5, D#3/D#5 to be the same. (ord. 0) Yes
you got to let the music.mmd1 Oct4-7; 8 ch. Expects C-4 → C-3 in 8 ch. mode. (ord. 0) Almost[1]
Barney/did.mmd1 Oct4-7; 6 ch. Expects *-4 → *-3 in 8 ch. mode. (ord. 11) Yes
Blockhead/childplay.mmd1 Oct8-A Expects octave 9 to wrap to octave 0. (ord. 1) Yes
Lynx 2/passo-doble.mmd1 Oct8-A Expects octave 9 to wrap to octave 0. (ord. 0) Yes
Orpheus/hypnotised.mmd1 Oct4-7; 8 ch. Expects D-6 → D-3 in 8 ch. mode. (ord. 5) Yes
Robert Moseley/maria.mmd1 Oct8-A; 8 ch. Expects *-9/A → *-0/1 in 8 ch. mode. (ord 1) Yes

[1]Timing or tuning bug(?) prevents various samples from synchronizing correctly but it's much closer than before. The issue here might be the timing table for 8-channel mode I copied from libxmp since both xmp and OpenMPT have this bug (that's what I get for copying someone else's homework I guess...). Notably 'maria.mmd1' also seems slightly faster than it should be in MikMod/xmp. See also: https://bugs.openmpt.org/view.php?id=1386.


Song transpose

Module Description Fixed?
Keith Tinman/hook - ingame 2.mmd0 Transpose -2. Yes
- unknown/1000 sterne.mmd1 Transpose +6. Yes
Alexander Zutt/phasing.mmd1 Transpose +1. Yes

Instrument transpose

Module Uses Description Fixed?
Daniel H. Dean/dissociate.mmd0 Oct4-7; 8 ch. Transposes oct4 notes down into oct3. (ord. 20-23) Yes
Reverb/alain.mmd0 Many instruments w/ different transpose. (ord. 0) Yes
- unknown/digi-t-ice.mmd1 Inst. 5 and 6 transposed +3. (ord. 2) Yes
- unknown/gotterfunken.mmd1 Oct4-7 Inst. 1 transposed -2 (ord. 0) Yes

Both transpose types

Module Description Fixed?
Dean Evans/getto.mmd0 STr: +1. ITr: 3 (+3), 7 (+3), 8 (+15). (ord. 0, 2) Yes
- unknown/stop chit !.mmd1 STr: +2 (ord. 0). ITr: A(-3, ord. 2), J(-8, ord. 14) Almost[1]
Dean Evans/jurassic park - ingame 1.mmd1 STr: -1. ITr: 2 (-7, ord. 0), 6 (+10, ord. 2) Yes

[1]See above. This track is also 8-channel mode.


Transpose + wrapping

Module Uses Description Fixed?
- unknown/transition.mmd0 Oct4-7; song tr. STr: +1. Wrap: E/F-4 @ ord. 4. Yes
HJE/very short!.mmd0 Oct4-7; song tr; inst. tr. STr: -1. ITr: 5 (-18). Wrap: in bass. Yes
- unknown/three phantoms.mmd1 Oct4-7; inst. tr. ITr: 6 (+1), 8 (+3), 9 (+3), H (+3), J (+2). Relies on transpose+octave wrapping for inst. J to sound correct. (ord. 0, 3) Yes
Alan Mackey/megaball - title.mmd1 Oct8-A; inst. tr. ITr: N (-6, ord. 2/3), O (+5, ord. 3). Wrap: ord. 15. Yes[2]
Digital Zone/u got 2.mmd1 Oct8-A; inst. tr. Wrap: ord. 8. Yes
JaDe/fineline.mmd1 Oct4-7; Oct8-A; inst. tr. ITr: 2(-5), 3(+9) (ord. 0), Wrap (ord. 1) Yes[2]
JaDe/the chase.mmd1 Oct4-7; Oct8-A; inst. tr. Wrap: (ord. 3 & 4) Yes

[2]: tone portamento seems weird, similar to 'trend.mmd0'.


I can look into the two other issues here some other time (particularly the 8-channel mode timing table since it affects other players too).