This free, open-source ABC converter/player tool was developed by Michael Eskin
Try it out here: ABC Transcription Tools
YouTube playlist with all the demo videos: Demo Videos
Table of Contents
PDF Tunebook Tune Size and Layout Spacing Overrides
Adding a PDF Tunebook Title Page
Adding a PDF Tunebook Table of Contents and Index
Table of Contents and Index Font Size and Line Spacing Overrides
Injecting ABC Lyric-based Note Names Into the ABC Tunes
Injecting B/C Box, C#/D Box, Anglo Concertina, or Bamboo Flute Tablature Into the ABC Tunes
Introduction (Top)
ABC Transcription Tools is a free, web-based, open-source tool for converting music in ABC and MusicXML format to both standard notation and tablature for a wide variety of instruments.
Play your tunes with high-quality, built-in sampled instruments.
Create PDF tunebooks with title pages, table of contents, tune index, custom headers, footers, hyperlinks, tune incipits (notation or raw ABC), and sharing QR codes using the tool's built-in Export PDF feature.
It also has easy-to-use features to transpose and sort your ABC tunebooks.
You can fully customize the look of your notation using the standard ABC spacing and font annotations.
The tool also includes the ability to easily share your tunes with others via Share URLs and QR Codes.
The underlying ABC rendering technology is Paul Rosen's incredible abcjs Javascript library.
Getting Started (Top)
On desktop browsers, when the tool is run, you should be seeing a side-by-side view with the ABC editor on the left and the notation on the right:

If you are seeing the notation below the ABC editor area, or the welcome dialog is taller than the screen, try zooming out your browser view by pressing:
Windows: Ctrl -
Mac: ⌘ -
On iOS and Android devices the ABC editor will always be on the upper half of the screen and the notation below.
Top Bar Buttons (Top)

Hover your mouse over any button or control in the tool to show a tooltip with a detailed explanation of what it does.
Some buttons and controls implement alternative features if you Shift-click, Alt-click, or Shift+Alt-click on them.
The tooltip will tell you exactly what the button or control does for all Shift/Alt combinations.
The text on top shows currently loaded ABC file or Share URL name and the current number of tunes found in the ABC Editor.
Open - The tool supports opening both ABC and MusicXML files.
The file type being opened depends on the file extension:
.abc or .txt - Opens an ABC file from your computer and loads it into the ABC Editor.
.xml, .musicxml, or .mxl - Imports a MusicXML file form your computer, converts it to ABC, and loads it into the ABC Editor.
Details on MusicXML import settings below in the MusicXML Import Settings section.
On desktop browsers, you may also drag-and-drop a single ABC or MusicXML file on the editor area to add it.
Add - Brings up a dialog where you can add your own ABC or MusicXML tunes, example ABC tunes, useful ABC templates, or restore previously saved Snapshots:

Choose File to Add:
Browse your system for an ABC or MusicXML file with one or more tunes to add to the end of the current tunes.
Restore from Snapshot:
This button appears if there is a saved Snapshot available in browser storage.
When clicked, restores the last saved Snapshot, replacing the contents of the ABC editor.
Since it completely replaces the contents of the ABC editor, you will be asked to confirm the operation.
Restore from Auto-Snapshot: (Desktop browsers only)
This button appears if there is a saved Auto-Snapshot available in browser storage.
When clicked, restores the last Auto-Snapshot, replacing the contents of the ABC editor.
Since it completely replaces the contents of the ABC editor, you will be asked to confirm the operation.
On desktop browsers, automatic snapshots when closing or reloading the browser tab the tool is running in can be enabled in the tool's Settings dialog.
Add an Example Reel:
Adds "Cooley's" as an example of a typical reel.
Add an Example Jig:
Adds "The Kesh" as an example of a typical jig.
Add J.S. Bach Two-Part Invention #1:
Adds the J.S. Bach Two-Part Invention #1 for Harpsichord.
This piece was originally imported from a MusicXML transcription.
Add J.S. Bach BWV570 Fantasia:
Adds the J.S. Bach BWV570 Fantasia in four parts for Pipe Organ.
This piece was originally imported from a MusicXML transcription.
Add Common Useful PDF Tunebook Annotations:
Adds a set of useful tool-specific annotations that are used when exporting a PDF tunebook at the top of the ABC editor text.
These include:
Adding a title page with subtitle, page headers and footers, a linked Table of Contents and sorted Index, playback links for the tunes, as well as a QR code with specific hyperlink.
Add an Example Song:
Adds a detailed self-documenting example of ABC for a song with lyrics.
Add a Song Template:
Adds an minimal self-documenting ABC template for a song with lyrics.
Add Box Fingering Symbols Template:
Add a template with symbols for annotating box fingerings and tablature at the top of the ABC editor text.
Add Two-Bar Click Intro Templates:
Add a template with two-bar click intro templates for common tune styles.
Copy and paste these into the start of your tunes before any repeats.
Delete the rest when you are done.
Save - Saves the contents of the ABC editor to a file.
Export PDF - Exports the currently displayed score as a high quality PDF file.
The saved ABC or PDF file will be in your browser's Downloads directory.
On iOS the downloaded files will be found in the "Downloads" directory in the iOS "Files" app.
Play - Opens the ABC Player where you can play the current tune. Full details below in the Playing Your Tunes section.
Copy All - Copies all the ABC text to the system clipboard so you can easily paste it into social media posts, emails, or other tools.
Page number settings are found in the settings panel.
Hide Controls / Show Controls - Hides/Shows all the control buttons below the ABC editor area.
Settings - Brings up the default playback instrument and other tool-wide settings dialog.
▲/▼ - Click this to hide/show the header at the top so you can have more room to work on your music.
ABC Editor (Top)

Type or paste your ABC notation here.
Changes are reflected immediately in the displayed notation below the ABC Editor.
You may also paste some ABC text into the ABC Editor or just start typing.
On desktop systems, the text entry box can be resized by dragging the lower right corner.
Click on any tune in the ABC to have the notation scroll into view.
Click in the notation for any tune and the ABC area will be autoscrolled so that the ABC for the tune is displayed (or within a few lines, browser dependent).
Note: The tune autoscroll features are not available on iOS or Android devices.
Viewing the Notation Full Screen (Top)

If any ABC is present in the ABC Editor, this double-arrow control shows up on the top right corner of the page.
The control hides or shows the ABC Editor and all controls so you can view your notation full screen.
Click once to hide the ABC Editor and all controls.
Click again to show the ABC Editor and all controls.
The size of the full screen notation as a percentage of the browser window width is set in the Settings dialog. Default is 50%.
If the resulting scaled width is less than 850 pixels (820 pixels for iOS/Android) the width will be set to 850 pixels (820 pixels for iOS/Android).
Playing Your Tunes (Top)
To play a specific tune, click anywhere in the ABC for the tune and then click Play.
The tool will automatically find the tune you've clicked on bring it up in the ABC Player for playback.
The controls for the Player are located below the displayed notation.

Using the playback controls at the bottom, you can enable looping, rewind to start, start/pause playback, click in the progress bar to seek, or change the tempo as a percentage.
Click Close to return to the ABC editor.
Click Enable Metronome to switch to a version of the tune that has a metronome click sound when playing.
Important note about using the metronome features with tunes with chords:
Behind-the-scenes the metronome in the player the ABC chord system to do its job.
When using the metronome, any chords in your tune will be temporarily hidden.
The "E" chord you will see at the start of the tune when the metronome is enabled is used to start the metronome playback.
Don't worry, the original chords in your ABC are safe!
When playing a tune with the metronome enabled, click Disable Metronome to return to the original version.
If you save the tune to .WAV or .MP3 while the metronome is enabled, the resulting audio file will have the metronome sound.
While most common tune meters are supported by the metronome system, if the tune you are playing is in a meter that is not supported, you will be presented with a alert explaining the issue and will only be able to play the original version.
If you would prefer larger Player controls, for example for use on mobile devices, open the Settings dialog and set the check on: Player uses large controls (easier to touch on mobile and tablet):

Saving .WAV, .MP3 or MIDI Files (Top)
From the Player, you can save out audio of your tune in either .WAV or .MP3 format as well as a MIDI file.
Click the Download .WAV button to download the audio for the current tune to your system in .wav format:
Click the Download .MP3 button to download the audio for the current tune to your system.
The bitrate for the MP3 file is set in the Settings dialog. Default is 192 kbit/sec.
This operation may take some time. The button label changes to Encoding .MP3 while the audio is being encoded.
To download all the tunes at once in .MP3 format with repeats and optional two-bar click intros, use the Export all Tunes as .MP3 feature in the Advanced Controls dialog.
Click the Download MIDI button to download a MIDI file for the current tune to your system:
Limits on Use of my Custom MIDI Instruments
The General MIDI specification only supports MIDI program numbers as high as 128.
My custom MIDI instruments start at MIDI program 129 and go up from there.
These custom instruments and program numbers can only be used by my ABC tool and are not interoperable with other ABC software.
In the exported MIDI file, any of my custom MIDI instrument program numbers will be remapped as follows:
129: Uilleann -> 109: Bagpipes
130: Smallpipes D -> 109: Bagpipes
131: Smallpipes A -> 109: Bagpipes
132: Sackpipa -> 109: Bagpipes
133: Concertina -> 22: Harmonica
134: Melodica -> 22: Harmonica
135: Cajun Accordion -> 21: Accordion
Muted voices using MIDI instrument 136 or "mute" will be changed to program 0 (Acoustic Grand Piano) and the volume set to zero.
Basic Controls (Top)
These buttons control how the notation and tablature is displayed:

Notation - Standard notation only.
Names - Shows standard notation and note names below.
Mandolin - Shows standard notation and tablature for Mandolin.
GDAD - Shows standard notation and tablature for GDAD-tuned Bouzouki.
CGDA - Shows standard notation and tablature for CGDA-tuned Mandola.
Guitar - Shows standard notation and tablature for standard EADGBE-tuned guitar.
DADGAD - Shows standard notation and tablature for DADGAD-tuned guitar.
Bass - Shows standard notation and tablature for EADG-tuned Bass.
So you don't have to use so many commas on the note names when notating bass, this tab style assumes that you'll use specify bass clef and use a two-octave key shift in the ABC:
K:D bass octave=-2
Whistle - Shows standard notation and fingering tablature for tin whistle in the key of D.
Note: For notes that go below D on of the whistle, the suggested "folded" octave-up fingerings are shown.
These buttons perform common operations on the ABC:

Transpose Down - Transposes the selected tunes down one semitone. Shift-click transposes down one full step. Alt-click transposes down one octave.
Transpose Up - Transposes the selected tunes up one semitone. Shift-click transposes up one full step. Alt-click transposes up one octave.
To transpose multiple tunes, just click anywhere in the first tune you want to transpose, and drag to select any part of additional tunes you want transposed.
To transpose all the tunes at once, select them all before clicking the Tranpose buttons.
Snapshot - Saves a snapshot of the contents of the ABC editor to browser storage.
If you save a snapshot and leave the tool, the next time you run the tool the snapshot will be available to restore by either clicking the Restore button on the main toolbar or the Restore from Snapshot button in the Add dialog.
Restore - If one is available, replaces the current contents of the ABC editor with the last saved snapshot from browser storage.
Since it completely replaces the contents of the ABC editor, you will be asked to confirm the operation.
Advanced - Shows the Advanced Controls dialog with several additional ABC filtering and display controls.
Sharing - Shows the Sharing Controls dialog with options for sharing your tunes via a share URL or QR code.
Clear - Clears the ABC Editor so you can start over.
Advanced Controls (Top)
Clicking the Advanced button brings up the ABC Transcription Tools Advanced Controls dialog:

Click the lightbulb icon to bring up this section of the user guide in a new browser tab.
Show/Hide ABC Features:
Hide/Show Annotations - Hides/Shows most ABC annotations like Composer, Discography, History, Tempo, etc. in the displayed notation.
Hide/Show Text - Hides/Shows any %%center or %%text based text annotations in the ABC in the displayed notation.
Hide/Show Chords + Injected Tab - Hides/Shows any chords present in the ABC in the displayed notation.
B/C Box, C#/D Box, and Anglo Concertina tablature are created using the ABC chord system, so also will be hidden.
The ABC filtering buttons are enabled if Annotations, Text, or Chords are detected in the ABC.
Strip ABC Features:
These commands are destructive in that they remove text from the current ABC.
It may be a good idea to save the current ABC or do a Copy All before using one of these commands if you want to quickly undo the operation.
Strip Annotations - Removes most ABC annotations like Composer, Discography, History, Tempo, etc. from the ABC.
Strip Text - Removes any %%center or %%text based text annotations from the ABC.
Strip Chords + Injected Tab - Removes any chords present in the ABC.
B/C Box, C#/D Box, and Anglo Concertina tablature are created using the ABC chord system, so also will be stripped.
When working with these tablatures, this is a quick way to clear out the current tablature before injecting new tablature.
The ABC stripping buttons are enabled if Annotations, Text, or Chords are detected in the ABC.
ABC Injection Features:
These commands are destructive in that they inject additional text into the current ABC.
It may be a good idea to save the current ABC or do a Copy All before using one of these commands if you want to quickly undo the operation.
Inject All PDF Annotations - Injects all available tool-specific PDF tunebook annotations for title page, table of contents, index generation, etc. at the top of the ABC.
Inject PDF Tunebook Annotation Template - Injects a useful template of common PDF tunebook annotations at the top of the ABC.
This allows you to control the abcjs soundfont used for playback of the tune.
Inject MIDI Soundfont, Melody Program, Chord Program, and Volumes - Injects MIDI Soundfont, Melody program, Chord program and volume annotation into one or all tunes.

Select your MIDI soundfont from the soundfont selection menu.
Select your MIDI instrument for the Melody and Bass/Chords from the instrument program selection menus.
To mute the Melody or Bass/Chords, select "Mute" from the instrument program selection menus.
You may select which of the MIDI parameters you want injected by clicking the checkboxes.
Select "Inject all tunes" to add the selected MIDI annotations to all tunes.
If "Inject all tunes" is not checked, the MIDI annotation is added at the current text insertion point.
Inject Metronome - Using the custom rhythm pattern feature, injects a playable metronome into one or all tunes based on the meter of the tune as specified in the M: tag.
Since the metronome uses the ABC chord system to do its job, adding a metronome strips any existing ABC chords, MIDI chord programs, and MIDI bass/chord volumes from the ABC before injecting the ABC for the metronome.
To disable an injected metronome, simply delete the injected "E" chord that starts it off.
Inject %%staffwidth - Prompts for a %%staffwidth value to inject at the text insertion point or into all tunes.
This can be used to change the scale of every tune both for display and PDF generation.
Generally values above 560 will make the tunes less tall.
Inject Repeats and Two-Bar Click Intros - Allows you to increase the number of times through each tune by duplicating the ABC for the tune.

Additionally, you may optionally inject a two-bar style-appropriate click intro at the top of each tune.
You will be prompted for how many times you want each tune to repeat. Default is 1.
Check Inject a two-bar style-appropriate click intro before each tune to add a two-bar click intro at the start of each tune.
For clean repeats, your tunes must not have extraneous pickup notes and must have proper and complete timing.
Important Requirement for 1st Part Repeats
If the 1st part of a tune has a :| repeat symbol at the end of it (or on a first ending), but not at the very start of the part, you will need to add the starting |: repeat bar symbol for the ABC to play correctly if there is more than one repetition through the tune.
The lack of a first repeat bar symbol in the ABC will make the first part of the tune on the second and repetitions appear to not repeat.
To Fix:
Add a |: repeat bar at the start of the tune.
The commands in light red inject additional ABC lyrics-based or ABC chord-based tablature into the ABC:
Inject Note Name Lyrics - Injects note names as lyrics in the ABC.
Inject B/C Box Tab - Injects B/C Box tablature into the ABC (uses ABC chord syntax).
Inject C#/D Box Tab - Injects C#/D Box tablature into the ABC (uses ABC chord syntax).
Inject Anglo Concertina Tab - Injects Anglo Concertina tablature into the ABC (uses ABC chord syntax).
Inject Bamboo Flute Tab - After requesting the bamboo flute key, injects numeric notation tab for the selected key into the ABC.

Configure Tablature Injection Settings - Brings up a dialog where you can configure all parameters for tablature injection.
Export all Tunes as .MP3 - Exports all the tunes in the ABC area as individual .mp3 files at the bitrate set in the Settings dialog.

You will be prompted for how many times you want each tune to repeat in the .MP3 file. Default is 1.
Check Inject a two-bar style-appropriate click intro before each tune to add a two bar click intro at the start of each .MP3 file.
This can be very useful for creating longer "play-along" recordings of tunes.
For clean repeats, your tunes must not have extraneous pickup notes and must have proper and complete timing.
Important Requirement for 1st Part Repeats
If the 1st part of a tune has a :| repeat symbol at the end of it (or on a first ending), but not at the very start of the part, you will need to add the starting |: repeat bar symbol for this feature to work when generating a .MP3 file with more than one repetition through the tune.
The lack of a first repeat bar symbol in the ABC will make the first part of the tune on the second and repetitions appear to not repeat.
To Fix:
Add a |: repeat bar at the start of the tune and regenerate the .MP3 file.
If you have tunes with chords, you can quickly create a backing track playing continously multiple times through the tune:
1: Mute the melody for all the tunes by clicking the Inject MIDI Melody button in the Advanced Controls dialog and select the Mute program.
2: Export all the tunes in the tunebook to .MP3 by clicking Export all Tunes as .MP3 in the Advanced Controls dialog, and when prompted enter the number of times through each tune.
Your browser may request permission to download multiple files.
During the batch export operation, click the export status dialog's Cancel button to stop the export.
Sort by Specific Tag - Brings up a dialog where you can sort the tunes based on a specified ABC tag:
Sort by Name (T:) - Sorts all the tunes by name alphabetically based on the value found in the first T: tag, ignoring an initial "The"
Sort by Name (T:) - Ignore "A"and "An" - This also sorts all the tunes by name, ignoring an initial "A" and "An" along with "The".
Sort by Key (K:) - This sorts all the tunes by the key value found in the first K: tag in the tune.
Sort by Meter (M:) - This sorts all the tunes by the meter value found in the first M: tag in the tune.
Sort order is: C|, C, 4/4, 6/8, 9/8, 12/8, 2/4, 3/4, 6/4, followed by any other meters found, grouped by meter.
ABC Transcription Tools Settings (Top)
Clicking the Settings button at the top of the tool brings up a dialog where you can set tool-wide settings:

Save an Auto-Snapshot on browser tab close or reload? (Restore it from the Add dialog) - (Desktop browsers only) When enabled, saves an Auto-Snapshot when closing or reloading the browser tab the tool is running in.
Full screen tune display scaling (percentage) - Sets the width in percentage of window width for the tune notation on the screen when viewing full screen. Default is 50%.
If the resulting scaled width is less than 850 pixels (820 pixels for iOS/Android) the width will be set to 850 pixels (820 pixels for iOS/Android).
Staff spacing (default is 10) - Allows you to set a wider or narrower gap between the staffs.
A value of 0 corresponds to an ABC %%staffsep of 40
Minimum value is -40 (corresponds to an ABC %%staffsep of 0)
Final rendered staff separation depends on the contents of ABC itself, for example the use of chords and other annotations may increase the staff spacing.
Experiment with this value until you get the result you want.
Show stringed instrument names on tablature (never shown in the Player) - Hides/Shows the instrument names and capo settings on the tablature.
When the tab instrument names are hidden, the spacing between the staves is somewhat reduced.
Hiding the tab names may, or may not, depending on the height of the staves, be useful for getting more staves on a single PDF page.
Stringed instrument capo fret postion - Allows you to set a capo setting from 0 to 12 frets for the Mandolin, GDAD, CGDA, or Guitar tab.
The following controls select default MIDI programs and volumes to use for the Melody, Bass, and Chords:
Default Melody MIDI program - Select your default MIDI instrument for the Melody from the instrument selection menu.
Default Bass/Chords MIDI program - Select your default MIDI instrument for the Bass/Chords from the instrument selection menu.
Enabling Use Default Melody and Bass/Chord programs when playing tunes will play tunes that don't have Melody or Bass/Chord programs already in the ABC with your preferred instrument sounds.
If a %%MIDI program or %%MIDI chordprog directive is already present in the tune when playing, it will take precedence over the default program values.
If a %%MIDI bassvol or %%MIDI chordvol directive is already present in the tune when playing, it will take precedence over the default volume values.
To force tune playback using your default programs and volumes if there are already %%MIDI directives in the ABC (useful for my Interactive PDF tunebooks):
Enabling Override all MIDI programs and volumes in the ABC when playing tunes will override any existing %%MIDI program, %%MIDI chordprog, %MIDI bassvol, and %MIDI chordvol values found in the ABC with your defaults when you play a tune.
This can be useful with my Interactive PDF tunebooks with built-in playback features if you want to use your preferred instrument sounds and volumes instead of the instruments and volumes set by the Interactive tunebook play link ABC.
For example, if you want to always use a Whistle sound for the Melody and a Piano sound for the Bass and Chords, set your default Melody instrument to Whistle and your default Bass/Chords instrument to Acoustic Grand Piano. Then enable Override all MIDI programs and volumes in the ABC when playing tunes.
To mute the melody, select the Mute program.
To mute the bass/chords, select the Mute program.
These settings values are saved to local browser storage when you close the dialog and are restored each time you run the tool.
Changing the Melody Volume
To change the Melody volume, add a dynamics indication such as !ppp!, !pp!, !p!, !mp!, !mf!, !f!, or !ff! immediately before the first note in the ABC.
Special Note on the Dulcimer (15) Instrument
Selecting the Dulcimer (15) program for either the melody or chords automatically sets all note release times to 4 seconds to allow the notes to ring.
This can be useful for tunes using solo melody instruments with long release times like Orchestral Harp (46) or Koto (107).
For those instruments played solo, set the melody instrument program as desired and the chord instrument program to Dulcimer (15).
In this case, you may not want to include any chords in the ABC, as they will be played using the Dulcimer (15) instrument.
This only applies if Use AppCordions custom sounds for Dulcimer, Accordion, Flute, and Whistle is enabled (see below).
Autoscroll player when playing - Check this if you want have the player autoscroll the notes into view while playing.
Player uses large controls (easier to touch on mobile and tablet) - Check this if you want to have larger controls in the Player view:

Default abcjs soundfont: - Choose between the three General MIDI soundfonts available in abcjs to use by default when playing tunes:
Fluid
Musyng Kite
FatBoy
On first run, the default is set to Fluid.
Each soundfont is a full General MIDI implementation, but has somewhat different sounds for each instrument.
If no %abcjs_soundfont soundfont is specified in a tune, the default soundfont chosen in the tool's Settings dialog is used.
For more details on the soundfonts, visit: midi-js-soundfonts on GitHub
Your default soundfont choice is saved in browser storage and restored the next time the tool is run.
Use AppCordions custom sounds for Dulcimer, Accordion, Flute, and Whistle
If this is enabled (on by default), for all soundfonts, my custom sampled instruments for Dulcimer, Accordion, Flute, and Whistle will override the soundfont sounds.
MP3 audio export bitrate (kbit/sec): - Sets the bitrate for MP3 stereo audio downloaded from the Player.
Default value is 224. Minimum value allowed is 96. Maximum value allowed is 384. Higher values result in higher quality audio.
Configure ABC Fonts - Brings up a dialog where you can configure all fonts used for rendering the ABC.
Configure Tablature Injection Settings - Brings up a dialog where you can configure all parameters for tablature injection.
Configure MusicXML Import - Brings up a dialog where you can configure all parameters for MusicXML import.
Details on MusicXML import settings below in the MusicXML Import Settings section.
Configuring ABC Rendering Fonts (Top)
Clicking the Configure ABC Fonts button in the tool settings dialog shows a subdialog where you can configure all the fonts used for rendering the ABC.

Values are saved in browser storage and restored the next time the tool is run.
For details on the use of each font, refer to the Custom Font Overrides information below.
Click Save to File to save the ABC rendering font settings to a file.
Click Load from File to load the ABC rendering font settings from a previously saved file.
Click Reset to Default to reset the ABC rendering font settings to their original defaults.
Choosing the MIDI Soundfont and Instruments for Playback (Top)
You may choose which instrument sounds are used for the melody and bass/chords when playing tunes.
By default, the melody and bass/chords instrument used is a piano.
You can specify which abcjs General MIDI soundfont to use for a specific tune by adding any of these three comment-based annotations in the ABC header for the tune:
%abcjs_soundfont fluid
%abcjs_soundfont musyng
%abcjs_soundfont fatboy
Each soundfont is a full General MIDI implementation, but has somewhat different sounds for each instrument.
If no %abcjs_soundfont soundfont is specified in a tune, the default soundfont chosen in the tool's Settings dialog is used.
It is not possible to change soundfonts within a tune.
If multiple instancs of %abcjs_soundfont are found in a tune, only the first one is used.
For more details on the soundfonts, visit: midi-js-soundfonts on GitHub
If Use AppCordions custom sounds for Dulcimer, Accordion, Flute, and Whistle is enabled in the Settings (on by default), for all soundfonts, my custom sampled instruments for Dulcimer, Accordion, Flute, and Whistle will override the soundfont sounds.
Choosing the Melody Instrument Sound
To choose the instrument used for the melody, add the following line to your ABC right after any headers and before the ABC notes, for example for an Accordion sound:
%%MIDI program 21
Example:
X: 1
T: The Kesh
R: Jig
M: 6/8
L: 1/8
K: Gmaj
%%MIDI program 21
D|: GAG GAB | ABA ABd | edd gdd | edB dBA |
GAG GAB | ABA ABd | edd gdB |1 AGF G2D :|2 AGF G2A||
|: B2B dBd | ege dBA | BAB dBG | ABA AGA |
B2 B dBd | ege dBd | gfg aga |1 bgg g2A :|2 bgg g2D |]
To change the instrument used for the melody, try changing the MIDI program # above to one of:
Piano: 0, Harpsichord: 6, Accordion: 21, Fingered Bass: 33, Harp: 46
By default, if you have chords in the ABC, the instrument used for the chord playback is a piano.
Choosing the Bass and Chord Instrument Sounds
To choose the instrument for the bass and chords, add the following line to your ABC right after any headers and before the ABC notes, for example for a Bass sound:
%%MIDI chordprog 34
Here's the same example where I've added the bass/chords instrument program selection:
X: 1
T: The Kesh
R: Jig
M: 6/8
L: 1/8
K: Gmaj
%%MIDI program 21
%%MIDI chordprog 34
D|: GAG GAB | ABA ABd | edd gdd | edB dBA |
GAG GAB | ABA ABd | edd gdB |1 AGF G2D :|2 AGF G2A||
|: B2B dBd | ege dBA | BAB dBG | ABA AGA |
B2 B dBd | ege dBd | gfg aga |1 bgg g2A :|2 bgg g2D |]
To change the instrument used for the bass/chords, try changing the MIDI chordprog # above to one of:
Piano: 0, Electric Piano: 5, Guitar: 25, Bass: 34, Synth Bass: 38
Changing the Playback Volume of the Melody, Bass, and Chords
To change the volume of the melody, add a dynamics indication in the ABC itself before all the notes.
For example, to make the melody very soft, you can inject a !ppp! pianissimo annotation:
!ppp! |:"Em"EBBA B2 EB|"Em"B2 AB dBAG|"D"F/E/D AD BDAD|"D"F/E/D AD BAGF|
Most standard dynamics indications are supported, for example: !ppp!, !pp!, !p!, !mf!, !f!
To completely mute the melody, change the MIDI Program to 136 (or mute):
%%MIDI program mute
To change the volume of the bass and chords, add the following two chordvol and bassvol %%MIDI directives immediately before any %%MIDI program and %%MIDI chordprog directives:
% Set the chord and bass volume (0-127)
%%MIDI chordvol 16
%%MIDI bassvol 16
%
% Use an Accordion sound when playing the melody:
%%MIDI program 21
%
% Use an Accordion sound when playing the chords:
%%MIDI chordprog 21
%
The volume range is from 0 to 127.
To completely mute the bass/chords, change the MIDI Program to 136 (or mute):
%%MIDI chordprog mute
The following MIDI instruments now use the same samples as my iOS "Celtic Sounds" and other apps:
Hammered Dulcimer: 15, Accordion: 21, Flute: 73, Whistle: 78, Uilleann Pipes: 129, Scottish Smallpipes (D): 130, Scottish Smallpipes (A): 131, Säckpipa: 132, Concertina: 133, Melodica: 134, Cajun Accordion: 135, Silence: 136 (or mute)
The Scottish Smallpipes (A) samples are from an instrument tuned in A, but the note numbers mapped to D so that they have the same transposed MIDI note range as the flute or whistle.
The Flute, Whistle (if Use AppCordions custom sounds for Dulcimer, Accordion, Flute, and Whistle in the Settings is enabled), and Uilleann pipes sounds will automatically "fold" notes below first octave D up an octave.
The Säckpipa and Scottish Smallpipes (A) and (D) sounds will automatically "fold" notes above second octave D down an octave.
Any General MIDI instrument program number can be selected for the melody and chord sounds.
General MIDI Instrument Program Numbers (Top)

Use program #136 Silence (or mute) to mute MIDI voices.
This can be used, for example, to create "Music Minus One" recordings consisting only of backing bass and chord tracks.
General MIDI Drum Sound ABC Note Map (Top)

Use program #128 (Percussion) on it's own voice for MIDI click tracks.
Custom Backup Rhythms (Top)
You may customize the backup rhythm used for any meter in a single tune with chords by adding the following comment-based directive anywhere in the tune's ABC:
%abcjs_boomchick meter rhythm_pattern_string partial_measure_threshold
This is particularly useful for meters that may have multiple commomly played subdivision groupings like 7/8 and 10/8.
Valid rhythm_pattern_string characters are:
B - Boom, b - Alternate Boom, c - Chick, and x - Silence.
Examples:
%abcjs_boomchick 5/4 Bxcbc 2
%abcjs_boomchick 5/8 Bxxbx 2
%abcjs_boomchick 7/8 Bccbxbx 3
%abcjs_boomchick 10/8 Bccbccbxbx 5
The number of characters in the pattern_string must match the meter numerator.
partial_measure_threshold sets how many beats must be present in a partial measure in the ABC to use the custom pattern.
partial_measure_threshold is optional and if not included, defaults to half of the meter numerator rounded down to the next lowest integer (minimum is 1).
If you have an incorrectly formatted %abcjs_boomchick directive in a tune, you will be alerted when trying to play the tune.
You may have multiple custom rhythm directives for different meters in a single tune.
If you have the same meter specified twice in custom rhythm directives in a tune, only the first one will be used.
This directive is specific to this tool and will not work with other ABC players.
Adding a Metronome Using Custom Backup Rhythms (Top)
If you want to practice a tune with a metronome, you can use the Inject Metronome feature on the Advanced Controls dialog to automatically inject a playable metronome into the tune.
The metronome pattern injected is based on the meter of the tune, as described in the tune's M: tag.
If you want more control, or want a metronome for a meter that isn't supported by the automatic metronome injector, it is very easy using the custom rhythm option and the appropriate choice of a percussion backup instrument to add a metronome to a tune.
This requires that the tune does not already have chords, as the metronome system uses the chord system to do its job.
For example, here's an example metronome pattern for a reel. You just need to add a single chord at the beginning of the tune to kick off the backup rhythm:
X: 1
T: Cooley's
R: Reel
M: 4/4
L: 1/8
K: Edor
C: Traditional
%
% Choose your soundfont
%abcjs_soundfont fatboy
%
% Use a custom 4/4 backup pattern to use as a metronome
%abcjs_boomchick 4/4 cBBB
%
% Use a piano sound for the melody
%%MIDI program 0
%
% Woodblock for backup metronome track
%%MIDI chordprog 115
%
% ABC for the tune, the single "E" chord at the beginning starts up the metronome:
%
|:"E"EBBA B2 EB|B2 AB dBAG|F/E/D AD BDAD|F/E/D AD BAGF|
EBBA B2 EB|B2 AB defg|afge dBAF|1 DEFD E3D:|2 DEFD E2gf||
|:eB (3BBB eBgf|eBB2 gedB|A/A/A FA DAFA|A/A/A FA defg|
eB (3BBB eBgf|eBBB defg|afge dBAF|1 DEFD E2gf:|2 DEFD E4|]
Try this example here: Reel Metronome Example
Here's an example metronome for a jig:
X: 1
T: The Kesh
R: Jig
M: 6/8
L: 1/8
K: Gmaj
C: Traditional
%
% Choose your soundfont
%abcjs_soundfont fatboy
%
% Use a custom 6/8 backup pattern to use as a metronome
%abcjs_boomchick 6/8 cxxcxx
%
% Use a piano sound for the melody
%%MIDI program 0
%
% Woodblock for backup metronome track
%%MIDI chordprog 115
%
% ABC for the tune, the single "E" chord at the beginning starts up the metronome:
%
|:"E"GAG GAB|ABA ABd|edd gdd|edB dBA|
GAG GAB|ABA ABd|edd gdB|AGF G3:|
|:BAB dBd|ege dBA|BAB dBG|ABA AGA|
BAB dBd|ege dBd|gfg aga|bgf g3:|
Try this example here: Jig Metronome Example
To disable an injected metronome, simply delete the injected "E" chord that starts it off.
Exporting a PDF Tunebook (Top)
The tool has a powerful built-in PDF tunebook generator that provides more flexibility than the browser's print feature, particularly in the area of adding custom page headers and footers, title page, table of contents, tune index, or adding a custom QR code.
It can format PDF tunebooks with one or multiple tunes per page, something the native browser's Print command cannot accomplish.
When you click Export PDF, the following dialog will appear where you select your PDF formatting preferences:

Paper Size:
Choose between Letter or A4 paper size:

Tune Layout:
Choose whether you want One Tune per Page, Multiple Tunes per Page, Tune Note Incipits, or ABC Incipits (unsorted or alphabetically sorted by tune name):

One Tune per Page: Each tune is placed on a new page in the PDF.
Multiple Tunes per Page: Tunes are added one after another down each page in the PDF.
Notes Incipits: Notation for the first line of each tune is added one after another down each page in the PDF.
ABC Text Incipits: First few bars of the ABC each tune is added one after another down each page in the PDF.
ABC Text Incipits Sorted: First few bars of the ABC each tune is added one after another down each page in the PDF in tune name sorted order.
Default is: One Tune per Page
When exporting multiple tunes per page to PDF the tool will do its best to layout the output to not split tunes between pages, unless the tune itself is longer than one page.
When exporting multiple tunes per page, if you want to manually force a tune to a new page in the PDF, add:
%%newpage
on a new line immediately at the end of tunes after which you want to force a page break.
This will allow you to easily format a tune book where you want to override the automatic tune layout.
PDF Tunebook Notes Incipits:
Exporting a PDF tunebook with notes incipits allow you create a "cheat sheet" for the tunebook that includes just the notation for first line of each tune.
The tune notes incipits can be in standard notation or any of the available tablatures.
Tune notes incipits are generated stripping all ABC annotation and for tablature, hiding the tablature name to try and fit as many tunes on one page as possible.
Additionally, manually inserted %%newpage requests are ignored for incipit generation.
PDF Tunebook ABC Incipits:
Exporting a PDF tunebook with ABC incipits allow you create a "cheat sheet" for the tunebook that includes just the first few measures of the ABC for each tune.
Page Number Location:

Choose between: None, Top Left, Top Center, Top Right, Bottom Left, Bottom Center, Bottom Right, Alternating Top Left/Right, Alternating Top Right/Left, Alternating Bottom Left/Right, or Alternating Bottom Right/Left.
The Alternating Left/Right and Alternating Right/Left settings alternate the location between the left/right or right/left sides of the page for printing on both sides of the paper.
Default is: None
Page Number on First Page:

Check this if you want the page number to be shown on the first page with tunes in the PDF.
Page numbers are not added to title pages, table of contents, index, or QR code pages.
Default is: On
PDF Tunebook Additions Font Settings
The following two settings control the font and font style for the PDF tunebook Title Page, Table of Contents, Index, Page Headers/Footers, Page Numbers, Text Incipits, and QR Code label.
These settings do not change the fonts in the ABC notation itself, those are configured in the Settings dialog Configure ABC Fonts sub-dialog.
Font:

Choose between: Times, Helvetica, or Courier.
Default is: Times
Font Style:

Choose between: Normal, Bold, Oblique, or Bold Oblique.
Default is: Normal
PDF Font Override Settings (Top)
You may override the font and font style set in the PDF Tunebook Export dialog to be used for the PDF title page, page headers/footers, table of contents, index pages, page numbers, text incipits, and QR code label by adding the following ABC comment-based annotation anywhere in the ABC:
%pdffont fontname fontstyle
Valid fontname values are: Times, Helvetica, and Courier.
Valid fontstyle values are: Normal, Bold, Oblique, and BoldOblique.
You can leave the style value blank for the Normal style.
This allows you to make sure a tunebook PDF always gets generated with a specific font and style.
PDF Quality Setting (Top)
You may set the quality of the PDF output by adding the following ABC comment-based annotation anywhere in the ABC:
%pdfquality quality_value
Where quality_value is a floating point value.
The default value is 0.75 (high quality)
Lower values will create lower resolution PDF notation output and smaller PDF file size.
A value of 1.0 will produce the maximum quality.
A value of 0.5 will still produce good-quality PDF notation at about half the PDF file size of the maximum quality.
A pdfquality value of 0.25 can be used to produce draft quality output with even smaller PDF file size.
PDF Tunebook Tune Size and Layout Spacing Overrides (Top)
You can also make individual tunes render smaller (or larger) both on screen and in exported PDF tunebooks by adding:
%%staffwidth desired_width
Immediately after the X: tag for a tune.
The default value is 560
To make the tunes less tall, a good value to start out with is setting desired_width to 730
Play with changing that 730 value until you get the output result you want.
This can be used to layout more tunes per PDF page.
You may also control the spacing between tunes in the PDF output by adding the following ABC comment-based annotation anywhere in the ABC:
%pdf_between_tune_space spacing_value
Where spacing_value is an integer in 1/72" increments.
The default value is 20
Smaller values will reduce the space between the tunes in the PDF.
Larger values will increase the space between the tunes in the PDF.
This value is used in the layout of multiple tunes per page.
For the most compact PDF layout possible to maximize the number of tunes per page when generating a PDF, set the value to zero:
%pdf_between_tune_space 0
The Staff spacing value in the ABC Transcription Tools Settings dialog can be easily overridden by setting a %%staffsep value in the ABC just below the tune header.
This can be very useful particularly for getting as much tab notation on a single page as possible.
Any spacing overrides must be applied on a tune-by-tune basis.
For the absolute minimum spacing between staffs, turn off the tab names, hide the tune annotations, and add the following just below the tune header:
%%staffsep 0
Try experimenting with different %%staffsep values until you get the result you want.
Setting the %%staffsep value manually too low may sometimes result in overlapping staff rendering.
To override the default space between the title and the first staff of music, you can add a custom %%musicspace value in the ABC just below the tune header, for example:
%%musicspace 10
Try experimenting with different %%musicspace values until you get the result you want.
Here is the full list of ABC spacing-related parameters available in abcjs:
%%topspace
%%titlespace
%%subtitlespace
%%composerspace
%%musicspace
%%partsspace
%%vocalspace
%%wordsspace
%%textspace
%%staffsep
%%sysstaffsep
Please refer to the official ABC 2.1 specification for more details.
Another good reference is this handy ABC 2.1 Quick Reference Card put together by Stephen Merrony:
Adding a PDF Title Page (Top)
To add a title page to your PDF tunebook, simply add the following comment-based annotation anywhere in the ABC:
%addtitle (title text)
To add a smaller subtitle below the title on the title page, simply add the following comment-based annotation anywhere in the ABC:
%addsubtitle (title page subtitle text)
Note: The subtitle only appears if a title page is requested.
For a title page with just a subtitle and no subtitle, just enter %addtitle with no text after it and then add %addsubtitle with your subtitle text.
To add a title page to your PDF tunebook as a hyperlink, simply add the following comment-based annotation anywhere in the ABC:
%urladdtitle URL (title text)
To add a smaller subtitle as a hyperlink below the title on the title page, simply add the following comment-based annotation anywhere in the ABC:
%urladdsubtitle URL (title page subtitle text)
Examples:
%urladdtitle http://michaeleskin.com Tunebook Title with Hyperlink
%urladdsubtitle http://michaeleskin.com/abc Tunebook Subtitle with Hyperlink
Note: The URL must begin with either http:// or https:// to be recognized as a hyperlink.
Only the first instance of the %addtitle, %addsubtitle, %urladdtitle, and %urladdsubtitle annotations are processed, any additional instances are ignored.
Adding a PDF Tunebook Table of Contents and Index (Top)
To add a table of contents to the start of of your PDF tunebook listing each tune name and page number in the same order the tunes appear in the ABC along with hyperlinks to each tune, simply add the following comment-based annotation anywhere in the ABC:
%addtoc (table of contents title text)
To append an sorted tunebook table of contents to the start of your PDF tunebook listing each tune name and page number in alphabetical order by tune name along with hyperlinks to each tune, simply add the following comment-based annotation anywhere in the ABC:
%addsortedtoc (sorted table of contents title text)
Tune names that start with "The" will have the "The" moved to the end of the tune name before the sorting.
To add a hyperlink (displayed as <<) on the left side of each page that links back to the tunebook table of contents, simply add the following comment-based annotation anywhere in the ABC:
%addlinkbacktotoc
To add some text above the table of contents pages as a page header, simply add the following comment-based annotation anywhere in the ABC:
%tocheader (table of contents page header text here)
Unlike standard page headers, the table of contents page headers do not support macro expansion.
To append an unsorted tunebook index to the end of your PDF tunebook listing each tune name and page number in the same order they are in the ABC along with hyperlinks to each tune, simply add the following comment-based annotation anywhere in the ABC:
%addindex (index unsorted title text)
To append an sorted tunebook index to the end of your PDF tunebook listing each tune name and page number in alphabetical order by tune name along with hyperlinks to each tune, simply add the following comment-based annotation anywhere in the ABC:
%addsortedindex (sorted index title text)
Tune names that start with "The" will have the "The" moved to the end of the tune name before the sorting.
Only the first instance of the %addtoc, %addsortedtoc, %addindex, and %addsortedindex annotations are processed, any additional instances are ignored.
If you want to suppress having the hyperlinks added from the table of contents or index page entries to the tunes, simply add the following comment-based annotation anywhere in the ABC:
%no_toc_or_index_links
To add a hyperlink (displayed as >>) on the right side of each page that links back to the tunebook index, simply add the following comment-based annotation anywhere in the ABC:
%addlinkbacktoindex
To add some text above the index pages as a page header, simply add the following comment-based annotation anywhere in the ABC:
%indexheader (index page header text here)
Unlike standard page headers, the index page headers do not support macro expansion.
Table of Contents and Index Font Size and Line Spacing Overrides (Top)
You may override the top offset to title, offset from title to the index or table of contents entries, default tune name font sizes and line spacing, by adding the following comment-based annotations anywhere in your ABC:
Table of Contents offset and font overrides:
%toctopoffset (top offset) - 72 dpi offset from the page header for the top of the table of contents title. Default is 30.
%toctitleoffset (title offset) - 72 dpi offset from the title to the first entry in the table of contents. Default is 35.
%toctitlefontsize (font size) - Font size for the table of contents title. Default is 18.
%tocfontsize (font size) - Font size for tune names in the table of contents. Default is 13.
%toclinespacing (line spacing) - Line spacing for tune names in the table of contents. Default is 12.
Index offset and font overrides:
%indextopoffset (top offset) - 72 dpi offset from the page header for the top of the index title. Default is 30.
%indextitleoffset (title offset) - 72 dpi offset from the title to the first entry in the index. Default is 35.
%indextitlefontsize (font size) - Font size for the index title. Default is 18.
%indexfontsize (font size) - Font size for tune names in the index. Default is 13.
%indexlinespacing (line spacing) - Line spacing for tune names in the index. Default is 12.
As with all previously described annotation, only the first instance these annotations are processed, any additional instances are ignored.
PDF Page Headers and Footers (Top)
You may add custom page headers and footers to your exported PDF files by including the following ABC comment-based annotations anywhere in your ABC:
%pageheader (header text)
%pagefooter (footer text)
If you'd like to link to a specific URL when users click in the PDF page header or footer, include either the following ABC comment-based annotations anywhere in your ABC:
%urlpageheader (URL) (header text)
%urlpagefooter (URL) (footer text)
Examples:
%urlpageheader http://michaeleskin.com/abc Click in this page header to visit my home page
%urlpagefooter http://michaeleskin.com/abc Click in this page footer to visit my home page
Note: The URL must begin with either http:// or https:// to be recognized as a hyperlink.
There are also several useful user macros you can include in your page header or footer text that will be expanded in the PDF:
$PDFNAME - Matches the saved PDF filename
$PAGENUMBER - Current page number
$DATEMDY - Current date in M-D-Y format
$DATEYMD - Current date in Y-M-D format
$TIME - Current time in HH:MM format
$TUNECOUNT - Number of tunes in the ABC
$TUNENAMES - All of the tune names in the ABC separated by /
The tune names width is limited to about 70 characters before it will append "+ (remaining number of tunes) more" to the first few tune names.
Example ABC with page header and page footer annotations that include user macros:
%pageheader "The Tarbolton" from the Michael Coleman set - Saved on $DATEMDY at $TIME
%pagefooter $PDFNAME - Page $PAGENUMBER
X:1
T:The Tarbolton
M:4/4
K:Edor
Beed e2BA|GBAF GFEF|Dddc d2AG|FAGE FEDF|
Eeed efge|fedf e2BA|GABG FGAF|BGAF GEE2:|
|:gfef gebe|gebe gfec|d2fd Adfd|cdAG FDEF|
GABG FGAF|E2ef gfed|BcdB A2FA|BGAF GEE2:|
Results in a PDF that looks like this:

Note: Only the first instance of the %pageheader or %pagefooter annotation is processed, any additional instances are ignored.
Page numbers can be added along with page headers and footers.
If you add a page header and you have selected top-centered page numbers, the page number will be hidden.
If you add a page footer and you have selected bottom-centered page numbers, the page number will be hidden.
Since these annotations are ABC comment-based, they will just appear to be normal comments in other ABC software.
Forcing a Specific Filename for PDF Export
If you want to force a specific filename to be used by default every time you export the PDF file, add the following comment-based directive anywhere in the ABC:
%pdfname your_pdf_filename_here
PDF Tunebook Hyperlinks and Automatic Play Links (Top)
Example of using the tune playback hyperlinks and other advanced features:
Adding an external website hyperlink to a specific tune:
The tool can add hyperlinks to external websites to the tune notation in a PDF tunebook.
Tune hyperlinks are available for tune notation and tune incipits tunebooks, and are not available for ABC text incipit tunebooks.
When a hyperlink is present, touch the title of the tune and you will automatically launch the associated tune hyperlink.
To add a hyperlink to an external website in any tune, add the following comment-based annotation anywhere in the ABC for a specific tune:
%hyperlink URL
Examples:
%hyperlink http://michaeleskin.com
%hyperlink https://cnn.com
Adding a playback hyperlink to a specific tune:
To add a hyperlink back to the ABC Transcription Tools for playing a specific tune with specific General MIDI instrument program number sounds for the melody and the bass/chords, add the following comment-based annotation anywhere in the ABC for a specific tune:
%add_playback_link MELODY_PROGRAM BASS_CHORD_PROGRAM
The MELODY_PROGRAM and BASS_CHORD_PROGRAM are optional.
If not specified, they will first be set by the programs specified in an %add_all_playback_links annotation if found in the ABC.
If not specified, and no %add_all_playback_links is present in the ABC, the values will be set to the default instrument program number settings for playback in the Settings dialog.
Some MIDI program numbers I recommend for the melody:
Piano: 0, Harpsichord: 6, Accordion: 21, Fingered Bass: 33, Harp: 46
Some MIDI program numbers I recommend for the bass/chords:
Piano: 0, Electric Piano: 5, Guitar: 25, Bass: 34, Synth Bass: 38
Example: To have a specific tune played with an Accordion sound on the melody and a Piano sound on the chord/bass
X:1
T:The Tarbolton
M:4/4
K:Edor
%add_playback_link 21 0
Beed e2BA|GBAF GFEF|Dddc d2AG|FAGE FEDF|
Eeed efge|fedf e2BA|GABG FGAF|BGAF GEE2:|
|:gfef gebe|gebe gfec|d2fd Adfd|cdAG FDEF|
GABG FGAF|E2ef gfed|BcdB A2FA|BGAF GEE2:|
Adding a thesession.org hyperlink to a specific tune:
To add a hyperlink to a specific tune to the thesession.org search page for the tune title, add the following comment-based annotation anywhere in the ABC for a specific tune:
%add_link_to_thesession
Example:
X:1
T:The Tarbolton
M:4/4
K:Edor
%add_link_to_thesession
Beed e2BA|GBAF GFEF|Dddc d2AG|FAGE FEDF|
Eeed efge|fedf e2BA|GABG FGAF|BGAF GEE2:|
|:gfef gebe|gebe gfec|d2fd Adfd|cdAG FDEF|
GABG FGAF|E2ef gfed|BcdB A2FA|BGAF GEE2:|
Precedence order for multiple manually added hyperlinks on one specific tune is website hyperlinks take highest priority, then playback hyperlinks, then thesession.org hyperlinks.
Adding playback hyperlinks to every tune in a PDF tunebook:
You may automatically add a hyperlink for every tune back to the ABC Transcription Tools for playing the tune with a specific General MIDI instrument program number sound for the melody and the bass/chords by adding the following comment-based annotation anywhere in the ABC file:
%add_all_playback_links MELODY_PROGRAM BASS_CHORD_PROGRAM
The MELODY_PROGRAM and BASS_CHORD_PROGRAM are optional.
If not specified, the values will be set to the current default instrument program number settings for playback in the Settings dialog.
Some MIDI program numbers I recommend for the melody:
Piano: 0, Harpsichord: 6, Accordion: 21, Fingered Bass: 33, Harp: 46
Some MIDI program numbers I recommend for the bass/chords:
Piano: 0, Electric Piano: 5, Guitar: 25, Bass: 34, Synth Bass: 38
Example: To have all tunes played with an Accordion sound on the melody and a Piano sound on the chords/bass:
%add_all_playback_links 21 0
Adding thesession.org hyperlinks to every tune in a PDF tunebook:
You may automatically add a hyperlink for every tune to the thesession.org search page for the tune title by adding the following comment-based annotation anywhere in the ABC file:
%add_all_links_to_thesession
%add_all_playback_links takes precedence for all tunes over %add_all_links_to_thesession
Any manually added tune hyperlinks, thesession.org hyperlinks, or playback hyperlinks take precedence over automatically generated thesession.org or playback hyperlinks.
Example: Creating a PDF tunebooks with some advanced features
Here is a good starting template of annotations for creating a tunebook that includes:
Sets the font to Times for the title page, table of contents, index, page headers/footers, page numbers, and text incipits.
Sets the PDF quality to the default (.75 = High quality). This can be reduced to create smaller, but lower quality PDF files.
Sets the spacing between tunes for multiple tunes/page to the default of 20/72". Change this to 0 for minimal space between PDF tunes.
Title page with sub-title
Table of contents linked to each tune
<< Link back on each page to the table of contents
Sorted index linked to each tune
>> Link back on each page to the index
Page headers
Page footers
Playback links on every tune title selecting an Piano sound for the melody and a Piano sound for the bass/chords
QR code with hyperlink and caption at the end of the tunebook
%pdffont Times
%pdfquality .75
%pdf_between_tune_space 20
%addtitle Tunebook Title
%addsubtitle Tunebook Subtitle
%addtoc Table of Contents
%addlinkbacktotoc
%addsortedindex Index
%addlinkbacktoindex
%pageheader This is the Page Header
%pagefooter This is the Page Footer
%add_all_playback_links 0 0
%qrcode http://michaeleskin.com
%caption_for_qrcode Click or Scan to Visit my Home Page
You can instantly inject this useful starter set of PDF annotations at the top of your ABC by clicking the Add PDF Tunebook Annotations button in the Add dialog.
Custom Font Overrides (Top)
As per the ABC 2.1 specification, custom font overrides are possible, giving you maximum control over the appearance of your notation.
Available ABC Inline Font Annotations:
%%titlefont font-style size (used for the first title of the tune)
%%subtitlefont font-style size (used any additional titles for the tune)
%%infofont font-style size (used for rhythm string at the left side of the staff)
%%composerfont font-style size (used for the composer string at the right side of the staff)
%%tempofont font-style size (used for the tempo indication)
%%gchordfont font-style size (used for "G", "Em", etc., style chords symbols)
%%tabnumberfont font-style size (used for tablature numbers)
%%historyfont font-style size (used for for Z:, H:, and other descriptive metadata tags)
%%textfont font-style size (used for any %%text or %%center text)
%%annotationfont font-style size (used for "^*" and "_*" chord-like tablature annotations)
%%voicefont font-style size (multiple voice staff labels)
%%partsfont font-style size (used for P:)
%%vocalfont font-style size (used for for w:)
%%wordsfont font-style size (used for W:)
Generally, these will use the PostScript font-style naming convention, for example:
Times, Helvetica, Courier, Verdana, Times-Bold, Helvetica-Italic, etc.
The size parameter should be an integer, but is optional.
Place your font override annotations just below the X: and above the T: ABC tune headers.
Inline font annotations will override the default font settings configured in the tool's Settings dialog.
For example:
X: 1
%%titlefont Palatino 30
%%infofont Palatino 18
%%gchordfont Palatino Bold 14
T: The Road to Lisdoonvarna
R: slide
M: 12/8
L: 1/8
K:Edor
D|:"Em"E2B B2A B2c d3|"D"F2A ABA D2E FED|
"Em"E2B B2A B2c d3|"D"cdc B2A "Em"B2E E3:|
|:"Em"e2f gfe "Bm"d2B Bcd|"A"c2A ABc "Bm"d2B B3|
"Em"e2f gfe "Bm"d2B Bcd|"A"cdc B2A "Em"B2E E3:|
Result:

Note: If a font change doesn't appear to happen immediately, force a full refresh by opening the controls, changing the display format, for example from notation to one of the tab options and then back to notation.
That will force a full page refresh and the new fonts will be used.
Web Safe Fonts
The following "web safe" fonts at a minimum should be supported by all browsers:
Helvetica (sans-serif)
Trebuchet MS (sans-serif)
Gill Sans (sans-serif)
Verdana (sans-serif)
Times New Roman (serif)
Georgia (serif)
Palatino (serif)
Baskerville (serif)
Courier (monospace)
Monaco (monospace)
Bradley Hand (cursive)
Font availability varies with browser and platform. Many other fonts may be available on your system.
More information is available here:
Injecting ABC Lyric-based Note Names Into the ABC Tunes (Top)
Clicking Inject Note Names Lyrics in the Advanced Settings dialog will inject an ABC lyrics line under each ABC line using the w: directive that will put the ABC note name under each note in the notation for all the tunes.
For example:
GAG GAB | ABA ABd | edd gdd | edB dBA |
w: G A G G A B A B A A B d e d d g d d e d B d B A
The injected ABC lyrics are literally the same as the ABC so has no idea about sharps or flats, just the note letters. You may have to fix those manually.
It is a destructive operation, so you might want to click Copy All before trying this operation.
Also, it will in some circumstances mess up the notation formatting, so try it, if it works, great, hopefully it saves you some time compared to doing the work manually.
f you want the note names in a different font, style, or size, change the %%vocalfont directive injected for you immediately after the X: tag in each tune, for example:
X:1
%%vocalfont Verdana 14
You can use any of the fonts, styles, and sizes as described above in the "Web Safe Fonts" section.
Injecting B/C Box, C#/D Box, Anglo Concertina, or Bamboo Flute Tablature Into the ABC Tunes (Top)
You may inject Box or Anglo Concertina tablature into the ABC using the following buttons in the Advanced Controls dialog:
Inject B/C Box Tab - Injects B/C Box tablature into the ABC.
Inject C#/D Box Tab - Injects C#/D Box tablature into the ABC.
Inject Anglo Concertina Tab - Injects Anglo Concertina tablature into the ABC.
Inject Bamboo Flute Tab - After requesting the bamboo flute key, injects numeric notation tab for the selected key into the ABC.

To configure the tablature fonts and other settings, first click the tool's Settings button, then click the Configure Tablature Injection Settings button at the bottom of the dialog to bring up the tablature injections settings dialog:

You can also Shift-click the Settings button to go directly to the tablature settings dialog.
Common Box, Anglo Concertina, and Bamboo Flute tablature settings:
Font family - Font used for all text injected into the tablature.
Tablature font size - Font size used for the injected tablature text and symbols.
%%staffsep value - Sets spacing between the staves.
%%musicspace value - Sets spacing between the title and the staves.
Character(s) for Push indication - Sets the character used in the Box and Anglo Concertina tablature to indicate a bellows push.
Character(s) for Draw indication - Sets the character used in the Box and Anglo Concertina tablature to indicate a bellows draw.
Note: Setting either value blank restores the original default "↓" for Push and "↑" for Draw character values.
Use a bar over button name to indicate Draw (overrides Push and Draw characters) - If checked, draws a bar over the button name for a bellows Draw and no bar for bellows Push.
If checked, overrides the use of the Push or Draw characters entered above.
Select your preferred tablature position relative to the notation (Above or Below) from the selection menu.
When injecting tablature below the notation, you have the option to strip all existing chords and tablature from the ABC before injecting the new tab.
Injecting tablature above the notation always strips existing chords and tablature from the ABC before injecting the new tab.
Anglo Concertina-specific settings:
Select your instrument style: (Jeffries or Wheatstone) from the Concertina style selection menu.
Select your preferred fingering solution from the Preferred fingerings selection menu:
On-Row:
Jim Van Donsel's original fingering solution, favors center row:
Favors playing D5 and E5 on the right-side C-row.
For Jeffries-style instruments:
Favors right-side top-row 2nd button for C#5 and D#5.
Cross-Row:
A more cross-row friendly fingering solution:
Favors playing the D5 and E5 on the left-side G-row.
Favors playing C5 on the left-side G-row draw.
Favors playing B4 on the right-side C-row draw.
For Jeffries-style instruments:
Favors right-side top-row 2nd button for C#5 and D#5.
Configure Anglo Concertina Tablature Button Names - Brings up a dialog where you can set the names of the buttons used for Anglo Concertina tab generation:

Click Reset to Default to reset the button names to the original tool values (L1, L2, L3, ...).
Values are saved in browser storage and restored the next time the tool is run.
Reading the Box Tablature (Top)
B/C Box - Shows standard notation and tablature for a standard 21-button B/C tuned box.
The button numbers and pitches used for the tablature match those on this chart:

Notes on the C-row are indicated by numbers: 1, 2, 3, ...
Notes on the B-row are indicated by numbers in circles: ①, ②, ③, ...
Push is indicated with a "↓" arrow by default (configurable in the Box and Anglo Concertina Tablature Settings dialog).
Draw is indicated with an "↑" arrow (configurable in the Box and Anglo Concertina Tablature Settings dialog).
C#/D Box - Shows standard notation and tablature for a standard 21-button C#/D tuned box.
The button numbers and pitches used for the tablature match those on this chart:

Notes on the D-row are indicated by numbers: 1, 2, 3,...
Notes on the C#-row are indicated by numbers in circles: ①, ②, ③, ...
Push is indicated with a "↓" arrow (configurable in the Box and Anglo Concertina Tablature Settings Dialog).
Draw is indicated with an "↑" arrow (configurable in the Box and Anglo Concertina Tablature Settings Dialog).
Assumptions about the B/C and C#/D Box tablature solutions:
The tablature solution assumes that the "magic" notes (E and B on a B/C, F# and C# on a C#/D) that are available on both rows, will be played on the C-row on a B/C box and on the D-row on a C#/D box.
Use of the B/C and C#/D Box tablatures on a 23-button instrument:
If you are playing a 23-button instrument, you will need to shift your start position one button higher when playing.
Consider your first button as "button zero".
Tablature Injection Known Issues and Limitations
Fails when converting multi-voice tunes:
For best results, use source ABC tunes that have a single voice. (i.e. no V: tags)
Unpredictable results or a failure to complete the fingering generation may occur with multi-voice ABC files.
(Anglo Concertina-only) Button direction missing for some less-often used accidentals:
After fingering generation, some less-often used accidentals like _E in certain keys may show the correct button, but are missing their direction in the ABC.
If you see missing directions on any notes, review the ABC in the ABC editor and correct the direction manually by copying and pasting either a push "↓" or draw "↑" arrow (or other desired symbol) for the missing direction.
Tunes with key changes mid-tune may not generate correct tablature after the key change:
The tablature solutions only use the original key of the tune.
If the key changes mid-tune, the tablature solution after that point may not be correct.
Tunes with [GBd] style chords in square brackets do not generate the correct tablature:
You'll need to reduce these down to a single note for the tool to work.
Reading the Anglo Concertina Tablature (Top)
Wheatstone Layout

Jeffries Layout

Tablature Button Names

Push is indicated with a "↓" arrow by default (configurable in the Box and Anglo Concertina Tablature Settings dialog).
Draw is indicated with an "↑" arrow by default (configurable in the Box and Anglo Concertina Tablature Settings dialog).
MusicXML Import Settings (Top)

You can also Alt-click the Settings button to go directly to the MusicXML import settings dialog.
Bars-per-line: Sets the number of bars per line. Every line of ABC will have the specified bars (measures). When both Character-per-line and Bars-per-line options are given, Bars-per-line is ignored.
Characters-per-line: Sets the maximum line length for ABC output to CPL characters. The default is 100 chars per line. An integer number of bars, at least one, is always output. How many bars fit into the maximum line length is calculated from the note line, not from the lyric lines. Line- and page breaks in MusicXML are translated to '$' after the previous barline [or volta number]
Measure numbers: -1: No measure numbers, 1..n: Number every n-th measure, 0: Number every system.
Unfold repeats: Turns off repeat translation and unfolds simple repeats instead.
Credit text filter (level 0-6): Sets the filter level of the credit filter. This filter tries to eliminate redundant T: fields. The level C goes from 0 (default) to 6 (no filtering). A higher level does less filtering. The default filters as much as possible and only includes the xml credit elements if no title of movement-title is found. Level 6 does no filtering and includes all xml credit elements as T: fields.
Denominator unit length for L: tags: Sets the unit length for the ABC output to L:1/value. This overrides the computation of the optimal unit length per voice.
%%MIDI options: 0: No MIDI, 1: Only program, 2: All MIDI.
No score line breaks: Disables translation of xml line breaks. No abc score line breaks ($) will be output.
No pedal directions: Disables translation of xml pedal elements.
All directions to first voice: Allocates all XML staff directions to the first voice of the staff. Normally a staff direction is allocated to the voice of the next note after the direction (if any).
Translate stem directions: Translates stem directions present in the XML.
Click Reset to Default to reset the MusicXML import settings to their original defaults.
Values are saved in browser storage and restored the next time the tool is run.
MusicXML Formatting Fixes (Top)
Formatting issues with imported multi-voice MusicXML files, at least as I have observed, generally are caused by inconsistent bars-per-line in the MusicXML conversion output ABC.
They are generally simple to fix:
Open the ABC in a text editor (I use SublimeText) and isolate each voice. (V:1, V:2, etc.)
Join all the lines in each voice (SublimeText has a "Join Lines" command) so that each voices is now one long line of ABC instead of on multiple lines.
Alternately, you could put the ABC line continuation character \ at the end of every line in each voice.
Add:
%%barsperstaff 3
to the top of the ABC just under the X: tag. This forces the number of bars per staff to be 3.
That causes abcjs to reflow the notation correctly.
Try larger numbers of measures per staff, and see if the right side of the staff line up, I found that 3 was a good number for most cases.
Here is an example:
J.S. Bach - Goldberg Variation #1
Sharing Tunes with Share URLs and QR Codes (Top)
Clicking the Sharing button brings up the ABC Transcription Tools Sharing Controls dialog:

Share URLs and QR Codes are a quick and easy way to share your ABC tunes with friends or to post tunes on social media sites.
Anyone with the Share URL or QR Code can view, edit, save, and share their own copy of the tunes.
Share URLs and QR Codes also include the instrument selected, whether or not to show the top bar and links, display size, line spacing, PDF tunes/page setting, page number position, and page number on first page settings.
For Mandolin, Bouzouki, Mandola, and Guitar tablature, the link also includes the capo setting and whether or not to show the tablature name.
Share URL: Copying and pasting this link in a browser address bar will open the ABC Tools website and copy in the tune set ABC and tablature settings.
If the Share URL link is too long to work in most browsers, the Share URL buttons will be disabled and you will see a message suggesting sharing fewer tunes.
Test Share URL - Opens the Share URL in a new browser tab.
Copy Share URL - Copies the Share URL to the system clipboard so you can easily paste it into social media posts, emails, or other tools.
Save Share URL - Saves the Share URL to a text file.
The saved file will be in your browser's Downloads directory.
On iOS the downloaded files will be found in the "Downloads" directory in the iOS "Files" app.
Shorten URL - Shortens the Share URL using TinyURL automatically if possible, or if not, assists with the URL shortening process.
Generate QR Code - Once an Share URL is generated, if it is short enough to fit in a QR code (less than 2600 characters), this button is activated.
The QR Code is a visual representation of an Share URL that you can scan with the Camera app on your iOS or Android device.
Clicking the button will generate a QR code in .PNG format for the Share URL and open it in a new browser tab.
Even if the button is greyed out, Shift-click of the Generate QR Code button will attempt to generate a QR code for whatever text is present in the Share URL box.
This can be useful for generating QR codes from TinyURL shortened Share URL links or for other arbitrary website URLs.
If the arbitrary text in the Share URL box is too long to generate a QR code, the tool will display an alert.
In the newly opened tab, you can click the link below the image to save the QR code to your system.
Shortening Share URLs (Top)
Automatic URL shortening using TinyURL:
Assisted TinyURL URL shortening if automatic shortening fails:
Share URLs can get pretty long, particularly for large sets of tunes.
A third-party service like TinyURL can be used to shorten Share URLs.
To get a shortened URL for the Share URL, click Shorten URL.
The tool will attempt to call TinyURL directly first to get a shortened Share URL.
If it succeeds, it will copy the shortened Share URL to the system clipboard and also show the result in a dialog.
If it fails (most likely the tool has used up all available free URL shortening sessions for the month), the tool will help you manually get a shortened URL by automatically copying the full Share URL to the system clipboard and then launching TinyURL in another browser tab.
Paste the already copied full Share URL into the TinyURL "Enter long link" box and click Shorten URL.
You may have to agree to the TinyURL terms-of-service before you can shorten the URL.
Copy the shortened URL from TinyURL and paste it into emails or share it on social media.
For example, here is a set of polks from "Sliabh Notes" as a shortened Share URL:
TinyURL also allows you to create and save a simple QR code for the shortened URL.
Shared Tunes Open Full Screen (Top)
Shared tunes, when opened from a Share URL or QR code, are initially displayed with the ABC Editor and controls hidden so you can see the music full-screen.
Click the Maximize/Minimize arrow to show the ABC Editor and controls.
Making Shared Tunes Open in the Player (Top)
For single tune sharing, if you want to have the Player open with the tune already loaded when someone clicks the share link or scans the QR code, it is very simple to create a play link.
Once you already have the Share URL in the URL window, click the Add Auto-Play button to add:
&play=1
to the end of the Share URL before copying it, shortening the URL, or creating a QR code.
Adding a QR Code to the PDF Export (Top)
To append a QR code representing the Share URL for tune set or a specific URL as a final page on your PDF, add the following comment-based annotation anywhere in the ABC:
%qrcode URL
The URL field is optional.
If a URL is present, it will be used for the creation of the QR code, otherwise the computed Share URL for the PDF tunebook (as would be shown in the sharing controls) will be used by default.
One application for this would be the use of a shortened Share URL from TinyURL for the QR code instead of the longer one generated by the tool itself.
Note that the QR code page itself includes the PDF page header and footer but does not include a page number.
Here is an example of a tune set QR code included in the exported PDF:

Note: If a QR code has been requested, and the Share URL is too long to generate a QR code (more than 2600 characters), you will see an informative message at the end of the PDF export suggesting sharing fewer tunes.
If you are able to generate a QR code in the Sharing Controls, then the Share URL is short enough to embed a QR code in a PDF.
To override the default generated caption that is shown under the QR code added to a PDF file, add the following comment-based annotation anywhere in the ABC:
%caption_for_qrcode YOUR_CAPTION_FOR_THE_QR_CODE_HERE
The QR code image and caption in the PDF file now have clickable hyperlinks to the same URL used to generate the QR code.
Reading the QR Codes (Top)
All devices should easily be able to read the simpler QR codes generated for sets of one to three tunes.
Most iOS devices are able to read even the most complex QR codes generated by this tool using the built-in Camera app.
Some Android devices may have trouble reading the most complex codes with their built-in Camera app.
I suggest trying the free Google Lens app, available on the Google Play Store:
QR Code Example (Top)
Michael Coleman set ("The Tarbolton" - "The Longford Collector" - "The Sailor's Bonnet"):

Try scanning this code with the Camera app on your iOS or Android phone.
I have several example QR codes for tune sets on my Flickr account at:
ABC Tune Set QR Codes on Flickr
Printing Your Tunes Using the Browser's Built-in Print Feature (Top)
Overview of printing from the browser:
You may quickly print your tunes or generate a PDF using your browser's built-in print and export PDF features.
Tunes printed or exported from the browser are limited to one tune per page.
You may choose portrait or landscape orientation from your browser's print settings.
Additional advanced settings such as printing multiple-pages per page and setting custom margins may be available in your browser's print settings dialog.
Experiment with both the browser's print settings page orientation and "multiple page on one page" options to see what is possible.
Note:If you want to print a tunebook automatically formated with multiple tunes per page, you must use the tool's Export PDF feature.
Adding a Two-Bar Click Intro to Tunes (Top)
If you want to add a two-bar click intro before a tune, here are ABC pattern templates I find work well for common styles of tunes:
Add this before the start of a reel, before any repeats:
% Reel two-bar click intro
V:1
V:2
%%MIDI program 128
^Cz3 ^Cz3|^Cz3 ^Cz3|
V:1
z8|z8|
Add this before the start of a jig, before any repeats:
% Jig two-bar click intro
V:1
V:2
%%MIDI program 128
^Cz2 ^Cz2|^Cz2 ^Cz2|
V:1
z6|z6|
Add this before the start of a slide, before any repeats:
% Slide two-bar click intro
V:1
V:2
%%MIDI program 128
^Cz2 ^Cz2 ^Cz2 ^Cz2|
V:1
z12|
Add this before the start of a slip jig, before any repeats:
% Slip Jig two-bar click intro
V:1
V:2
%%MIDI program 128
^Cz2 ^Cz2 ^Cz2|^Cz2 ^Cz2 ^Cz2|
V:1
z9|z9|
Add this before the start of a polka, before any repeats:
% Polka two-bar click intro
V:1
V:2
%%MIDI program 128
^Cz ^Cz|^Cz ^Cz|
V:1
z4|z4|
Add this before the start of a waltz, before any repeats:
% Waltz two-bar click intro
V:1
V:2
%%MIDI program 128
^Cz ^Cz ^Cz|^Cz ^Cz ^Cz|
V:1
z6|z6|
A chart showing the complete mapping of MIDI drum sounds to ABC notes is here:
General MIDI Drum Sound ABC Note Map
For example, if you want a higher pitched click, for example for the first beat of the measures, change the:
% Low Bongo
^C
values in the click intro patterns to:
% High Bongo
=C
Demos:
You can add an ABC template containing all of these examples from the Add dialog and then copy and paste them into your tunes.
iPhone/iPad Chord Entry Issue Fix (Top)
If you are trying to enter ABC chords, for example "D" or "Am", on an iPhone or iPad, iOS will, by default stick in "smart quotes" instead of standard double quotes.
To fix this, go into your device's Settings and under the General/Keyboard tab, and turn off "Smart Punctuation".
After you do this, you will be able to add standard double quotes.
Using Interactive PDF Tunebooks with GoodReader (Top)
if you are using GoodReader on iOS as your PDF reader and want to be able to play the tunes in my interactive PDF tunebooks, you'll need to change this one setting, available under the gear menu at the bottom of the app:
Enable Use Safari for Internet links:

ABC Specification (Top)
The full specification for ABC notation can be found at:
The ABC Music Standard 2.1 (Dec 2011)
ABC 2.1 Quick Reference Card (Top)
Handy ABC 2.1 Quick Reference Card put together by Stephen Merrony:
Printing the User Guide (Top)
If you want a PDF copy of the User Guide, open this page in Chrome and then use the browser's own Print-to-PDF feature to generate and save it on your system.
This page contains print-only CSS that will automatically hide items like videos and dividing lines as well as insert page breaks appropriately.
I found that setting the scaling in the Chrome Print to PDF to about 85% was optimal.
Example ABC Tunes (Top)
Click these Share URLs to open the tune ready to play in the ABC Tools:
Jig from the "Pickering Lute Book"
Harp
Flight of the Bumblebee
Acoustic Grand Piano
Star Wars Cantina Theme
SFX Rain Synth and Honky-Tonk Piano
James Bond Theme
Overdrive Guitar and Electric Fingered Bass
Midnight Blue
Acoustic Grand Piano
La Boheme
Tenor Sax and Acoustic Grand Piano
Example ABC Tunebook (Top)
Click the Share URL below to open an ABC tunebook with 9 tunes in the ABC Tools.
The set is ready to export to PDF with a Title Page, Table of Contents, and Index:
Tip Jars (Top)
If you find my ABC Transcription Tools useful,
please consider tossing a few bucks into one of my virtual tip jars:
PayPalhttps://paypal.me/MichaelEskin
Venmo@MichaelEskin
Source Code Available on GitHub (Top)
Full project source code may be found at:
Support (Top)
Have an issue with a specific tune, want to report a bug, or suggest a new feature?
Click here for the project support page:
ABC Transcription Tools Support