Andrew Earis's Expression Algorithm
by Craig Sapp
Manual for version 1.00
Installation for Microsoft Windows
- Before setting up the actual software, you must
install the Matlab Component Runtime libraries, version 7.6.
Download the humongous installation file MCRInstaller.exe
(153 MB), and follow these instructions to
install it. This file only has to be installed once onto each
computer on which the expression algorithm software is to be used.
- To install the performance extraction software, first download the file
expressionalgorithm100.zip (4.5 MB)
- Unzip the file whereever you prefer, and you will see several new files:
Plus three example files:
- mazurkadata.xls -- Example Microsoft
Excel spreadsheet necessary for data processing (explained further below).
- pid9050-06.notes -- Example input
notes file. This file contains the approximate locations of
notes found in the accompanying sound file.
- pid9050-06.wav -- Example input
WAVE file. The sample rate of the sound file should be
set to 11.025 kHz.
- Run expressionalgorithm100_pkg.exe to unpack the actual
software components and run the setup command (run from the command-line or
double-click in an Explorer window). Here are the
messages which should appear:
- Now you are ready to run the actual program which is called
Running the Program
- expressionalgorithm100.exe requires a Microsoft Excel
spreadsheat called mazurkadata.xls
to be located in the same folder/directory as the program (for
example, if mazurkadata.xls on the desktop,
expressionalgorithm100.exe must also be on the desktop).
mazurkadata.xls instructs the program
on which performances to process. The first row of the
spreadsheet contains parameter names which are ignored by the
program and are only for human use. Entries on all subsequent
rows will be processed
In the example
spreadsheet, there is only
one performance to process, but you can add any number of
performances into the list if you want to batch process all
of them in a single run.
Here are the meanings of each column in the spreadsheet:
- Work -- This is the title of the work. This field
is ignored by the program and is only intended for
use by humans.
- Performer -- This is the name of the performer.
This field is also ignored by the program and is only
intended for use by humans.
- WAV filename -- This is the name of the sound file which
contains the performance recording. The sampling rate
of the file must be set to 11.025 kHz. More information
on how to convert 44.1 kHz audio files to this format
should be described here.
- Initial beat tapped data -- This is the name of the
file which contains all of the notes expected in the
performance, and which are approximately located
in their actual locations. Here is a description of
how this data is created for the Mazurka Project.
- Frequency correction factor -- If the music is not
tuned to A440, then this value can be used to adjust
the measurement tuning. For example, if the number
1.0 is specified in this field, then A4 will be tuned
to 441 Hz rather than 440 Hz. If the value is -1.0, then
likewise A4 will be tuned to 439 Hz.
- Mainbeat data filename -- This is the basename
of the output analysis files, of which there will be
three which are discussed below.
- Algorithm parameters filename -- This is the name
of a file which will be created which describes the
parameters settings used in the analysis of the performance.
- Iterations -- This field can be used to identify
poorly localized notes in the output analysis. When
the algorithm cannot locate a note onset in the score,
it will typically place the note towards an earlier
point in time. When the output times are then fed
back into the program, these poorly localized notes
will again shift forward in time, while better localized
notes will remain locked to recognized note onsets.
- Once you set above the option fields in mazurkadata.xls, run
expressionalgorithm100.exe (for example, by double-clicking on it).
The very first time you run expressionalgorithm100.exe on a
computer, there will be some initial setup being done, which will not
occur on subsequent use of the program:
- After a while, the program will finish, and you will find
three data files for each performance listed in the
spreadsheet. The names of the files are related to
the name you type in column F of the spreadsheet:
- pid9050-06-algorithm.dat -- this outputs corrected beat locations according to the metric
location of notes in the input notes file (column 4). There are four colunmns of data in the output file:
- The measure number of the beat (from column 5 of input notes file).
- The absolute beat number (from column 6 of the input notes file).
- The corrected timing of the beat in seconds.
- The measured loudness at the beat location.
- pid9050-06-algorithm-subbeats.dat -- this output file contains the corrected sub-beat
locations, also according to the value in column 4 of the
input notes file (i.e., the location of chords which
are not on the beats). The meaning of the four columns
of numbers in the data are the same as the previous
file. This file only contains the off-beat timings,
while the first file only contains the beat timings.
- pid9050-06-algorithm-subbeats.dat-individualnotes.dat -- The previous
two file with measured beat/off-beat timings assumes that there
is a single event for each of those locations. However, if there
is more than one note for a timing event, they do not necessarily
occur at the same point in time. Arpeggios are an extreme case, but
also, left and right hand notes in piano music will not necessarily
coincide with each other, and even notes in a single handed chord
will not necessarily all start at the same time. The meaning
of each of the six data columns in this output are:
- measure number
- absolue beat number
- MIDI note number (column 3 of input notes file)
- Event time (from one of the first two output files)
- Individual note time (may be different from the event time)
- estimated individual note loudness
A fourth file is created according to the name in column G of the
input spreadsheet: pid9050-06-data.dat.
This file listed the analysis options used to analyzed the input sound file.
You can view additional example data generated by the program by
going to this webpage which
has links to the raw output files and post-processed files suitable
for loading into Sonic Visualiser as text-base annotation layers.