Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /storage/content/49/145849/famitracker.com/public_html/forum/classes/dbHandler.php on line 29
When [b]multiplying[/b] out-of-range volumes, FamiTracker itself exhibits a probably yet undocumented method: (($WX) and ($YZ) are both positive 1-byte hex values)
($WX) × ($YZ)
= ($W) × ($Y) + ($W) × ($Z) + ($X) × ($Y) + ($X) × ($Z)
Replacing ($WX) or ($YZ) with ($WX-1) and ($YZ-1) if ($X)=0 or ($Z)=0. The final volume is then clipped to its channel's maximum volume. One of the volumes has to be converted to a base-32 (not base-33) value for FDS to work. This distributive property is NOT seen in the ($0,$F)² volume table.
In practice, out-of-range volumes are encountered when:
- The volume envelope exceeds the range via hex-editing; [i]xor[/i]
- The obsolete effect command Exx is used on an instrument without a volume envelope.
The attachment demonstrates this behaviour, happening as late as 0.2.7 when a multiplicative volume table was created. Before that Exx was used to shift the volume envelope and had some other exotic side-effects. Track #1 shows the amplification in both cases, track #2 displays some good use of Exx. Exx as of now only works in 2A03/MMC5 pulses and noise channel.
your powers of deduction of minute things no one else would care to notice would be well suited to many other topics besides 8-bit music. pretty sure there's some physics thing you could be doing
You'd get a lot more accurate (and simpler) descriptions by inspecting the source code.
Exx = equivalent to a 1-entry volume macro sequence (and is overridden by volume macros).
The volume column is multiplied by the current sequence value (or Exx), divided by 15, then clipped to the current range (0-15). If the volume and sequence are both > 0, but the calculated volume is 0, it is changed to 1.
I don't think the NSF driver code is set up to handle out of range values. It'll probably just end up loading weird values from the volume table (or elsewhere) if you export an NSF. Don't ask me what; I don't care to reverse engineer failure.
Actually, out of bounds volume values for Exx or macros should probably be clamped on export to prevent problems like that. Sequence values you can't actually make normally, so maybe there's no problem there, but I guess this is a long-standing bug with Exx.