You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+30-39Lines changed: 30 additions & 39 deletions
Original file line number
Diff line number
Diff line change
@@ -20,18 +20,17 @@ It is currently very much under construction, but can be tested [here](https://d
20
20
The basics are as follows:
21
21
22
22
* Clicking selects notes. Shift-click selects them as _primary_
23
-
* Linking together the selected notes into a _relation_, alternatively
24
-
referred to as a _relation_ can be done either without giving the
23
+
* Linking together the selected notes into a _relation_ can be done either without giving the
25
24
relation a type at all, by clicking one of the preset buttons or their
26
25
key bindings, or by writing a custom type into the text field and
27
-
clicking the "Add relation with custom type" button.
26
+
clicking the "Assign" button.
28
27
* Relations with both primary and secondary notes imply a priority among
29
28
the notes. If we add a number of relations such that no circular
30
-
priorities are introduced, we have defined a typ of _hierarchy_ among
29
+
priorities are introduced, we have defined a type of _hierarchy_ among
31
30
the notes and relations.
32
31
* After having annotated a number of relations/relations, we can _reduce_
33
-
the lowest-ranked notes in our hierarchy by clicking the "Reduce
34
-
Relations" button. We can also select a subset of the existing
32
+
the lowest-ranked notes in our hierarchy by clicking the "Reduce" button.
33
+
We can also select a subset of the existing
35
34
relations to attempt to reduce. The basic algorithm is this: Each
36
35
reduced relation also removes its secondary notes, and leaves its
37
36
primary notes to the next step. However, any relations that are _not_
@@ -40,88 +39,80 @@ The basics are as follows:
40
39
this step, and the removed notes are only secondaries of removed
41
40
relations.
42
41
43
-
*Note that the below illustrations all come from a previous version referring to "hyperedges". In the present version these have all been replaced by "relations".*
44
-
45
42
## A short example
46
43
47
44
Let us load a familiar piece into the annotation app: Bach's Prelude in C
48
45
Major from The Well-tempered Clavier (BWV 846). This is done by selecting
49
-
the file from your computer through the file selector at the bottom left. Once
50
-
chosen, the app should render it directly as in
46
+
the file from your computer through the file selector accessed from the
47
+
"Select a score" button. Once chosen, the app should render it directly as in
51
48
52
-

49
+

53
50
54
51
This done, we can begin selecting notes by clicking them. We can also select notes as _primary_ by shift-clicking them.
55
52
56
53
After selecting a number of notes, we can associate them using a relation,
57
54
either of some specific type, or untyped. There are a number of predefined
58
-
edge types with dedicated buttons and keybindings, and a textfield for
59
-
entering a custom type.
55
+
relation types with dedicated buttons and keybindings, and a textfield for
56
+
entering a custom type in the expanded menu.
60
57
61
58
Let us select the first E in the upper voice as primary, and the rest of the E's in that measure as secondary:
62
59
63
-

60
+

64
61
65
62
We can do this either by clicking and shift-clicking the individual notes,
66
-
and then either clicking the button marked "Add repeat(+) relation" or
63
+
and then either clicking the button marked "Repeat" or
67
64
using the "+" keyboard shortcut. However, specifically for the situation
68
65
that all the notes of the same pitch in a single bar should be selected and
69
66
related as repeats, it is also possible to just select the primary note of
70
67
the repeat and then hitting "+".
71
68
72
-

69
+

73
70
74
-
After having created a number of relations, we can choose to a "Reduce"
75
-
step, which hides the "lowest" level of edges, as described above.. For
71
+
After having created a number of relations, we can choose to do a "Reduce"
72
+
step (by clicking the button in the layer menu on the left) which hides
73
+
the "lowest" level of edges, as described above. For
76
74
example, if we have made similar relations for the other parts in the
77
75
arpeggio, we can reduce the first bar of the Prelude from this:
78
76
79
-

77
+

80
78
81
79
To this:
82
80
83
-

81
+

84
82
85
83
However, this doesn't look very nice, as we only hide the notes, and not
86
84
the beams and other things related to notes. We can hide stems and beams
87
-
and such things with the button "Toggle (s)tems etc." or the keyboard
85
+
and such things with the button "Stems etc." in the "More options" menu, or the keyboard
88
86
shortcut "s".
89
87
90
-

88
+

91
89
92
90
But this still leaves us with an embarrassing amount of unused space, as
93
-
well as unused ledger lines. To rerender the MEI with the removed notes, we
94
-
can click the button marked "Rerender less hidden notes" **but beware**! Up
95
-
until now, we can undo things to no ill effect (with the button or the "u"
96
-
key), but as soon as we rerender, undo is not going to work past that
97
-
point.
98
-
99
-
Still, let's go ahead:
91
+
well as unused ledger lines. We can, however, create a _new layer_, which
92
+
will be added in the app below the first layer, where such unused spaced can be
93
+
significantly reduced, and features like note editing becomes available.
100
94
101
-

95
+

102
96
103
-
Much better!
97
+
Slightly better!
104
98
105
-
Having done a number of reductions and rerenderings, we can end up with something similar to:
99
+
Having done a number of reductions and new layers, we can end up with something similar to:
106
100
107
-

101
+

108
102
109
103
Which starts to be useful for further analysis.
110
104
111
105
By clicking the "Save" button, you will get the option to save the original
112
-
MEI plus the graph as currently envisioned. For example, saving the above
106
+
MEI, any selection of additional layers, plus the graph as currently envisioned. For example, saving the above
113
107
state and then loading the resulting file will show this view:
114
108
115
-

116
-
117
-
Which can then be turned into the previous view by first reducing and then
118
-
rerendering (and also hiding stems etc.).
109
+

119
110
120
111
## Hierarchical analysis
121
112
122
113
More exciting possibilities are open by having overlapping and interacting
123
114
relations, though this is beyond the scope of this simple example. For
124
-
presenting this work as a Late-Breaking Demo at ISMIR2020, the following
115
+
presenting an earlier version of this work as a Late-Breaking Demo at ISMIR2020, the following
125
116
illustrative gifs were produced, showcasing some more advanced ideas:
126
117
127
118
**Update**: In the GIFs below, reference is made to needing to delete edges in order to see relations "behind" them. This is no longer required: instead, by scrolling with the scroll wheel (up or down), the currently highlighted edge is sent to the "bottom" of the stack, showing the edges that were "hidden".
0 commit comments