Relations Between BPM Settings -------------------------------- Final BPM = Tempo * 6 / Speed Seconds per frame = 1 / Engine speed Frames per row = 2.5 * Engine speed * Speed / Tempo Seconds per row = 2.5 * Speed / Tempo Default engine speed is 60 in NTSC mode and 50 in PAL mode. Volume Chart -------------- Volume Column \|0 1 2 3 4 5 6 7 8 9 A B C D E F -+------------------------------- 0|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1|0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2|0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3|0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 3 E 4|0 1 1 1 1 1 1 1 2 2 2 2 3 3 3 4 n 5|0 1 1 1 1 1 2 2 2 3 3 3 4 4 4 5 v 6|0 1 1 1 1 2 2 2 3 3 4 4 4 5 5 6 e 7|0 1 1 1 1 2 2 3 3 4 4 5 5 6 6 7 l 8|0 1 1 1 2 2 3 3 4 4 5 5 6 6 7 8 o 9|0 1 1 1 2 3 3 4 4 5 6 6 7 7 8 9 p A|0 1 1 2 2 3 4 4 5 6 6 7 8 8 9 A e B|0 1 1 2 2 3 4 5 5 6 7 8 8 9 A B C|0 1 1 2 3 4 4 5 6 7 8 8 9 A B C D|0 1 1 2 3 4 5 6 6 7 8 9 A B C D E|0 1 1 2 3 4 5 6 7 8 9 A B C D E F|0 1 2 3 4 5 6 7 8 9 A B C D E F Note: The Sawtooth wave has some glitches when the volume is acquired from the green bar. NSF2MIDI volume scale ----------------------- F: 127 E: 122 D: 118 C: 113 B: 108 A: 103 9: 98 8: 92 7: 86 6: 80 5: 73 4: 65 3: 56 2: 46 1: 32 0: 0 NSF2MIDI volume scale (FDS) ----------------------------- 32: 125 31: 123 30: 121 29: 119 28: 116 27: 114 26: 112 25: 110 24: 108 23: 106 22: 103 21: 101 20: 98 19: 96 18: 93 17: 91 16: 88 15: 85 14: 82 13: 79 12: 76 11: 73 10: 69 9: 66 8: 62 7: 58 6: 54 5: 49 4: 44 3: 38 2: 31 1: 22 0: 0 A0x Volume Fades Envelopes ---------------------------- Note: Assuming both envelope volume and column volume is 15 with 7xy effect not used. A00: 15 A01: 15 15 15 15 15 15 15 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 A02: 15 15 14 14 14 14 13 13 13 13 12 12 12 12 11 11 11 11 10 10 10 10 9 9 9 9 8 8 8 8 7 7 7 7 6 6 6 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 0 A03: 15 15 14 14 14 13 13 12 12 11 11 11 10 10 9 9 9 9 8 8 7 7 6 6 6 6 5 5 4 4 3 3 3 3 2 2 1 1 0 A04: 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 A05: 15 14 14 13 12 12 11 10 10 9 9 8 7 7 6 5 5 4 4 3 2 2 1 0 A06: 15 14 13 12 12 11 10 9 9 8 7 6 6 5 4 3 3 2 1 0 A07: 15 14 13 12 11 10 9 8 8 7 6 5 4 3 2 1 1 0 A08: 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 A09: 14 13 12 11 10 9 8 6 5 4 3 2 1 0 A0A: 14 13 12 10 9 8 7 5 4 3 2 0 A0B: 14 13 11 10 9 7 6 4 3 2 0 A0C: 14 12 11 9 8 6 5 3 2 0 A0D: 14 12 11 9 7 6 4 2 1 0 A0E: 14 12 10 8 7 5 3 1 0 A0F: 14 12 10 8 6 4 2 0 For Ax0 volume fades, reverse the whole MML string, 0 to 15, 1 to 14, 2 to 13, etc. 4xy Vibrato Range ------------------- 4x0: 1 (2^0) 4x1: 1 (2^1-1) 4x2: 2 (2^1) 4x3: 3 (2^2-1) 4x4: 4 (2^2) 4x5: 7 (2^3-1) 4x6: 8 (2^3) 4x7: F (2^4-1) 4x8: 10 (2^4) 4x9: 1F (2^5-1) 4xA: 20 (2^5) 4xB: 3F (2^6-1) 4xC: 40 (2^6) 4xD: 7F (2^7-1) 4xE: 80 (2^7) 4xF: FF (2^8-1) The vibrato effect always makes the pitch go up first, and then go down after reaching the maximum range. Here is an ugly ASCII diagram: ^ | P +8 + ...... i | . . etc. t +4 + . . . c | . . . h +0 +...... ...... | +--+--+--+--+--+--+--+--+--> 1 2 3 4 5 6 7 8 Time elapsed In 0.3.5 beta, another vibrato style is also offered: ^ | P +4 + .... .... i | . . . . t +0 +. . . . c | . . . h -4 + .... ... etc. | +--+--+--+--+--+--+--+--+--> 1 2 3 4 5 6 7 8 Time elapsed 0.3.5 Beta: 4x0: 1 4x1: 3 4x2: 5 4x3: 7 4x4: 9 4x5: D 4x6: 13 4x7: 17 4x8: 1B 4x9: 21 4xA: 2B 4xB: 3B 4xC: 57 4xD: 7F 4xE: BF 4xF: FF Key Frequency Registers ------------------------- Note that with the release of FT 0.3.5 beta, most of them have been slightly modified. A-0: 7F2 A#0: 77F B-0: 714 C-1: 6AE C#1: 64E D-1: 5F3 D#1: 59E E-1: 54D F-1: 501 F#1: 4B9 G-1: 475 G#1: 435 A-1: 3F9 A#1: 3BF B-1: 38A C-2: 357 C#2: 327 D-2: 2F9 D#2: 2CF E-2: 2A6 F-2: 280 F#2: 25C G-2: 23A G#2: 21A A-2: 1FC A#2: 1DF B-2: 1C5 C-3: 1AB C#3: 193 D-3: 17C D#3: 167 E-3: 153 F-3: 140 F#3: 12E G-3: 11D G#3: 10D A-3: FE A#3: EF B-3: E2 C-4: D5 C#4: C9 D-4: BE D#4: B3 E-4: A9 F-4: A0 F#4: 97 G-4: 8E G#4: 86 A-4: 7F A#4: 77 B-4: 71 C-5: 6A C#5: 64 D-5: 5F D#5: 59 E-5: 54 F-5: 50 F#5: 4B G-5: 47 G#5: 43 A-5: 3F A#5: 3B B-5: 38 C-6: 35 C#6: 32 D-6: 2F D#6: 2C E-6: 2A F-6: 28 F#6: 25 G-6: 23 G#6: 21 A-6: 1F A#6: 1D B-6: 1C C-7: 1A C#7: 19 D-7: 17 D#7: 16 E-7: 15 F-7: 14 F#7: 12 G-7: 11 G#7: 10 A-7: F A#7: E Key Frequency * Key Frequency Register is always 111860. Key Frequency Register is used for pitch changes. For example, a C-3 with fine pitch effect P(80+1AB-193)=P98 will give you a C#3, any key with pitch slide down effect 205 will INCREASE the frequency register by 5 per frame. 1 in the pitch bend sequence-graph INCREASES the frequency register by 1, -1 in the pitch bend sequence-graph DECREASES the frequency register by 1. Differences of Adjacent Keys' Frequency Registers --------------------------------------------------- A-0 73 A#0 6B B-0 66 C-1 60 C#1 5C D-1 55 D#1 51 E-1 4C F-1 48 F#1 44 G-1 40 G#1 3C A-1 3A A#1 35 B-1 33 C-2 30 C#2 2E D-2 2A D#2 29 E-2 26 F-2 24 F#2 22 G-2 20 G#2 1E A-2 1D A#2 1A B-2 1A C-3 18 C#3 17 D-3 15 D#3 14 E-3 13 F-3 12 F#3 11 G-3 10 G#3 F A-3 F A#3 D B-3 C C-4 C C#4 B D-4 B D#4 A E-4 9 F-4 9 F#4 9 G-4 8 G#4 7 A-4 8 A#4 6 B-4 7 C-5 6 C#5 5 D-5 6 D#5 5 E-5 4 F-5 5 F#5 4 G-5 4 G#5 4 A-5 4 A#5 3 B-5 3 C-6 3 C#6 3 D-6 3 D#6 2 E-6 2 F-6 3 F#6 2 G-6 2 G#6 2 A-6 2 A#6 1 B-6 2 C-7 1 C#7 2 D-7 1 D#7 1 E-7 1 F-7 2 F#7 1 G-7 1 G#7 1 A-7 1 A#7 Key Frequency Registers (Sawtooth) ------------------------------------ Note that with the release of FT 0.3.5 beta, most of them have been slightly modified. C-0: F45 C#0: E6A D-0: D9A D#0: CD7 E-0: C1E F-0: B70 F#0: ACC G-0: A31 G#0: 99E A-0: 914 A#0: 892 B-0: 816 C-1: 7A2 C#1: 735 D-1: 6CD D#1: 66B E-1: 60F F-1: 5B8 F#1: 566 G-1: 518 G#1: 4CF A-1: 48A A#1: 449 B-1: 40B C-2: 3D1 C#2: 39A D-2: 366 D#2: 335 E-2: 307 F-2: 2DC F#2: 2B3 G-2: 28C G#2: 267 A-2: 245 A#2: 224 B-2: 205 C-3: 1E8 C#3: 1CD D-3: 1B3 D#3: 19A E-3: 183 F-3: 16E F#3: 159 G-3: 146 G#3: 133 A-3: 122 A#3: 112 B-3: 102 C-4: F4 C#4: E6 D-4: D9 D#4: CD E-4: C1 F-4: B7 F#4: AC G-4: A3 G#4: 99 A-4: 91 A#4: 89 B-4: 81 C-5: 7A C#5: 73 D-5: 6C D#5: 66 E-5: 60 F-5: 5B F#5: 56 G-5: 51 G#5: 4C A-5: 48 A#5: 44 B-5: 40 C-6: 3D C#6: 39 D-6: 36 D#6: 33 E-6: 30 F-6: 2D F#6: 2B G-6: 28 G#6: 26 A-6: 24 A#6: 22 B-6: 20 C-7: 1E C#7: 1C D-7: 1B D#7: 19 E-7: 18 F-7: 16 F#7: 15 G-7: 14 G#7: 13 A-7: 12 A#7: 11 B-7: 10 Differences of Adjacent Keys' Frequency Registers (Sawtooth) -------------------------------------------------------------- C-0 DB C#0 D0 D-0 C3 D#0 B9 E-0 AE F-0 A4 F#0 9B G-0 92 G#0 8A A-0 82 A#0 7C B-0 74 C-1 6D C#1 67 D-1 62 D#1 5C E-1 57 F-1 52 F#1 4E G-1 49 G#1 45 A-1 41 A#1 3E B-1 3A C-2 37 C#2 34 D-2 31 D#2 2E E-2 2B F-2 29 F#2 27 G-2 25 G#2 22 A-2 21 A#2 1F B-2 1D C-3 1B C#3 1A D-3 19 D#3 17 E-3 15 F-3 15 F#3 13 G-3 13 G#3 11 A-3 10 A#3 10 B-3 E C-4 E C#4 D D-4 C D#4 C E-4 A F-4 A F#4 9 G-4 A G#4 8 A-4 8 A#4 8 B-4 7 C-5 7 C#5 7 D-5 6 D#5 6 E-5 5 F-5 5 F#5 5 G-5 5 G#5 4 A-5 4 A#5 4 B-5 3 C-6 5 C#6 3 D-6 3 D#6 3 E-6 3 F-6 3 F#6 2 G-6 2 G#6 2 A-6 2 A#6 2 B-6 2 C-7 2 C#7 1 D-7 2 D#7 1 E-7 2 F-7 1 F#7 1 G-7 1 G#7 1 A-7 1 A#7 1 B-7 Frequency Register (VRC7) --------------------------- C: AC C#: B5 D: C0 D#: CC E: D8 F: E5 F#: F2 G: 101 G#: 110 A: 120 A#: 131 B: 143 The VRC7 chip uses two registers to define a pitch: key, octave. 3xx cancels all retriggers. Qxx and Rxx don't work. Note: VRC7 pitch slides are not working as expected and shall be modified in the future. While using 1xx and 2xx, xx = 1 means 1/4 frequency register unit, xx = 4 means 1 frequency register unit. 1xx slides down and 2xx slides up. While sliding across octaves, frequency registers are multiplied by 2^(octave change). e.g.: Freuqncy register distance of sliding from B-3 to D-4 is (C0 * 2^(4-3) - 143) * 4 = F4. Key Frequency Registers (FDS) ------------------------------- C-0: 4C C#0: 51 D-0: 56 D#0: 5B E-0: 60 F-0: 66 F#0: 6C G-0: 72 G#0: 79 A-0: 80 A#0: 88 B-0: 90 C-1: 99 C#1: A2 D-1: AC D#1: B6 E-1: C1 F-1: CC F#1: D8 G-1: E5 G#1: F3 A-1: 101 A#1: 111 B-1: 121 C-2: 132 C#2: 144 D-2: 158 D#2: 16C E-2: 182 F-2: 199 F#2: 1B1 G-2: 1CE G#2: 1E6 A-2: 203 A#2: 222 B-2: 242 C-3: 265 C#3: 289 D-3: 2B0 D#3: 2D9 E-3: 304 F-3: 332 F#3: 363 G-3: 396 G#3: 3CD A-3: 407 A#3: 444 B-3: 485 C-4: 4CA C#4: 513 D-4: 560 D#4: 5B2 E-4: 608 F-4: 664 F#4: 6C6 G-4: 72D G#4: 79A A-4: 80E A#4: 888 B-4: 90A C-5: 994 C#5: A26 D-5: AC0 D#5: B64 E-5: C11 F-5: CC9 F#5: D8C G-5: E5A G#5: F35 As command Pxx decreases the frequency register by (xx - 80), a lower xx gives a higher pitch.