-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.html
624 lines (624 loc) · 42.3 KB
/
TODO.html
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
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
<TITLE>TODO Nov 2018</TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice 4.1.1 (Win32)">
<META NAME="CREATED" CONTENT="0;0">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGED" CONTENT="20181224;22520286">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<META NAME="CHANGEDBY" CONTENT="James Ingram">
<STYLE TYPE="text/css">
<!--
@page { margin: 2cm }
P { color: #000000 }
TT.cjk { font-family: "NSimSun", monospace }
TT.monotype-western { color: #000000; font-size: 9pt }
TT.monotype-cjk { color: #000000; font-family: "NSimSun", monospace; font-size: 9pt }
TT.monotype-ctl { color: #000000; font-size: 9pt }
-->
</STYLE>
</HEAD>
<BODY LANG="en-GB" TEXT="#000000" DIR="LTR">
<P ALIGN=CENTER STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT SIZE=4><B>AssistantPerformerTestSite<BR>TODO</B></FONT></FONT></P>
<P ALIGN=CENTER STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT SIZE=2 STYLE="font-size: 9pt"><B>The
master copy of this file is kept in
the<BR></B></FONT><FONT SIZE=2 STYLE="font-size: 9pt"><I><B>VisualStudio</B></I></FONT><FONT COLOR="#000000"><FONT SIZE=2 STYLE="font-size: 9pt"><I><B>/.../AssistantPerformerTestSite<BR></B></I></FONT></FONT><FONT COLOR="#000000"><FONT SIZE=2 STYLE="font-size: 9pt"><B>f</B></FONT></FONT><FONT SIZE=2 STYLE="font-size: 9pt"><B>older
on my main computer.<BR>(The file's version history is stored in the
Team Explorer repository.)<BR></B></FONT></FONT><BR><BR>
</P>
<P ALIGN=LEFT STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif"><BR></FONT><FONT FACE="Arial, sans-serif"><B>TODO</B></FONT></P>
<P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">13.12.2018:
The Conductor currently acts as a MIDI Thru device when it exists.
Messages sent from Sequence are then sent using the function
Conductor.send(msg, timestamp). The conductor can modify the messages
coming in from the score before sending them on to the outputDevice
selected in the page1 outputDevice selector.</FONT></P>
<OL>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">Create
a touchpad interface for the conductor.<BR>See
</FONT><A HREF="https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events/Using_Pointer_Events"><FONT FACE="Arial, sans-serif"><FONT SIZE=2>https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events/Using_Pointer_Events</FONT></FONT></A><FONT FACE="Arial, sans-serif"><BR>and
</FONT><A HREF="https://developer.mozilla.org/en-US/docs/Web/API/Touch_events"><FONT FACE="Arial, sans-serif"><FONT SIZE=2>https://developer.mozilla.org/en-US/docs/Web/API/Touch_events</FONT></FONT></A><FONT FACE="Arial, sans-serif"><BR>and
the Zingtouch es6 library at<BR>https://github.com/zingchart/zingtouch</FONT></P>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">Check
that the Keyboard1 code really is working properly with the other
controls.</FONT></P>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">The
recording of the MIDI output, currently created in Sequence, is not
affected by what the Conductor does. Change this so that the
recording is always of the messages sent to the final outputDevice.</FONT></P>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">Check
that the Conductor's mouse... handlers are working exactly as they
should be. Possibly write qwerty/midiDevice/touchpad handlers to
define variations.</FONT></P>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">Try
the following (for both Timer and Creep modes):<BR>A spaceTime
diagram exists (is drawn) on the conductor's layer when in a
conducting mode. The spaceTime diagram is a rectangular frame
containing a vertical blue line at or near the left edge
representing "now". To the right of "now" are
vertical dark grey lines representing future values in the
TimeMarker's msPosDataArray spaced proportionally to their temporal
values. (There could also be similar vertical grey lines, to the
left of "now", representing past events.) When performance
starts, the grey verticals scroll to the left in time with the
performance, while "now" is stationary.<BR>The duration
(number of future seconds) displayed in the spaceTime diagram is
part of the conductor's state, and could be controlled by a MIDI
knob during performance. It should be possible to find an optimal
default value by experiment...<BR>In the TimerConductor, the speed
could also be controlled by a MIDI knob (or the mouse position, as
at present).<BR>In the CreepConductor, the ratio of mouse distance
to score time could be controlled by a MIDI knob (while the mouse is
being dragged).<BR>It will be interesting to see how the look of the
spaceTime diagram changes as the amount of time it displays chages.
Will it be possible to see changing event (=symbol) densities? Could
they be made clearer by relating line colours to symbol
durations?<BR>The zoom state of the spaceTimeDiagram could be
controlled by a midiKnob, the touchpad zoom gesture, or qwery
up+down arrows.</FONT></P>
</OL>
<P STYLE="line-height: 115%"><BR><BR>
</P>
<P ALIGN=LEFT STYLE="line-height: 115%; page-break-before: always"><FONT FACE="Arial, sans-serif"><B>DONE</B></FONT></P>
<OL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">(October
2018) Upgraded all Javascript code to ES6 in directory es6 </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Edit
a score of Study 2, to include region definitions. </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Edit
the score.js code to read the region definitions in scores. (Using
the edited Study 2 score for testing)</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Upgraded
Moritz to write such scores. Tombeau1 now defines such regions.</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Corrected
a bug in AP: Page now scroll upwards if, when the cursor moves
backwards, it goes off screen.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Archived
the redundant ap and typescript directories.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Reprogramed
Moritz and the AP so that region start and end points are limited to
barline msPositions.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Deleted
the </FONT><FONT COLOR="#000000"><I>Study 2 with Regions</I></FONT><FONT COLOR="#000000">
score.<BR>Regions testing is now done in Tombeau 1.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Moritz
now draws special (double)barlines at the beginnings and ends of
Regions. Scores now contain class information for these.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Reprogrammed
the AP's setStartMarker and setEndMarker tools to take account
of Regions in the score. If there is more than one Region at the
clicked point in the score, a popup appears in which a particular
Region must be selected. The StartMarker and EndMarker now display
the Region's name next to the disc or square at their tops...</FONT>
</FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">While
performing, the start and end regionInfo strings that correspond to
the currently performing region are highlighted (displayed as bold
red text).</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Debugged
Keyboard1. (MidiObjects now have a systemIndex attribute, but only
for Keyboard1).</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">The
endMarker now has a disc, not a square at the top.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">The
conductor option has been completely reprogrammed in terms of the
Cursor class, and the RunningMarker class has been removed. The
startMarker and endMarker contnue to work predictably, also for the
Conductor.</FONT> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Regions
are now working correctly. I currently see no need for further
programming there.</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">[18.11.
2018] The conductor now has two modes (which can be toggled using a
mouse-click while conducting):</FONT> </FONT>
</P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>conductCreep</B>:
in which the increase in conductor.now() (i.e. deltaTime) is
directly proportional to the distance travelled by the mouse. The
mouse drags the cursor. </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000"><B>conductTime</B></FONT><FONT COLOR="#000000">:
in which conductor.now() is a function of performance.now() and the
horizontal position of the mouse. The mouse acts like the global
speed slider: when the mouse is on the left, the performance is
slower than when it is on the right.</FONT> </FONT>
</P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">There
is a basic speed set by the AssistanPerformer's speed slider.</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Performance.now()
is used to calculate time-deltas between calls to the conductor's
event handler. </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">The
conductor.now() value (the running total time) is incremented by a
simple function of time-delta and e.clientX. Note: </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">The
performance.now and basic speed values are like the momentum of an
orchestra's tempo, that can be changed (within limits) by the
conductor. </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">The
value of conductor.now() is subjective time, unrelated to the
absolute value of performance.now(). It depends on the conductor's
will, visual feedback from the score and aural feedback from the
performance. Are the values of conductor.now() computable numbers
(in the strict Turing sense)? :-)) </FONT>
</P>
</UL>
</UL>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">[20.11.2018]:
ES6 Promises are now used to load soundFonts. Currently, the AP only
loads one soundFont (the Grand Piano), but this may change -- in
which case (concurrent) promises are a much better solution than the
previous (recursive, sequential) solution.</FONT></P>
<LI><P STYLE="line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Summary
[05.12.2018]: <BR>The </FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>Mouse</B></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>conductAcceleration</B></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>mode
has been integrated into the AP code, with the conducting mode
rotating per conductor´s mouseClick in the score:
(</FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>conductTimer</B></FONT></FONT></TT><TT CLASS="monotype-western">→</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>conductCreep</B></FONT></FONT></TT><TT CLASS="monotype-western">→</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>conductAcceleration).<BR>The
TimeMarker graphics – including a new cursor (A turned 90º)
--, and the relation timeMarker→conductor→controls code,
are complete and working, but the conductor.conductAcceleration()
function is currently just a dummy stub that is a duplicate of the
conductor.</FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>conductCreep</B></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>()
code.<BR>I think it is, after all, a bad idea to use mouse clicks in
the score during performance to change the conducting mode. Instead,
conducting modes should change (in any order) using qwerty key
messages. These control messages should </FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><I>always</I></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>be
available, so that they can also be used as shortcuts for selecting
the mode in the setConducting button. The Keyboard1 code should be
kept, but treated separately from the new conductingModes. Its just
possible that a new conductingMode that uses InputChords will be
created in future.<BR></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>Now
beginning a new sprint</B></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>in
a new repository branch (see TODO list below). This sprint goes to
the point where I want </FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN STYLE="font-weight: normal">to
i</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><SPAN STYLE="font-weight: normal">mplement
MIDI input:</SPAN></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><BR>Done
[05.12.2018] in Controls.js: Created a new, enum-like
</FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>performanceModes</B></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>object,
parallel to conductingModes, containing<BR></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Consolas, monospace"><FONT SIZE=2>{score:0,
keyboard1:1, conducted:2}, </FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>and
simplified the related code in Controls.js.<BR></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>performanceModes.score</B></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>is
the mode that plays the temporal info as it stands in the score.
This is the default value when the AP's controls are in their
stopped state.<BR>Having performanceModes separate fom
conductingModes should keep things orderly when I start introducing
new conductingModes...</FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Redefined
the existing conductingModes:<BR></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#000000"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>{
timer: </FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#a31515"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>"timer"</FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#000000"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>,
creep: </FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#a31515"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>"creep"</FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#000000"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>,
acceleration: </FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#a31515"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>"acceleration"</FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#000000">
</FONT></TT><TT CLASS="monotype-western"><FONT FACE="Consolas, monospace"><FONT SIZE=2>}</FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Consolas, monospace"><FONT SIZE=1 STYLE="font-size: 8pt"><BR></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>as
follows:<BR></FONT></FONT></TT><TT CLASS="monotype-western"><FONT COLOR="#000000"><FONT FACE="Consolas, sans-serif"><FONT SIZE=2>{
off:0 timer:1, creep:2 </FONT></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Consolas, monospace"><FONT SIZE=2>}</FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=2>.</FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><BR>And
update the related code in all files accordingly.<BR>Deleted the
acceleration code and A-TimeMarker.</FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Both
</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductTimer</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">and
</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><SPAN STYLE="font-weight: normal">functions
are working, but they still need their own dedicated buttons.
P</SPAN></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">erformances
in both modes start with a mousedown in the score. I want to realize
midi input soon: Performances should also start when a midi message
arrives.</SPAN></FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Created
two separate control buttons for </FONT><FONT FACE="Arial, sans-serif"><B>conductTimer</B></FONT>
<FONT FACE="Arial, sans-serif">and </FONT><FONT FACE="Arial, sans-serif"><B>conductCreep</B></FONT><FONT FACE="Arial, sans-serif">:</FONT></P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><B>conductTimer</B></SPAN></FONT>
<FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">-- icon is a
selected blue </SPAN></FONT><TT CLASS="western"><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">I</SPAN></FONT></TT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">-cursor
with serifs (like the current </SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><B>conductTimer</B></SPAN></FONT>
<FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">TimeMarker)</SPAN></FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep
</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">--
icon is a selected blue right-arrow with vertical line (like the
current </SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">TimeMarker)</SPAN></FONT></FONT></TT></P>
</UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">conductingMode
enum has been subsumed into the performanceMode enum.</SPAN></FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Added
qwerty keydown event handler, and the code for adding and removing
it parallel to the code that adds and removes the conductor's
"midimessage" event handlers. All this code currently
contains non-functional (stub) handlers containing console.log
statements that show useful information about the values being
collected. </SPAN></FONT></FONT></TT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Added
a trackIsOn argument to the Cursor constructor, and called it
(again) whenever the TracksControl is changed. The Cursor
constructor now recalculates its msPosDataArray so that the
Conductors only use the tracks that are switched on.</SPAN></FONT></FONT></TT></P>
</OL>
<P STYLE="line-height: 115%; page-break-before: always"><FONT FACE="Arial, sans-serif"><B>Old
ideas:</B></FONT></P>
<OL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">In
</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductTimer</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">mode:
A mousedown in the score initiates mousemove control, A mouseup
disables mousemove control. The position of the mousedown is also
used to set the speed. Performance continues at the most recently
set speed until a mousedown or Escape.<BR>Cursor: a blue </SPAN></FONT></FONT></TT><TT CLASS="western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">I</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">-cursor
(like the current conductTime cursor)<BR>There are two sub-modes
(further sub-modes could be implemented using querty keys as state
signals):</SPAN></FONT></FONT></TT></P>
</OL>
<OL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductRelTimer</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">:</SPAN></FONT></FONT></TT></P>
</UL>
</OL>
<OL>
<UL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Activated
with left mouse button.</SPAN></FONT></FONT></TT></P>
</UL>
</UL>
</OL>
<OL>
<UL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">The
position of the mousedown is “current speed”.
Mousemove to the left results in decellerando, to the right is
accellerando.</SPAN></FONT></FONT></TT></P>
</UL>
</UL>
</OL>
<OL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductAbsTimer</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">:</SPAN></FONT></FONT></TT></P>
</UL>
</OL>
<OL>
<UL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Activated
with right mouse button.</SPAN></FONT></FONT></TT></P>
</UL>
</UL>
</OL>
<OL>
<UL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">The
position of the mousedown acts as a simple slider, so the position
of the mousedown results in an abrupt tempo change.</SPAN></FONT></FONT></TT></P>
</UL>
</UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">In
</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">modes:
A mousedown in the score initiates mousemove control, A mouseup
disables mousemove control. The position of the mousedown is also
used to change the speed relative to the distance travelled by the
mouse.<BR>Cursor is the current </SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">cursor
(an arrow on a vertical blue I-beam).<BR>There are two sub-modes
(further sub-modes could be implemented using querty keys as state
signals):</SPAN></FONT></FONT></TT></P>
</OL>
<OL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductAbsCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">:</SPAN></FONT></FONT></TT></P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Activated
with left mouse button.</SPAN></FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">mousedown.clientX
is the fixed relationship between mouse drag distance and “elapsed
time” (=conductor.now()). As at present, clientX works like
a simple simple slider. Mousemove.clientX (and clientY) values are
used to calculate mouse distance travelled,</SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><I>but
not the speed/distance ratio</I></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">.</SPAN></FONT></FONT></TT></P>
</UL>
</UL>
</OL>
<OL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductRelCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">:</SPAN></FONT></FONT></TT></P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Actvated
with right mouse button.</SPAN></FONT></FONT></TT></P>
</UL>
</UL>
</OL>
<OL>
<UL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">Works
like</SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><SPAN STYLE="font-weight: normal">conductAbsCreep,
except that </SPAN></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">the
speed/distance ratio changes with mousemove.clientX. Note that its
possible to toggle between the two </SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">modes
by switching mouse buttons. </SPAN></FONT></FONT></TT>
</P>
</UL>
</UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>Implement
MIDI input</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">:
Do this after completing the above.<BR>?? Move the Input Device
Selector to page 2, and update its logic to contain the following:</SPAN></FONT></FONT></TT></P>
</OL>
<OL START=8>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">no
device (= “score performance” – time info as
embedded in the score)</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">mouse+querty</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">a
list of the avaliable MIDI input devices (e.g. E-MU keyboard, R2M
ribbon device etc.)</FONT></P>
</UL>
<P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>This
distinguishes very clearly between the physical input devices and
the “performanceModes”!<BR>The information coming from a
MIDI input device could also be augmented by info from the mouse
and/or querty, but that's probably unnecessary. The performanceModes
simply expect MIDI messages to arrive, regardless of the device
where they originate. All I'm assuming is that such devices can
create any/all midi note and CC messages.<BR>Consider converting
mouse+querty input to MIDI messages before sending the messages to
the current performance mode. That might make for a better
programming structure...</FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">The
MIDI Input Devices in the Input Device Selector can be used for all
the conducting modes, so they can be used for both
performanceMode.keyboard1 and performanceMode.conductor, without
qualification.<BR>Again, starting from the Input Device selector:</SPAN></FONT></FONT></TT></P>
</OL>
<OL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western">“</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">no
device” would simply perform the durations embedded in each
score</SPAN></FONT></FONT></TT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">The
mouse+qwerty, R2M+qwerty and keyboard input devices would each be
usable for each of the conducting modes </SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductTimer</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">,
</SPAN></FONT></FONT></TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB"><B>conductCreep</B></SPAN></FONT></FONT></TT><TT CLASS="monotype-western">
</TT><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">and
conductAcceleration.</SPAN></FONT></FONT></TT></P>
</UL>
</OL>
<OL>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><TT CLASS="monotype-western"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="en-GB">The
keyboard input device can also be used in
performanceMode.keyboard1.</SPAN></FONT></FONT></TT></P>
</UL>
</OL>
<OL START=10>
<LI><P STYLE="margin-bottom: 0cm; font-weight: normal; line-height: 115%">
<FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">Complete the </SPAN><B>Mouse
conductAcceleration mode</B> <SPAN LANG="en-GB">by replacing t</SPAN>he
dummy <SPAN LANG="en-GB">conductor.conductAcceleration()
code.<BR>Algorithm: In this mode, the change of conductor.now()
speed (=acceleration) is proportional to the speed of the mouse. In
other words: If the mouse position does not change, neither does the
speed of conductor.now(). If the mouse position changes,
conductor.now()'s speed factor (re performance.now()) changes in
proportion to the mouse's speed. So a swift jerk of the mouse
increases the conductor's speed dramatically, while slower mouse
movements slow the conductor down. Possibly, the direction (l</SPAN>→<SPAN LANG="en-GB">r
or r</SPAN>→<SPAN LANG="en-GB">l) could define the
acceleration´s sign. Possibly the mode will only be active
when a particular qwerty key is depressed.</SPAN></FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><B>keyboard
</B></SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">and
</SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><B>QUERTY</B></SPAN></FONT>
<FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">controllers
(hardware devices).<BR>The keyboard1 event Handler only deals with
input from the </SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><I>keys</I></SPAN></FONT>
<FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">on a </SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><B>keyboard</B></SPAN></FONT>
<FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><SPAN STYLE="font-weight: normal">input
device, but the new conductingModes can </SPAN></SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">use
any of the physical controls (including the keys, wheels and 16 midi
control knobs). A conductingMode (=event Handler) could use the keys
on the keyboard either as switches (or toggles) or as a bank of keys
controlling e.g. speed (low=slow, high=fast) etc.<BR>The new event
handlers (conductingModes) are (and will be) much simpler than
k</SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><SPAN STYLE="font-weight: normal">eyboard1,
since they </SPAN></SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">will
be designed for single threaded performance and use neither
InputChords nor InputStaves. They can therefore be used on all
existing scores. Also: The input information for these event
handlers can originate from devices other than the keyboard
(mouse+qwerty and R2M+qwerty). Each conductor eventHandler will use
(define) its own event type, that can be sent from any hardware
input device using a handler between the input device and the
conductor's event handler. (An event type is defined simply as an
ES6 object having particular
attributes.)<BR><BR><BR>--------------------------------</SPAN></FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">21.11.2018:
I think the conducting modes can be associated with specific input
device modes.<BR>For example:</FONT></P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>NoConductingDevice
</B>would use <B>score</B> (see below)</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Mouse1</B>
would use <B>conductCreep.</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Mouse2</B>
would use <B>conductTime.</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Mouse3</B>
would use <B>conductAcceleration</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Keyboard1</B>
would use <B>conductCreep.</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Keyboard2</B>
would use <B>conductTime.</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Keyboard3</B>
would use <B>conductAcceleration</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>QUERTY1</B>
would use <B>conductCreep.</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>QUERTY2</B>
would use <B>conductTime.</B> </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>QUERTY3</B>
would use <B>conductAcceleration</B> </FONT>
</P>
</UL>
<P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Conducting
modes: </FONT>
</P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">The
AP's <B>"startConducting" button</B> (at the top of page
2) should really be a <B>"conductingMode"</B> toggle that
cycles through the available conducting modes.<BR>The input device,
selected on page 1, would then be simply one of the following:</FONT></P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>NoConductingDevice
</B></FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Mouse</B>
</FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Keyboard
(= E-MU)</B></FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>QUERTY</B></FONT></P>
</UL>
<P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">The
behaviour of the "Go" and "Stop" buttons would
depend on the state of the <B>"conductingMode" button</B>
(which should, I think, be moved to the left of the setMarker
buttons). </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">The
states (appearance) of the "conductingMode" toggle would
be (maybe in a different order):</FONT></P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"> <FONT FACE="Arial, sans-serif"><B>"score"
</B></FONT><FONT FACE="Arial, sans-serif">-- (no conductor) a
vertical grey line (like the standard cursor) </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">"</SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB"><B>conductTime</B></SPAN></FONT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">"
-- a blue </SPAN></FONT><TT CLASS="western"><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">I</SPAN></FONT></TT><FONT FACE="Arial, sans-serif"><SPAN LANG="en-GB">-cursor
(like the current conductTime cursor) </SPAN></FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>conductCreep</B>
-- a blue right-arrow with vertical line (like the current
<B>conductCreep</B> cursor) </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">"<B>conductAcceleration</B>
" -- a blue "A" (rotated -90º so that it looks
like an arrow) next to the vertical line (the "A" would
replace the creep mode's arrow) </FONT>
</P>
</UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">I
think it should be possible to select these modes dynamically
during a performance with either <B>Keyboard</B> or <B>QUERTY</B>,
but that <B>Mouse</B> might be limited to the originally selected
mode. (This question needs revisiting once <B>conductAcceleration</B>
with the <B>Mouse </B>is working, and I know how mouseClicks are
working in that case -- see above) Maybe the <B>Mouse</B> only
conducts at all with the left button depressed. Changes of
conducting mode could be done with special keys on either <B>Keyboard
</B>or <B>QUERTY</B>. Such changes would be reflected dynamically
in the appearance of the "conductingMode" toggle.</FONT></P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">possibly
re-name <FONT COLOR="#000000"><B>conductTime</B></FONT><FONT COLOR="#000000">
--> </FONT><FONT COLOR="#000000"><B>conductSpeed</B></FONT><FONT COLOR="#000000">,
so that Creep->Speed->Acceleration form a logical sequence
(of time-differentials).</FONT></FONT></P>
</UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif"><B>Known
Bug</B>: The Study 2 soundFont does not load correctly. This may be
a bug in the file or in the parser. Its not currently important,
since I'm not using it, but it would be nice to be able to play
Study 2 on the residentSf2Synth. However, I'm not sure if it
supports all the necessary CCs! -- Check!. </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Service
the es6 source files: </FONT>
</P>
<UL>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Add
a header comment and copyright to all es6 files </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Add
standard comments and type checking to all constructors (use
instanceof). </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">See
if any _ (=private) class members in es6 can be moved into the
containing module. </FONT>
</P>
<LI><P STYLE="margin-bottom: 0cm; line-height: 115%"><FONT FACE="Arial, sans-serif">Are
there any class attributes that could be made immutable or const? </FONT>
</P>
</UL>
<LI><P STYLE="line-height: 115%"><FONT FACE="Arial, sans-serif">Update
the public Assistant Performer and scores with Assistant Performer
Test Site code and scores. </FONT>
</P>
</OL>
<P STYLE="line-height: 115%"><BR><BR>
</P>
</BODY>
</HTML>