Audsync

Audsync is a program that aligns a score file to an audio file. It detects the onsets in the audio and estimates the musical tempo from these onsets. Using the estimated (or manually entered) tempo, the program searches for a beat sequence that is optimally aligned with the onsets.

The beats are shown in a graph below the score. Both score and beat graph have a cursor that scroll together, such that the highlighted beat corresponds to the highlighted note.

In addition to automatic analysis, the program features manual edit oprerations on the individual beats with unlimited undo/redo. When a score is correctly aligned to the audio, a preload file for abcweb or follow can be exported.

The Top Bar

Play Start/Stop playback. The beat and note cursor move synchronized to the audio. When stopping the cursor returns to the start position.
When shift-space was pressed to stop, the cursor remains where it is.
Zoom This value sets the width of one second in the graph (in pixels). The default is 100 px.
Begin range Sets the begin time of the selection range (in seconds). The audio begins at time zero.
The range is used by tempo analysis, beat tracking and the shift range edit operation (cntl-arrow left/right) You can also drag in the graph to set the selection range.
End range Sets the end time of the selection range (in seconds). A value of zero means the end of the audio. Thus a range with zero begin and zero end specifies the whole audio file.
The range is used by tempo analysis, beat tracking and the shift range edit operation (cntl-arrow left/right) You can also drag in the graph to set the selection range.
Analyse tempo Estimates the best tempo in the selected range. The result is a table of tempos ordered by a fitness score. The table is shown below the beat graph.
The tempo with the highest score is used as initial tempo for the beat tracking and is shown in the adjacent tempo input field.
Tempo Displays the best tempo found by the tempo analysis. It can be overridden by manually entering a different tempo.
Track beats Finds the best beat sequence in the selected range. The beats are shown in the graph by blue vertical lines. The height of each line is the current tempo (until the next beat). The tempo scale is shown at the left side of the graph.
The actual range where beats were changed is indicated by a light blue bar in the graph. This blue bar can be smaller than the brown bar of the selection range, because ill fitting beats at start or end are excluded.

The Menu

Score Browse the local file system and select a score file. The file can either contain MusicXML or ABC notation (extentions .xml or .abc). The selected file is opened and the score is rendered as a long horizontal staff system.
Alternatively (in stead of a score file), you can select (and import) a beat map file (extension .js) to continue a previous edit session.
Audio Browse the local file system and select an audio file. (.mp3 or .ogg)
After loading the audio file, new onsets are computed (wait message appears). Next, tempo estimation and beat tracking are automatically performed in sequence (another wait message). When the new beats are found the display is updated and the wait message disappears.
Save Beat Map Pops up a dialog where you can save the complete program state (score, beat graph and settings) to resume editing at a later time.
Save Preload Exports a preload file that can be imported directly into abcweb or follow
Page Scroll When checked, scrolling is performed in page mode: the score (and graph) only scrolls when one of the cursors almost reaches the end of the visible window.
When not checked, both cursors are always kept at a fixed position (0.3 of the window width).
Help Shows a dialog with all keyboard shortcuts.
Advanced Toggles the advanced menu.

The Advanced Menu

Beat unit The note duration of a beat. Sometimes the estimated tempo is off by a precise factor of 2 or 3. In this case one can set the beat duration to the correct value. (2,4,8 or 16 correspond to 1/2, 1/4, 1/8 or 1/16 notes).
Alpha The value of alpha determines how hard the beat tracking tries to reamin close to the given tempo. The default is 120. Higher values keep the beats closer to the given tempo. When the tempo varies a lot (for instance, in romantic music) a low value of alfa (10-60) gives better results.
Tempo mode There are two algorithms to estimate the tempo: one based on auto correlation and one based on a spectral product. The default is "auto correlation", because it is the fastest. But sometimes the spectral product gives better results. When using "spectral product" the number of products is given by the next parameter.
Number of products This value is the number of times that a spectral product is taken. Each time the sample rate of the onset is halved and a new spectrum is calculated and multiplied with the previous spectrum. More than 6 products has no practical value. The default is 4.
Number of bands This parameter determines the number of frequency bands that will be used during tempo estimation. Values allowed are 1, 2, 3, 4 and 6. The total bandwidth is divided by this factor and in each resulting band a separate tempo strength is calculated. The results are then averaged and used for the final tempo estimation.
This parameter has no influence on the onset values shown in the graph, because these represent the average over all bands. This average does not change.
Onset This button starts the computation of new onsets. You only need to press it when you change the number of bands in the previous input box. You will not see any changes after computation is finished, but internally the band onsets are changed and this results in different (possibly better) estimations of the tempo.

URL parameters

A link to audsync.html can have several URL-parameters, which are explained in the table below. An example of a link with some parameters is:

https://wim.vree.org/js/audsync.html?demo/mignon2.abc&demo/mignon2.mp3&alfa=15&tmp=76

Below is a table of parameters is shown

aoff= With aoff=nnn you specify the start of the selection range in seconds. The audio begins at time zero.
dur= With dur=nnn you specify the end of the selection range in seconds. (the parameter is inconsequently called dur for historical reasons)
tmp= With tmp=nnn you specify the tempo used for beat tracking. (overrides the automatic tempo estimation). You should use this if tempo estimation fails, or if one of the tempos lower in the table is the correct one. The table of possible tempos is shown below the score after estimation (tempo button).
pmx= With pmx=n you specify the number of products used in the spectral product mode. It also sets the mode to spectral products (see Number of Products).
unit= With unit=n you set the beat unit to n (see Beat Unit).
tel= With tel=nnn you set the begin position of the cursor to nnn (beats)
alfa= With alfa=nnn you set the tempo stricness (alfa) to nnn. The default is 120. (see Alpha)
page=n With page=0 you switch page mode off. With page=1 you switch page mode on. (see Page Scroll)

Keyboard shortcuts

Below is the table of keyboard shortcuts, copied from the help dialog of the main program

SpaceStart/Stop playback.
After stopping the cursor returns to the start position.
Shift-Space (playing)Stop playback.
After stopping the cursor remains where it is.
Shift-Space (stopped)The cursor returns to the start position.
ArrowRight →Move beat cursor to the next beat
ArrowLeft ←Move beat cursor to the previous beat
Delete/BackspaceDelete the selected beat
iInsert a new beat before the selected beat
(half way the previous beat)
Shift-ArrowRightMove selected beat 0.1 second to the right
Shift-ArrowLeftMove selected beat 0.1 second to the left
Cntl-ArrowRightMove selected area 0.1 second to the right
Cntl-ArrowLeftMove selected area 0.1 second to the left
zUndo last edit operation
(track button, move, insert, delete beat)
yRedo last edit operation
mShow/Hide menu
aShow/Hide advanced part of the menu
hShow/Hide this help window
Click in graphSets cursor and highlight on a beat
Shift-Click in graph(on a beat line) Sets Begin range
Cntl-Click in graph(on a beat line) Sets End range
Drag in graphSets both Begin- and End range
Shift-Drag in graphExtends the range (drag should overlap one of the ends)
Cntl-Drag in graphShrinks the range (drag should overlap one of the ends)