Here are ideas for allowing import of match
alignment data (after you get export of that
data added to the program).
================================================
Idea 1: Null (or score) Reference. In the
mazurka project the alignment reference is the
musical score. The locations of beats from the
score are measured in the audio and stored in
a list such as:
0.605 0
1.159 1
1.739 2
2.315 3
2.902 4
3.498 5
4.031 6
4.618 7
5.265 8
5.915 9
6.543 10
Which is from the data file:
http://mazurka.org.uk/ana/markup/pid9062b-22/pid9062b-22-avgtapa-sv.txt
The numbers on the right are the "absolute beat"
numbers for each beat in the score (unit of 1.0
is the quarter note). The number on the left
is the time (in seconds) where that beat starts
in the audio file.
Now consider another recording of the same piece:
2.589 0
3.360 1
4.007 2
4.730 3
5.545 4
6.309 5
6.938 6
7.666 7
8.316 8
8.988 9
9.716 10
from the data file:
http://mazurka.org.uk/ana/markup/pid9096-03/pid9096-03-avgtapa-sv.txt
It would be nice If I could load these files to
control the match alignment system in SV.
Also with a null (score) reference, the alignment
points would not have to be 1-to-1 in the alignment
files for each audio file. For example, one file
might only specify the alignment time for
the start of each measure, the start of each beat,
or the start of each rhythm (such as eighth notes,
sixteenth notes, etc). Here is what the data
for the above alignment file if the dotted-eighth/
sixteenth note rhythms are included:
2.589 0
3.167 0.75
3.360 1
4.007 2
4.730 3
5.341 3.75
5.545 4
6.309 5
6.938 6
7.484 6.75
7.666 7
8.316 8
8.988 9
9.534 9.75
9.716 10
================================================
Idea 2: interpolation between specified alignment points
The current output data is a continuous stream of
indices, specifying the alignment location between
two files every 20 milliseconds. It would be nice
for an alignment data importer to automatically
calculate intermediate times which are not
specified in the input file (like examples above).
For example, if beat 8 is at 8.316 seconds and
beat 9 is at 8.988, then beat 8.5 would be
assigned the time 8.652 which is half-way between
the two specified reference points.
This might also be used for data compression
in writing out alignment data, essentially
recording the changes in tempos, and not
specifying intermediate data when the
tempo is constant.
=================================================
Consideration: Thinking about how repeats
might be handled is a good idea to start now,
since it would be probably be difficult to
add later on... How to represent repeats which
are different between different files. The
MATCH program can't handle that (yet), but I
can generate my own alignment data from
extracted timings.