Redo the 7xy tremolo

Post about feature requests here.
User avatar
HertzDevil
Posts: 475
Joined: Thu Apr 23, 2015 7:39 pm
Location: Hong Kong SAR
Contact:

Redo the 7xy tremolo

Postby HertzDevil » Sat Jul 25, 2015 7:07 am

Code: Select all

710:  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
711:  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
712:  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  0  0  0  0
713:  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  0  0  0  0  0  0
714:  0  0  0  0  0  1  1  1  1  1  2  2  2  2  2  2  2  2  2  2  2  2  1  1  1  1  1  0  0  0  0  0
715:  0  0  0  1  1  1  1  2  2  2  2  3  3  3  3  3  3  3  3  3  3  2  2  2  2  1  1  1  1  0  0  0
716:  0  0  0  1  1  2  2  3  3  3  4  4  4  4  4  4  4  4  4  4  4  4  3  3  3  2  2  1  1  0  0  0
717:  0  0  1  1  2  2  3  3  4  4  4  5  5  5  5  5  5  5  5  5  5  4  4  4  3  3  2  2  1  1  0  0
718:  0  0  1  2  2  3  3  4  4  5  5  6  6  6  6  6  6  6  6  6  6  5  5  4  4  3  3  2  2  1  0  0
719:  0  0  1  2  3  4  4  5  6  6  7  7  7  8  8  8  8  8  8  7  7  7  6  6  5  4  4  3  2  1  0  0
71A:  0  1  2  3  4  5  6  6  7  8  9  9 10 10 10 10 10 10 10 10  9  9  8  7  6  6  5  4  3  2  1  0
71B:  0  1  2  4  5  7  8  9 10 11 12 13 13 14 14 14 14 14 14 13 13 12 11 10  9  8  7  5  4  2  1  0
71C:  0  2  4  6  8 10 12 13 15 17 18 19 20 21 21 21 21 21 21 20 19 18 17 15 13 12 10  8  6  4  2  0
71D:  0  3  6  9 12 15 17 20 22 24 26 28 29 30 31 31 31 31 30 29 28 26 24 22 20 17 15 12  9  6  3  0
71E:  0  4  9 13 18 22 26 30 33 37 39 42 44 45 47 47 47 47 45 44 42 39 37 33 30 26 22 18 13  9  4  0
71F:  0  6 12 18 24 30 35 40 45 49 53 56 59 61 62 63 63 62 61 59 56 53 49 45 40 35 30 24 18 12  6  0
This is the volume table of the 7xy tremolo. It is derived from the 4xy vibrato table, by dividing all entries by 2, and then taking only one half of the table. At every tick, the tremolo phase advances by x / 2, while the phase and the depth (y) are used to look up the volume entry; this value then subtracts the mixed volume as a whole. In other words the 7xy tremolo envelope is a very sharp and deep rectified sine wave, so deep that 7xF makes sense only on the sawtooth channel at maximum volume, whereas for instruments on any sound chip other than FDS the volume must stay at 1 or below for more than 80% of the time. Here is an example envelope using 75B:

Code: Select all

Tick Phase Offset
   0     0      0
   1     2     -2
   2     5     -7
   3     7     -9
   4    10    -12
   5    12    -13
   6    15    -14
   7    17    -14
   8    20    -13
   9    22    -11
  10    25     -8
  11    27     -5
  12    30     -1
  13     0      0
  14     3     -4
  15     5     -7
  16     8    -10
  17    10    -12
  18    13    -14
  19    15    -14
  20    18    -14
  21    20    -13
  22    23    -10
  23    25     -8
  24    28     -4
  25    30     -1
  26     1     -1
  27     3     -4
  28     6     -8
  29     8    -10
  30    11    -13
  31    13    -14
  32    16    -14
  33    18    -14
  34    21    -12
  35    23    -10
  36    26     -7
  37    28     -4
  38    31      0
  39     1     -1
  40     4     -5
  41     6     -8
  42     9    -11
  43    11    -13
  44    14    -14
  45    16    -14
  46    19    -13
  47    21    -12
  48    24     -9
  49    26     -7
  50    29     -2
  51    31      0
  52     2     -2
  53     4     -5
  54     7     -9
  55     9    -11
  56    12    -13
  57    14    -14
  58    17    -14
  59    19    -13
  60    22    -11
  61    24     -9
  62    27     -5
  63    29     -2
The offset column is added to whatever final volume the applied channel gives; as one can see, during half of a single envelope cycle the final volume is decreased by 10 or more, so something like a {15 14 13} lead with channel volume D will stay at volume 1 half of the time. The actual amplitude of this envelope is 14, but 10 and 21 for 7xA and 7xC respectively, due to the fact tremolo has always used the vibrato table since FamiTracker 0.2.6. The sound chips' volume registers have limited resolution (4-6 bits) when compared to period/frequency (11-18 bits), so using the same table will significantly reduce the usefulness of the 7xy tremolo effect; besides, unlike vibrato where the altered value changes its range wildly, namely doubling/halving the register value for each octave, no such limitation exists for the volume register, thus the 7xy tremolo certainly needs finer envelopes in order to allow better use of it. So I suggest that:
  • The 7xy effect ought not to reduce the volume to the minimum level (clipped 1);
  • The 7xy effect should perform a multiplication rather than subtraction on the mixed volume (or even the channel volume, making 7xy have the same resolution as Axy);
  • The 7xy effect should use a symmetrical envelope, possibly triangle or full sine, such that the peak and valley of the envelope are equally wide;
  • The 7xy effect's envelope depth should be linear with respect to the y parameter.
I highly doubt there are many FTMs making use of 7xy with large depth parameters, so altering the 7xy behaviour should not break as many old FTMs as, say, 4xy when the new vibrato style was introduced.
I shall provide a more concrete implementation in a few days.
Last edited by HertzDevil on Sat Jul 25, 2015 12:08 pm, edited 1 time in total.
refactoring 0cc-famitracker

sirocyl
Posts: 80
Joined: Sun Jul 19, 2015 12:44 am

Re: Redo the 7xy tremolo

Postby sirocyl » Sat Jul 25, 2015 8:37 am

These are pretty neat ideas. I've often wondered what the highest depth parameters on 7xx are meant to accomplish, and the only thing I could manage to make use of it on were the strings at the beginning of a cover of Zelda 3's dark world dungeon music, with 7CA (for now).
No qualm to me if the 7xx gets reworked, though,
As for clipping it at a minimum 1 volume, I'm not 100% about that, as cyclically silencing a channel briefly could have its uses, but then again, anyone could use the volume sequence in the instrument itself to replace it, I guess.

User avatar
Stratelier
Posts: 378
Joined: Sun Apr 26, 2015 7:46 pm

Re: Redo the 7xy tremolo

Postby Stratelier » Sun Jul 26, 2015 5:59 am

HertzDevil wrote:In other words the 7xy tremolo envelope is a very sharp and deep rectified sine wave....


I have definitely noticed that when attempting to use deep tremelos, but this usually ended in me opting to use A0x/Ax0 alternations in its stead and dismissing the deep tremelo behavior as an anomaly.

I don't particularly mind the tremelo being subtractive instead of multiplicative -- I consider that a bonus. Would be nice if it was available as a configurable module (or even per song, if possible) option.


Return to “Feature Requests”

Who is online

Users browsing this forum: No registered users and 1 guest