------------------
Additions
.........
- Adds ``Controller.pattern_value()`` instance method, to map a controller's
value to a pattern value in the range of 0x0000-0x8000.
- Adds ``ALL_NOTES`` constant to see if a ``NOTECMD`` is a note or a command.
(Example: ``if some_note in ALL_NOTES: ...``)
- Adds ``tabular_repr()`` instance methods to ``Note`` and ``Pattern``,
returning a tabular representation suitable for inclusion in text documents.
- Adds ``behaviors`` attribute to all module classes, describing the
types of information each module can send and receive.
- Adds package-specific exception base classes to ``rv.errors``.
- Adds support for reading, writing, and modifying controller MIDI mappings.
- Adds a ``MultiCtl.macro()`` static method, for quickly creating a
``MultiCtl`` that controls several similar controllers on connected modules.
- Adds a ``MultiCtl.reflect()`` instance method, for setting a ``MultiCtl``'s
value based on the destination controller mapped at a given index.
- Adds `` TODO: ...`` notes to indicate unimplemented features.
- Allows property-style access to user-defined controllers on ``MetaModule``s
using a ``u_`` prefix. For example, if there's a user-defined controller
named "Attack", it will be accessible via the ``.u_attack`` property.
- Adds ``ArrayChunk.set_via_fn()`` method, for setting various curves using
the output of a function.
- Adds ``DRUMNOTE``, ``BDNOTE``, ``HHNOTE``, and ``SDNOTE`` enumerations to
``DrumSynth`` class, providing note aliases for easier programming of
drum sequences.
- Adds ``Pattern.set_via_fn()`` and ``.set_via_gen()`` instance methods,
for altering a pattern based on the output of a function or generator.
Changes
.......
- Renames ``Output`` module's module group to ``"Output"``.
- When using ``Project.layout()``, default to using ``dot`` layout engine.
- Uses a direct port of SunVox's algorithm for mapping ``MultiCtl`` values
to destination controllers.
- Uses 1.9.2.0 as SunVox version number when writing projects to files.
- Allows using separate x/y offsets and factors during ``Project.layout()``
Fixes
.....
- Uses same sharp note notation as used by SunVox (lowercase indicates sharp).
- Honor ``prog`` keyword arg when passed into ``Project.layout()`` method.
- Does not require pattern ``x`` or ``y`` to be divisible by 4.
- Assigns correct controller number to user-defined controllers on
``MetaModule``.
- Corrects the max value allowed in a ``MultiSynth`` velocity/velocity curve.
- Moves ``pygraphviz`` from ``requirements/base.txt`` to ``.../tools.txt``
to be more Windows-friendly.