-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathResearchLog.txt
379 lines (320 loc) · 10.7 KB
/
ResearchLog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
Research Log
Finale offers a free version of NotePad 2012.
Sibelius's editor is a free trial, good for 30 days.
Sticking with NotePad for now and will double check with Sibelius later.
What is called MusicXML is not actually xml at all. It is not encoded as
text in fact. The file format is actually mxl (not xml). However, opening
it in NotePad works fine and produces the full sheet music. NotePad can
then export it to xml which is very easy to work with.
Most online cites do not offer the xml but offer mxl instead. Also, the
music offered is typically a full score for an orchestra/band with
multiple parts or a score for piano that blends them. I'm working on
specifically single part/voice scores for Bb (B flat) Clarinet. This
assumptions means that only one note can be played at a time. The proto-
type I produce should be made to easily scale to percussion instruments
that can play multiple notes at once. This means including the logic
to process multiple parallel rather than serial notes in a measure as
well as a system to quantify the difficulty of correctly harmonizing
with other sections/parts/voices.
In the xml version the part is organized by measures. Measures contain
"print", "attributes", "direction", and "note" subtypes. "print" is
specifying some margins and other relevant aesthetic notes for rendering
the score in pdf. It is not useful to us. "attributes" are useful. They
specify key and time signature as well as clef and transpose (not sure
what the transpose marks are for yet). "direction" is useful, although
it is presented as a marking for whether to place something above or
below the measure. What it contains is often changes in tempo or
dynamics, as well as instructor markings. "note" is of course the
most useful which specifies everything about an individual note, such
as pitch, duration, type (which is functionally the same as duration,
but is in the more familiar language of quarter/eighth rather than
milliseconds), and notations (ties, slurs, articulation markings).
"print", "attributes", and "direction" are not always present, but
"note" is always present, even when specifying rests rather than notes.
More notes about less frequent markings will appear below.
Fermata can occur as a notation attached to a "note".
Accidentals are also within the "note".
Time modification is also present within the "note" for several notes
played in one time unit, such as a triplet played within the time of
a quarter note.
Slurs occur on the "note" as notation and have type attached to them,
which is either "start" or "stop". However, the slurs always seem to
"stop" on the note immediately following a "start". So it would appear
that all slurs only cover two notes, however in the pdf and score,
they can and do cover multiple notes. I'm not sure if this is an error
in the xml export or some strange representation. I would expect there
to be a tertiary marking, such as "continue", for notes being slurred,
but not at the end of the slur. This may not necessarily affect our
difficulty measurement, but it is an odd point worth bringing up for
future work.
*Correction* I downloaded a separate mxl and pdf document originally
for the score I'm examining. The pdf showed slurs of multiple notes.
I cannot examine the mxl however, but I have opened it in NotePad, and
seen that actually the mxl (or NotePad representation) is incorrect
which in turn generated incorrect xml that I'm parsing. This is either
an error in the mxl or an error/limitation of NotePad in parsing the
mxl.
I'm writing the notes into numbers based on octave, but not actually
sure what the lowest feasible note is. I would think A would be the
lowest (in 0 octave), but then again, it might be A flat since that is
a lower note (even though I always think of it as G#). Note sure, but
for now I'm assuming the following structure, which simply gets
repeated with 12 added on for every octave.
01 A b (G #)
02 A
03 A # (B b)
04 B
05 C
06 C # (D b)
07 D
08 D # (E b)
09 E
10 F
11 F # (G b)
12 G
The above is wrong; the below is correct.
00 C
01 C# / Db
02 D
03 D# / Eb
04 E
05 F
06 F# / Gb
07 G
08 G# / Ab
09 A
10 A# / Bb
11 B
I need to double check that powerpoint presentation as well as go
over the proposal again to see what musical elements to focus on
first. I know what elements to pull out and what they mean, but
I'm not sure how to quantify them. For example, when looking at
intervals, obviously larger ones pose more difficulty. However,
once each individual interval is quantified, how do I combine
those into one measurement? Is it simply the average or does the
range of possible intervals matter? Is it the spread of intervals?
Is it some sort of threshold between them that quantifies
difficulty? I need to figure this out. Each of these is doable,
but I don't know which is more relevant/useful and thus where to
start.
Preliminary difficulty settings for intervals:
<G3-G4>
1
</G3-G4>
<A4>
2
</A4>
<B4-C5>
5
</B4-C5>
<C#5>
10
</C#5>
Estimated difficulty settings for key signatures:
Name: Accidentals*: Difficulty Multiplier: *positive for sharp, negative for flat
C 0 1
G 1 1.1
D 2 1.1
A 3 1.2
E 4 1.3
B 5 1.4
F# 6 1.5
C# 7 1.6
F -1 1.1
Bb -2 1.1
Eb -3 1.2
Ab -4 1.3
Db -5 1.4
Gb -6 1.5
Cb -7 1.6
Articulations:
<note default-x="16">
<grace slash="yes"/>
<pitch>
<step>C</step>
<alter>1</alter>
<octave>6</octave>
</pitch>
<voice>1</voice>
<type>eighth</type>
<stem default-y="41">up</stem>
<notations>
<articulations>
<staccato default-x="3" default-y="20" placement="above"/>
<accent default-x="-1" default-y="-65" placement="below"/>
<strong-accent default-x="3" default-y="8" placement="above" type="up"/>
<tenuto />
</articulations>
<slur number="1" placement="above" type="start"/>
</notations>
</note>
Slur: 0.5
Nothing: 1
Accent: 1.1
Staccato: 1.2
Tenuto: 1.2
Strong-Accent: 1.4
I've just discovered that actually, MusicXML is in both xml and mxl formats.
What I previously thought was just a misnomer was actually my own confusion.
The xml that I have been using is in fact the standard MusicXML (what I believe
is version 3.0, the most current). However, the mxl format exists as a
compressed version, presumably for portability. They are both technically
MusicXML however. Thus, finale (and likely others) provide the functionality to
import or open either and subsequently output what we need.
How to specify notes in the xml:
<notes>
<note-value>
<range>
g3-f4
</range>
<difficulty>
1
</difficulty>
</note-value>
<note-value>
...
</note-value>
<note-value>
...
</note-value>
</notes>
notes is the overall grouping that will hold multiple
individual note specifications.
note-value is one specific note or range that has properties
associated with it.
range and difficulty are each properties of a set of note(s).
range specifies the individual note(s) by simply a letter
(with or without a sharp (#) or flat (b)) and a number. To
show multiple notes, separate them by a dash. Only two notes
at most can be specified at a time.
difficulty specifies the actual difficulty number
associated with this note or notes, such as an integer between
1 and 10.
How to specify intervals in the xml:
<intervals>
<interval>
<difference>
1
</difference>
<location1>
-1
</location1>
<location2>
-1
</location2>
<difficulty>
1
</difficulty>
</interval>
<interval>
...
</interval>
<interval>
...
</interval>
</intervals>
intervals is the overall grouping that will hold multiple
individual interval specifications.
interval is one specific interval that has properties
associated with it.
difference, location1, location2, and difficulty are each
properties of an interval.
difference specifies the actual space between notes, based
on musical notation. 1 is unison or a first (even though
this would more accurately be a difference of 0). Similarly,
2 is seconds, 3 third, 4 is fourth, etc. These can be
represented as ranges with a dash, such as 3-5 for third to
fifth, similarly to how notes are specified. Additionally,
these can be specified as greater than the specified
interval by using negative notation. For example, to say
any interval greater than an octave, one would specify
-8. Since 0 is not used for an interval, it can be used
to specify any interval.
location1 and location2 specify the range this interval
applies to. They can be specified in any order (with 1
being higher or 2 being higher). These can be represented
as ranges themselves with dashes (similar to how note
difficulties can be specified). -1 is the default value
for anywhere.
difficulty specifies the actual difficulty number
associated with this interval, such as an integer between
1 and 10.
How to specify dynamics in xml:
<dynamics>
<mf>
1
</mf>
<mp>
2
</mp>
<f>
...
</f>
</dynamics>
dynamics is the overall grouping that will hold multiple
individual dynamics specifications.
The next element is named for the dynamic level being
specified. To specify fff, make the element <fff></fff>.
The value of that element is the difficulty level that
will be applied to that dynamic.
How to specify tempo difficulty in xml:
Tempo difficulty is already pretty much baked into the
code on purpose based on how it is applied. Therefore,
this modifier is only a multiplier to apply to the
existing difficulty. This is recommended to be left at
one.
<tempo>
1.5
</tempo>
tempo is the overall grouping that holds the multiplier.
The value of tempo is the multiplier that will be
applied to the existing calculation.
How to specify key signature difficulty in xml:
<key-signatures>
<key-value>
<key>
C
</key>
<difficulty>
1
</difficulty>
</key-value>
</key-signatures>
key-signatures is the overall grouping that will hold multiple
individual key-value specifications.
key-value is one specific key-signature that has properties
associated with it.
key and difficulty are each properties of a key signature.
key specifies the actual named key, such as C, G#, Bb, etc.
difficulty specifies the actual difficulty number
associated with this key, such as a decimal value.
How to specify articulation difficulty in xml:
<articulations>
<normal>
1
</normal>
<staccato>
2
</staccato>
<tenuto>
...
</tenuto>
<slur>
...
</slur>
<accent>
...
</accent>
<strong-accent>
...
</strong-accent>
</articulations>
articulations is the overall grouping that will hold multiple
individual articulation specifications.
The next element is named for the articulation being
specified. To specify slur, make the element <slur></slur>.
There must be a value here for "normal" or legato.
The value of that element is the difficulty level that
will be applied to that articulation.
scp -r * eholder0@mickey.cs.vt.edu:~/WebCode/
ssh eholder0@mickey.cs.vt.edu