Difference between revisions of "UserWiki:SynaMax"

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
(HERAD Modulator/Carrier Output Level Scaling Macro (0x1E and 0x1F))
Line 146: Line 146:
 
|-
 
|-
 
| 3F || 3F || ||  || 08 || 07 || || 1F || 3F
 
| 3F || 3F || ||  || 08 || 07 || || 1F || 3F
 +
|-
 +
| 40 || 3F || ||  || 08 || 07 || || 1F || 3F
 
|-
 
|-
 
| 41 || 3F || ||  || 08 || 08 || || 20 || 3F
 
| 41 || 3F || ||  || 08 || 08 || || 20 || 3F

Revision as of 22:19, 11 September 2016

HERAD Modulator/Carrier Output Level Scaling Macro (0x1E and 0x1F)

  • 04 = every 1 note decreases register value by 1 [doesn't kick in until velocity 3F?]
  • 01 = every 8 notes decreases register value by 1 (gets louder)
  • FF = every 8 notes increment register value by 1 (gets softer)
  • FE = every 4 notes increment register value by 1
  • FD = every 2 notes increment register value by 1
  • FC = every 1 note increment register value by 1
MIDI Velocity 04 03 02 01 FF FE FD FC
00 3F 10 00 00 00 00
01 3F 0F 00 00 00 01
02 3F 0F 00 00 01 02
03 3F 0F 00 00 01 03
04 3F 0F 00 01 02 04
05 3F 0F 00 02 05
06 3F 0F 00 03 06
07 3F 0F 00 03 07
08 3F 0F 01 04 08
09 3F 0E 01 04 09
0A 3F 0E 01 05 0A
0B 3F 0E 01 05 0B
0C 3F 0E 01 06 0C
0D 3F 0E 01 06 0D
0E 3F 0E 01 07 0E
0F 3F 0E 01 07 0F
10 3F 0E 02 08 10
11 3F 0D 02 08 11
12 3F 0D 02 09 12
13 3F 0D 02 09 13
14 3F 0D 02 0A 14
15 3F 0D 02 0A 15
16 3F 0D 02 0B 16
17 3F 0D 02 0B 17
18 3F 0D 03 0C 18
19 3F 0C 03 0C 19
1A 3F 0C 03 0D 1A
1B 3F 0C 03 0D 1B
1C 3F 0C 03 0E 1C
1D 3F 0C 03 0E 1D
1E 3F 0C 03 0F 1E
1F 3F 0C 03 0F 1F
20 3F 0C 04 10 20
21 3F 0B 04 10 21
22 3F 0B 04 11 22
23 3F 0B 04 11 23
24 3F 0B 04 12 24
25 3F 0B 04 12 25
26 3F 0B 04 13 26
27 3F 0B 04 13 27
28 3F 0B 05 14 28
29 3F 0A 05 14 29
2A 3F 0A 05 15 2A
2B 3F 0A 05 15 2B
2C 3F 0A 05 16 2C
2D 3F 0A 05 16 2D
2E 3F 0A 05 17 2E
2F 3F 0A 05 17 2F
30 3F 0A 06 18 30
31 3F 09 06 18 31
32 3F 09 06 19 32
33 3F 09 06 19 33
34 3F 09 06 1A 34
35 3F 09 06 1A 35
36 3F 09 06 1B 36
37 3F 09 06 1B 37
38 3F 09 07 1C 38
39 3F 08 07 1C 39
3A 3F 08 07 1D 3A
3B 3F 08 07 1D 3B
3C 3F 08 07 1E 3C
3D 3F 08 07 1E 3D
3E 3F 08 07 1F 3E
3F 3F 08 07 1F 3F
40 3F 08 07 1F 3F
41 3F 08 08 20 3F
42 3E 07 08 20 3F
43 3D 07 08 21 3F
44 3C 07 08 21 3F
45 3B 07 08 22 3F
46 3A 07 08 22 3F
47 39 07 08 23 3F
48 38 07 08 23 3F
49 37 06 09 24 3F
4A 36 06 09 24 3F
4B 35 06 09 25 3F
4C 34 06 09 25 3F
4D 33 06 09 26 3F
4E 32 06 09 26 3F
4F 31 06 09 27 3F
50 30 06 09 27 3F
51 2F 05 0A 28 3F
52 2E 05 0A 28 3F
53 2D 05 0A 29 3F
54 2C 05 0A 29 3F
55 2B 05 0A 2A 3F
56 2A 05 0A 2A 3F
57 29 05 0A 2B 3F
58 28 05 0A 2B 3F
59 27 04 0B 2C 3F
5A 26 04 0B 2C 3F
5B 25 04 0B 2D 3F
5C 24 04 0B 2D 3F
5D 23 04 0B 2E 3F
5E 22 04 0B 2E 3F
5F 21 04 0B 2F 3F
60 20 04 0B 2F 3F
61 1F 03 0C 30 3F
62 1E 03 0C 30 3F
63 1D 03 0C 31 3F
64 1C 03 0C 31 3F
65 1B 03 0C 32 3F
66 1A 03 0C 32 3F
67 19 03 0C 33 3F
68 18 03 0C 33 3F
69 17 02 0D 34 3F
6A 16 02 0D 34 3F
6B 15 02 0D 35 3F
6C 14 02 0D 35 3F
6D 13 02 0D 36 3F
6E 12 02 0D 36 3F
6F 11 02 0D 37 3F
70 10 02 0D 37 3F
71 0F 01 0E 38 3F
72 0E 01 0E 38 3F
73 0D 01 0E 39 3F
74 0C 01 0E 39 3F
75 0B 01 0E 3A 3F
76 0A 01 0E 3A 3F
77 09 01 0E 3B 3F
78 08 01 0E 3B 3F
79 07 01 0F 3C 3F
7A 06 01 0F 3C 3F
7B 05 01 0F 3D 3F
7C 04 01 0F 3D 3F
7D 03 01 0F 3E 3F
7E 02 01 0F 3E 3F
7F 01 01 0F 3F 3F

HERAD Instrument Chunk (WIP)

Each instrument is 28 bytes long. There seems to be some metadata with these instruments, possibly an instrument id/number. There could also be some flags used as well, but that's yet to be determined.

These offsets are still a work in progress and need more research. Thanks to Malvineous for his documentation on the AdLib Instrument Bank Format which is what this chunk of data is heavily based off of.

Offset Size Name Description OPL base register Value range
0x0 1
Unknown
0x1 1
Unknown
0x2 1 ksl
Modulator Key scaling level
0x40 (bits 6-7)
0x3 1 multiple
Modulator Frequency multiplier
0x20 (bits 0-3)
0x4 1 feedback
Feedback
0xC0 (bits 1-3)
0x5 1 attack
Modulator Attack
0x60 (upper four bits)
0x6 1 sustain
Modulator Sustain
0x80 (upper four bits)
0x7 1 eg
Modulator Envelope gain
0x20 (bit 5) nonzero value is on
0x8 1 decay
Modulator Delay
0x60 (lower four bits)
0x9 1 releaseRate
Modulator Release
0x80 (lower four bits)
0xA 1 totalLevel
Modulator Output Level
0x40 (bit 0-5) uses all bits; output level can still be modified by output level byte 0x1E
0xB 1 am
Modulator Amplitude modulation (Tremolo)
0x20 (bit 7)
0xC 1 vib
Modulator Frequency Vibrato
0x20 (bit 6)
0xD 1 ksr
Modulator Key scaling/envelope rate
0x20 (bit 4)
0xE 1 con
Connector
0xC0 (bit 0, inverted) 0: OPL bit set to 1
other: OPL bit set to 0
0xF 1 ksl
Carrier Key scaling level
0x40 (bits 6-7)
0x10 1 multiple
Carrier Frequency multiplier
0x20 (bits 0-3)
0x11 1 feedback
Feedback (Ignore)
0xC0 (bits 1-3) This byte seems to have garbage data in it and is not used
0x12 1 attack
Carrier Attack
0x60 (upper four bits)
0x13 1 sustain
Carrier Sustain
0x80 (upper four bits)
0x14 1 eg
Carrier Envelope gain
0x20 (bit 5) nonzero value is on
0x15 1 decay
Carrier Delay
0x60 (lower four bits)
0x16 1 releaseRate
Carrier Release
0x80 (lower four bits)
0x17 1 totalLevel
Carrier Output Level
0x40 (bit 0-5) uses all bits; output level can still be modified by output level byte 0x1E
0x18 1 am
Carrier Amplitude modulation (Tremolo)
0x20 (bit 7)
0x19 1 vib
Carrier Frequency Vibrato
0x20 (bit 6)
0x1A 1 ksr
Carrier Key scaling/envelope rate
0x20 (bit 4)
0x1B 1 con
Connector (Ignore)
0xC0 (bit 0, inverted) So far, this seems to be always set at zero.
0x1E 1
Modulator Output Level
0 = loudest, F = softest
0x1F 1
Carrier Output Level
0 = loudest, F = softest
0x20 1
Unknown
Seems to increases Feedback depending on note velocity
0x21 1
Unknown
Increases pitch bend range (seems like it's a flag: Fine tune = 0, Coarse tune = 1)
0x22 1
Pitch
Normally set at 0x0, 0xC = an octave higher
0x23 1
Unknown
Has to deal with pitch bend
0x24 1
Unknown
Has to deal with pitch bend
0x25 1
Unknown
0x26 1
Unknown
0x27 1
Unknown

HERAD Instrument Chunk (old)

Each instrument is 28 bytes long. Instruments usually just use the lower 3-0 bits for these OPL commands but full 8-bit values have been seen. There seems to be some metadata with these instruments, possibly an instrument id/number. There could also be some flags used as well, but that's yet to be determined.

These offsets are still a work in progress and need more research.

Offset Size Description
0x0 1
Unknown
0x1 1
Unknown
0x2 1
Modulator Scaling (0xC=4. 0xD=8, etc.)
0x3 1
Modulator Sound Characteristic (bits 3-0)
0x4 1
Feedback/Connection (0xB=7, OxC=9, 0xD=B)
0x5 1
Modulator Attack
0x6 1
Modulator Sustain
0x7 1
Modulator Sound Characteristic (bits 7-4)
0x8 1
Modulator Delay
0x9 1
Modulator Release
0xA 1
Modulator Scaling/Output Level (uses all bits; output level can still be modified by output level byte 0x1E)
0xC 1
Modulator Sound Characteristic (adds +4 to high bits) (Amplitude Modulation Depth / Vibrato Depth?)
0xE 1
Feedback/Connection (0x1=6, Ox0=7)
0xF 1
Carrier Scaling
0x10 1
Carrier Sound Characteristic (bits 3-0)
0x11 1
Unknown
0x12 1
Carrier Attack
0x13 1
Carrier Sustain
0x14 1
Carrier Sound Characteristic (bits 7-4)
0x15 1
Carrier Delay
0x16 1
Carrier Release
0x1C 1
Unknown
0x1D 1
Unknown
0x1E 1
Modulator Output Level (0 = loudest, F = softest)
0x1F 1
Carrier Output Level (0 = loudest, F = softest)
0x22 1
Pitch (Normally set at 0x0, 0xC = an octave higher)
0x23 1
Unknown
0x24 1
Unknown
0x25 1
Unknown
0x26 1
Unknown