Already the oscilloscope calculated its length in beats, but
everywhere the variable was called "lengthInRows." Renamed the
variable to lengthInBeats and also changed the tooltip to be correct
The exception to the rule is the dialog buttons (which use still
the default material buttons), because when there is a modal dialog
on screen, there is not much else the user would want to do.
Fixes#156
In addition to the oscilloscope and loudness/peak detections, this
commit refactors all the channels between components (i.e.
ModelMessages and PlayerMessages) etc. into a new class Broker. This
was done because now we have one more goroutine running: a Detector,
where the loudness / true peak detection is done in another thread.
The different threads/components are only aware of the Broker and
communicate through it. Currently, it's just a collection of
channels, so it's many-to-one communication, but in the future,
we could change Broker to have many-to-one-to-many communication.
Related to #61
The behaviour of the user-defined keybindings.yml was changed.
It now documents just the changes from the default keybindings.
An empty line with no action means "unbind the key".
Also includes a refactoring of the List: all methods that accepted
or returned a [from, to] range now return a Range, which is
non-inclusive i.e. [start,end).
Also the assignUnitIds was slightly refactored & a new function
called assignUnitIdsForPatch was added, to assign all unit IDs for
an patch at once.
Closes#157, #163.
Notetracking was used in two completely different meanings: the
pitch/bpm notetracking in the delay unit and the cursor follow in
when playing. The word for the second meaning was changed to Follow,
to avoid confusion.