FamiTracker Version 0.4.2 Arpeggio Scheme Mod
Written by HertzDevil
Version 1.1 - Sept 14 2014

--------------------------------------------------------------------------------

This is a modified version of FamiTracker that features arpeggio schemes, a
generalization of the 0xy arpeggio effect command which allows the arpeggio
sequences of instruments to carry variable entries modified by 0xy.

To use arpeggio schemes, they must be input using the MML field of the arpeggio
sequence editor. (The use of the Sunsoft 5B noise sequence editor is planned.)
The MML field accepts terms formed by "x" added to, "y" added to, or "y"
subtracted from any numeral between -27 and +36 inclusive. These occurrences of
"x" and "y" will be substituted with the respective parameters of the 0xy effect
whenever FamiTracker encounters these in patterns.

As an example, given the following absolute arpeggio sequences:
{| 0 12 4 16 7 19}
{| 0 12 3 15 7 19}
{| 0 12 5 17 9 21}
These can be replaced with one single arpeggio scheme:
{| 0 12 x x+12 y y+12}
By using 047, 037, and 059, all three sequences can be invoked from one arpeggio
scheme. "x" and "y" can go before or after the numerals in each sequence term.
"-y" is valid but "-x" is not; thus these terms are all effective:
x+12  12+x y+12  12+y -y+12  12-y
x-12 -12+x y-12 -12+y -y-12 -12-y

What arpeggio schemes can do:
- Experience with more arpeggios with 0xy than the usual {| 0 x} and {| 0 x y}
- Always use the default 0xy effect in any given phase, e.g. {| x y 0} and
  {| y 0 x}
- Create extended chord arpeggio instruments, e.g. {|0 x y 11} and
  {| 0 0 x x y y 10 10}
- Input lead notes and then use one negative parameter to reference the
  countermelody, e.g. {| 0 -y -y 0 0}
- Use the 0xy as a parameter for "movable fixed" arpeggios, e.g. {x+12 x+12 | 0}
- Reduce the number of arpeggio instruments sharing the same pattern but
  different notes
- Change the notes of an arpeggio instruments without affecting their sequence
  positions
- Keep the FTM tidier (also reduce file size if no new effect columns are
  created; NSFs may become larger)

This program and its source code are licensed under the GNU General Public
License Version 2. Differences to the original FamiTracker source are marked
with "// // //"; those to the ASM source with ";;; ;; ;" and "; ;; ;;;". Note
that this mod is based on the 0.4.2 version and will continue to use that
version in future updates; its implementation may not be identical if and when
arpeggio schemes are part of the official features.

--------------------------------------------------------------------------------

Known issues:

- The arpeggio sequence editor cannot access "x" or "y" from the graph
- Pitch bend effects remove the 0xy parameters in NSFs (pitch bend effects do
  override arpeggio, however in FamiTracker the 0xy parameter is stored
  separately)
- "x" and "y" are case-sensitive
- FamiTracker doesn't reset the 0xy effect's counter when it plays an arpeggio
  scheme
- The executable's version accidentally becomes "1.4.2.0"

--------------------------------------------------------------------------------

Changelog:

V1.1 - 09/14/14
- MML field now displays arpeggio schemes with "x" and "y" properly
- MML field accepts "+x" and "+y" as terms
- Arpeggio sequence graph editor will not affect "x" and "y" in sequence terms
- Fixed a bug that treats negative numerals in front of terms incorrectly

V1.0 - 09/12/14
- Initial release

--------------------------------------------------------------------------------

For enquiries mail to nicetas.c@gmail.com