Andrew Earis's Expression Algorithm
Manual for version 1.00

by Craig Sapp


Installation for Microsoft Windows

  1. 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.

  2. To install the performance extraction software, first download the file expressionalgorithm100.zip (4.5 MB)

  3. 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.


  4. 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:



  5. Now you are ready to run the actual program which is called expressionalgorithm100.exe.

Running the Program

  1. 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:

    1. Work -- This is the title of the work. This field is ignored by the program and is only intended for use by humans.
    2. Performer -- This is the name of the performer. This field is also ignored by the program and is only intended for use by humans.
    3. 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.
    4. 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.
    5. 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.
    6. Mainbeat data filename -- This is the basename of the output analysis files, of which there will be three which are discussed below.
    7. 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.
    8. 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.


  2. 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:



  3. 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:
    1. 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:
      1. The measure number of the beat (from column 5 of input notes file).
      2. The absolute beat number (from column 6 of the input notes file).
      3. The corrected timing of the beat in seconds.
      4. The measured loudness at the beat location.
    2. 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.
    3. 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:
      1. measure number
      2. absolue beat number
      3. MIDI note number (column 3 of input notes file)
      4. Event time (from one of the first two output files)
      5. Individual note time (may be different from the event time)
      6. 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.