Guide to EasyABC

Revision 2021/10/13 11:30 EST Revision 2021/11/01 jwdj

Introduction

EasyABC is an open source abc music notation editor developed by Nils Liberg which was released around 2014 on his web site. http://www.nilsliberg.se/ksp/easyabc/. Since 2015 the program was transferred to the current maintainers Jan Wybren de Jong and Seymour Shlien and moved to sourceforge.net. Jan Wybren de Jong has been introducing improvements to the code when he is not busy and posting it to his github site A newer version is released on sourceforge.net once the code is stable. The program was originally coded in Python 2 which is no longer supported. The code has now been upgraded to run with Python 3.

EasyABC is a popular abc editor, getting numerous downloads a week. It is not to be confused with Efficent Approximate Bayesian Computation Sampling Schemes or various alphabet learning programs for children. To use it you should know the fundamentals of abc music notation; nevertheless, it is possible to learn this notation using ABC assist.

The main window is split up into either 3 or 4 frames as shown here.

main window

When you start the program all of these frames are empty. The ABC assist frame on the bottom left can be toggled on or off by clicking the light bulb in the top menu. The left frame Tune list is lists all the tunes in a collection and permits easy access to any tune. The X: reference number and T: title are listed for each tune. Clicking on any tune in the list displays the Musical score and the ABC code in the upper and lower frames to the right. Clicking on the play icon (right arrow in green circle) in the top menu will start playing the selected tune. If you change any note in the ABC code, the corresponding note in the score will be updated.

EasyABC has many features as listed here:

It would take too much space to give a detailed user's guide and, in any case, most users do not read the instruction guide. If someone creates a YouTube video demonstrating the usage of this program, I will be glad to provide a link here. Instead, this guide will concentrate on some of the important and obscure features. The Help menu button provides links to various web pages that give more details on the ABC music notation and its supporting software.

EasyABC acts as a graphical user interface to a suite of command driven programs such as abcm2ps and abc2midi. These are independent programs which get updated every now and then -- probably more frequently than EasyABC. The user should download the latest version of these programs and link it to EasyABC.

Errors and warning messages are no longer appearing in pop up windows. Instead there is a short note in the status bar indicating whether the program ran normally or not. If the output does not look right, the user can check for warning and error messages by clicking on the Internals/messages menu items.

Internals

The Internals menu allows one to follow the operations of EasyABC when a certain function is called. If the tune is not displayed or played correctly, it may be useful to check the messages returned by the external program. In another instance, when you are processing a whole collection of tunes, a log of all the error messages will reduce the time for verifying the output files.

Messages shows the communications between EasyABC and the external program. Input processed tune shows the tune that was sent to the external program. The processed tune will likely contain additional commands that tell the program how to convert it. For example if the tune is sent to abc2midi, there may be commands indicating which musical instruments to be assigned to the voices. Output midi file shows the MIDI file representation in text format. Show settings status shows all the state variables in EasyABC that are loaded when the program is started. These state variables are modified by the user in the Abc Settings.

Messages

EasyABC relies on 3rd party programs to convert the selected tune to another form where it can be displayed or played.

Two of the important programs that perform these conversions are abcm2ps and abc2midi. Abcm2ps converts the selected tune to a svg (scaleable vector graphics) file in your cache folder. The name of the file is long and random to avoid collisions with other file names. EasyABC reads this file and displays the file in the musical score pane. Abc2midi converts the selected tune to a midi file and calls another program to play this midi file. Both of these programs send acknowledgements when they are executed and report any problems with the input file.

When you select a particular tune in the Tune list pane, EasyABC automatically attempts to display the music score using this sequence of steps. It grabs the abc representation of the particular tune and adds a few formatting commands, and it executes abcm2ps which produces one or more svg files (scaleable vector graphics), that are eventually displayed by EasyABC. The status bar at the bottom of the window will indicate whether abcm2ps ran normally or whether it returned error messages or warnings.

To view these messages, click Internals/Messages and a window labeled Messages will appear on your screen. This window is refreshed when you do other operations such as play a tune or select another tune. The following is an example of the text that you may see.

AbcToSvg
/home/seymour/easyabc_source_code_1.3.6.4/bin/abcm2ps -
 -O temp-509fe2e5-95b1-4967-9ea8-cdb616b6d804-.svg -v -A
abcm2ps-8.8.0 (May 21, 2015)
File stdin
stdin:18:15: warning: Line underfull (592pt of 778pt)
Output written on temp-509fe2e5-95b1-4967-9ea8-cdb616b6d804-001.svg (17963 bytes)

AbcToSvg is the name of the function which generated this text. This function calls the executable /home/seymour/abc/abcm2ps (/home/seymour/abc... happens to be the folder where the executable abcm2ps is located. If the file does not exist at that location, there would be a message indicating this fact. The first hyphen indicates that the contents of the the processed tune is passed directly to abcm2ps (through stdin) without an intervening file. The name of the temporary output file with a long 64 character name is created and appears after the -O parameter. -v tells abcm2ps to produce an svg file, and -A indicates to include annotation.

abcm2ps merely returns the message:

stdin:29:15: warning: Line underfull (395pt of 778pt)
Output written on temp001.svg (86970 bytes)

In this case the warning message is not very significant and implies that the formating of the music may not be perfect.

If you play the selected tune, the following text would be appended to the Messages box.

AbcToMidi
/home/seymour/easyabc_source_code_1.3.6.4/bin/abc2midi -
-o /home/seymour/.EasyABC/cache/temp9eb3560e-1756-4e1b-94a7-4257e5129f6e.midi -BF -TT 440
3.61 June 22 2015 abc2midi
writing MIDI file /home/seymour/.EasyABC/cache/temp9eb3560e-1756-4e1b-94a7-4257e5129f6e.midi

EasyABC gets the selected tune and adds inserts %%MIDI commands that will instruct abc2midi how to create the midi file. The executable abc2midi ran creating a midi file with a random 64 character name in the cache folder. The parameter -BF turns on the Barfly stress model.

In this case, abc2midi did not return any warnings or error messages and the status bar is clear.

EasyABC typically clones itself when you open a second abc file, and these clones act independently. In other words the different clones are unaware of each other. This can cause some complications in the way the program is run. For example if you have different settings in the different clones, the last clone that you close will determine the settings that will remain in effect. In order to protect the clones from associating the wrong files, the svg and midi files produced in the cache folder have long random names such as, temp-8d188259-f4f4-4366-b715-adc3d266e545-001.svg. You will see these file names when you view Internals/Messages.

Abcm2ps allow you to reference a format file from inside a abc tune. For example

X:1
%%format myformat.fmt
T: My tune
M: 4/4
etc.

Unfortunately, it is very unlikely that abcm2ps will find this format file. EasyABC is running from a local directory that is often hidden in most operating systems. For example on Windows 7, the name of the directory could be called C:\Users\User\AppData\Local\EasyABC. This is the same folder where the cache folder is kept. Abcm2ps is called from this local directory and by default, it will look for the format file myformat.fmt in this location. Unless you have placed this format file in this directory, Abcm2ps will fail to find this file. When running abcm2ps from EasyABC, it is necessary to specify the full path name to the format file.

The temporary svg and midi files are stored in a cache directory in a hidden folder. On Windows 7, 8, and 10 this file is usually in AppData/Local/EasyABC in the Users/User folder or whatever you call it. The AppData folder is frequently hidden from view (like C:\Program Files etc), unless you specifically configure the file explorer to expose it. (The method of configuring the file explorer depends upon the operating system, so you may have to search on the web to find how to do it.) On Linux, the hidden files are preceded with a dot like .EasyABC. Though you can still cd to the hidden directory, it may not be listed when you do a dir or ls. These temporary files have a limited life and are deleted when they are no longer needed. I do not have a Mac, so I do not know where they are stored; however, you can find the location of this cache, without deleting it, by clicking on the menu item Settings/Clear Cache...

Input Processed Tune

This window shows the actual data that was submitted to the external program. Furthermore the lines are numbered so you can relate the warnings or error messages in the Message box with the input tune. The input tune will contain some extra lines that were not in your transcription. For example if you just selected and new tune and a new music score was displayed, the following lines may be inserted at the beginning.

1    %%leftmargin 0.5cm
2    %%rightmargin 0.5cm
3    %%botmargin 0cm
4    %%topmargin 0cm
These are additional parameters passed to abcm2ps so it produces a svg file suitable for rendering on the Musical Score. If you now played the tune, the processed input tune window will change to something similar to the following.
   1 X: 1
   2 %%MIDI control 7 96
   3 %%MIDI control 10 64
   4 %%MIDI gchordon
   5 %%MIDI program 0
   6 %%MIDI chordprog 24
   7 %%MIDI bassprog 24
   8 %%MIDI chordvol 96
   9 %%MIDI bassvol 96
  10 %%MIDI transpose 0
  11 Q:1/4= 144
  12 T: The Kesh Jig
etc
All the command beginning with %%MIDI tell abc2midi how the user prefers to create the midi file. These preferences are given in the Abc Settings/abc2midi page which will be discussed later. For example line 2 specifies the loudness level of the melody -- here 96. Line 3 specifies the panning position (0 for left speaker and 127 for right speaker). Line 4 indicates that the guitar chords should be produced. Line 5 indicates that the melody should be played using MIDI instrument 0 or the Acoustic Piano. An explanation of all these %%MIDI codes can be found in the document, http://ifdo.ca/~seymour/runabc/abcguide/abc2midi_guide.html

If you are playing the tune on a Mac, the header will be somewhat different.

Note that if you are inserting your own %%MIDI commands into the abc file, then EasyABC will suppress adding its own commands.

There is no option to save the contents of these windows to a file, but you can do the following. You could grab the contents of the processed window using ctrl-A and ctrl-C key combinations and then paste them into an abc text file using the ctrl-V combination.

Midi Disassembled

This function displays the contents of the MIDI file in text form. This is an advanced feature and unless you understand the MIDI file format, the output may not be meaningful to you. Nevertheless this feature is useful in diagnosing some problems that could occur when you are playing an abc tune. You may skip this section unless you are curious to know how a MIDI file looks like.

To use this function, you require the external program midi2abc which comes with the abcMIDI package and place it in your bin directory with the other external programs. For Windows and the Mac, this should be done automatically for you if you have installed 1.3.6.4.

Abc2midi produces either a type 1 or type 2 MIDI file. If the abc file is fairly plain with no voices and guitar chords, the output is a single track MIDI file or type 1 file. For more complex abc files, abc2midi produces a multitrack file, where the first track is reserved for specifying the time signature, key signature, tempo and other meta data. There is a separate track for every voice as well as additional tracks for the guitar chords. A MIDI file can have an unlimited number of tracks; however, there are only 16 MIDI channels available and channel 10 is usually reserved for percussion instruments.

We will not look at the following example:

X: 46
T: Staten Island Hornpipe
S: Bernie Waugh
%R: Hornpipe
M: 4/4
L: 1/8
K: D
|:AG|\
"D"FDFG A2 A2|dfed dcBA|"G"B2 GB "D" A2 FA|\
"Em"G2 E2 E2 "A7" AG| "D"FDFG A2 A2|
The MIDI file produced has three tracks. The first track contains meta information like key signature, time signature and tempo. Track 2 contains the notes and Track 3 contains the bass/chord accompaniment. Here is track 2 without the BarFly stress model.
 0.00   Metatext (Text Event) note track
  0.00   Program   1 73 (Flute)
  0.00   Metatext (Seqnce/Track Name) Staten Island H...
  0.00   Metatext (Text Event) N:page 15
  0.00   Metatext (Text Event) N:heptatonic
  0.00   Metatext (Text Event) S:Bernie Waugh
  0.00   Metatext (Text Event) R: Hornpipe
  0.00   Note on   1   a4  97
  0.50   Note off  1   a4   0
  0.50   Note on   1   g4  77
  1.00   Note off  1   g4   0
  1.00   Note on   1  f#4  97
  1.50   Note off  1  f#4   0
  1.50   Note on   1   d4  77
  2.00   Note off  1   d4   0
Each Note line lists the time in beats, the note command, the channel number, the pitch, and the loudness. If we activate the rhythm designator R: Hornpipe by removing the percent symbol, abc2midi adds some swing to the Hornpipe as seen below. Note how the time in beats has changed.
 0.00   Metatext (Text Event) note track
  0.00   Program   1 73 (Flute)
  0.00   Metatext (Seqnce/Track Name) Staten Island H...
  0.00   Metatext (Text Event) N:page 15
  0.00   Metatext (Text Event) N:heptatonic
  0.00   Metatext (Text Event) S:Bernie Waugh
  0.00   Note on   1   a4  97
  0.67   Note off  1   a4   0
  0.67   Note on   1   g4  77
  1.00   Note off  1   g4   0
  1.00   Note on   1  f#4  97
  1.67   Note off  1  f#4   0
  1.67   Note on   1   d4  77
  2.00   Note off  1   d4   0
Probably the most useful information is the channel number, a number between 1 and 16. The first line of the track indicates whether this track is used for notes, guitar chords, drum, drone or lyrics.

Show settings status

EasyABC has many configuration options which it needs to remember each time you restart the program. Some of these options include the layout of the frames in the window, where to find the various external executables such as abcm2ps and abc2midi, and many others. These options are stored in a hidden file called settings1.3.dat. The file is updated whenever you exit EasyABC.

In rare occasions you may need to view this file in order to address some stubborn problems. This tool displays the contents of the file in readable form. If EasyABC has been in an nonoperable state, it is possible to reset all these options to factory settings using the menu item Settings/Cold Restart.

Abc Settings

The Abc Settings allows you to configure how EasyABC displays or plays the abc music notation among other things. These settings are stored in an external file called settings1.3.dat so that EasyABC automatically recalls these configurations the next time you start the program. If for some reason the settings1.3.dat is corrupted or contains bad data, EasyABC may fail to start. In this case, the user should delete the settings1.3.dat file and restart EasyABC. The next time EasyABC runs it will create a new settings1.3.dat file with the default parameters for your particular system. The settings1.3.dat file is usually put in a hidden folder whose location depends upon the operating system you use.

Another way of resetting EasyABC assuming that it is running is to do a 'Cold Restart'. The button is is one of the items in the Settings menu, and it also deletes the settings.1.3.dat file.

For many of the controls in the Abc Settings, some helpful information may popup when the mouse pointer is hovering over one of the buttons or entry boxes. The next few subsections describe the different pages in the tabbed notebook.

File Settings

These settings are vital for the proper operation of EasyABC. On both Windows and the Mac, EasyABC comes with the helper programs which are placed in a bin folder. When EasyABC is started for the first time, it assumes that these external programs are in standard locations and it establishes links these programs. Normally the user does not need to modify the links to these executables. Each time EasyABC is restarted, it check that these links are still valid and reports any problems.

Note all versions of EasyABC share the same settings file settings1.3.dat which implies that if you have recently upgraded to a newer version of EasyABC, you should check that the paths to the abcm2ps and abc2midi go to latest binaries that are in the bin folder which comes with EasyABC.

Path names to the executables may be entered directly in the entry box or you can use the browse button to find the executable and select it. The path names that you select are stored in a combo-box, so you can switch between different paths conveniently.

There are several ways of restoring the settings to their defaults. You can click on the cold start button on the Settings menu, which will restore all the settings to their default value. If you wish to change only a select number of path settings, you can do this with the restore settings button at the bottom. First blank out the contents of the file path that you wish to rest. (The easiest way is to select the entry box, type cntl-A to select all and then cntl-X to erase.) Then click the button restore settings.

Here are a few minor comments. On Windows and Linux you use ghostscript for converting a PostScript file to a PDF file. On the Mac, the program is called pstopdf.

Nwc2xml is applicable on Windows if you use the NoteWorthy composer to create music files which is a commercial product.

On Windows and the Mac it is not necessary to specify a Midiplayer unless the default one is unsatisfactory. If a midiplayer is specified, then it will used whenever you play a specified tune. Some midiplayers have run time options that can be specified in the box Extra Midiplayer Parameters. For example, for the TiMidity player on linux, adding '-ik -A 50' will select the Tk interface and set the audio level to 50.

The file paths to external programs on this page use comboboxes instead of the usual entry boxes in the older version. This is a convenience for those users who may wish to swich between different versions. The combobox stores all the path names that you have entered using the Browse button. There is no way of removing a path from the combobox other than reinitializing it using the Restore Settings button.

Abcm2ps Settings

abcm2ps settings

If the EasyAbc defaults box is checked then the music score should be displayed in a familiar manner. If your tune has its own abcm2ps layout commands embedded and you do not want EasyABC to add more commands, you should check the box 'No page settings'.

In order to customize the page settings, you need to remove the check marks from both the 'No page settings' and 'EasyAbc defaults' check boxes. Additional page settings should now appear as illustrated in the above graphics. Page settings are entered in text entry boxes. There is no checking that the values you enter are appropriate so please be careful. You can see the default or suggested values for these page settings by hovering the mouse pointer over the particular box. All the values must be in centimeter units. Do not include the units cm, in, pt or whatever when you enter the values in the box.

All of these settings are turned into abcm2ps commands which are added in the processed abc file with a preceding %% sign. You can view these added commands by looking at the Internals/processed file output.

If you check 'Include bar numbers', then the bars will be numbered in the displayed score. This may be useful for interpreting warning messages returned by abc2midi when you play a particular tune. Note abc2midi counts the bars from zero. If you check, 'Add X reference number', the reference number of the Abc tune will appear with the title in the musical score. If your tune has lyrics and the box 'Suppress Lyrics' is checked, the lyrics will not appear in your score. Abcm2ps attempts to layout the lines of music based on the particular bars in a text line. If you check, 'Ignore line ends', abcm2ps will disregard how you layed them out and just place as many bars as can fit on system.

Abcm2ps has many optional run time parameters which are listed when you run abcm2ps in a command window. For example here are the first few lines.

/home/seymour/abc$ abcm2ps
abcm2ps-8.5.2 (January 28, 2015)
ABC to Postscript translator.
Usage: abcm2ps [options] file [file_options] ..
where:
 file        input ABC file, or '-'
 options and file_options:
  .output file options:
     -E      produce EPSF output, one tune per file
     -g      produce SVG output, one tune per file
     -v      produce SVG output, one page per file
     -X      produce SVG output in one XHTML file
     -z      produce SVG output from embedded ABC
     -O fff  set outfile name to fff
     -O =    make outfile name from infile/title
     -i      indicate where are the errors
     -k kk   size of the PS output buffer in Kibytes

If you wish to include these run time parameters when abcm2ps is run you would put them in the text entry box marked 'Extra Parameters'. You can verify that these parameters are passed using the 'Internals/Messages' in the top menu of EasyABC.

In some situations, you may also need to pass a format file to abcm2ps. For example, in displaying Turkish makam files which use special symbols for particular microtones, abcm2ps requires an additional format file called commaA-E.fmt which comes with the music collection. You would place the path name of the format file in the appropriate entry box so that EasyABC knows where to find it.

Abc2midi Settings

The abc2midi program which converts an abc file to a midi file has many features described in the web page Guide to Abc2midi Features. The abc2midi and voices tab provide access to a few of these features. When you play an abc tune, EasyABC will copy the selected abc tune to a separate file inserting abc2midi %%MIDI control statements. You are able to view this file in a separate window using the Internals/Input Processed Tune menu item after you have played the tune.

If no tempo is indicated, abc2midi assumes the default of 120 beats per minute. If no MIDI instruments (programs) are indicated, the Acoustic Piano is the default. Some abc files contain guitar chords which are enclosed in double quotes. Abc2midi will produce a bass/chord accompaniment from these guitar chords based on the time signature. The options on this page provide more control on how the accompaniment is generated.

These additional commands appear as lines beginning with %%MIDI. This may pose a problem, if the tune already contains such indications they could be overriden by EasyABC. EasyABC avoids this situation by suppressing the insertion of any %%MIDI commands of the same type. For example if the given tune already contains a line such as %%MIDI program 16 (where 16 is the General MIDI code for Dulcimer) then EasyABC will not insert any additional lines containing %%MIDI program. Thus the options to change the musical instrument for that tune would no longer apply. If you want to change the instrument, you will have to edit the abc notation directly.

The options on this page, mainly affect an abc tune that is free of any voice specifications given by V:. If the tune contains voices you will likely need to use a different page with the tab labeled voice.

abcm2midi settings

Two MIDI channels are assigned to the accompaniment -- one for the bass and the other for the chords. Therefore you have independent controls for both the bass and chordal accompaniment. Like the melody line, you can select the instrument and the volume level to play the particular entity.

You can transpose the output to another key without changing the tune using the transposition slider. This is useful if you play a musical instrument such as a Bb clarinet which automatically transposes the music down by a tone.

If your accordian is not tuned to the standard A = 440 Hz. You can modify the tuning up to one semitone in either direction.

The check boxes switch on various options. For example, if Play chords is not checked, you will not hear the bass/chordal accompaniment. You should leave it checked all the time unless you do not want the accompaniment indicated by the guitar chords. Ignore Dynamics tells abc2midi to ignore the pp, ff, mf, etc indications in the score. The MIDI file does not do a good job in handling the dynamic indications and often the music is either to loud or to quiet. Older versions of EasyABC alway applied the Phil Taylor's Barfly stress model to the tune when it contains a rhythm designator (eg R: jig) recognized by the program. Now this is an option.

The check box labeled Count in tells EasyABC to prefix the tune with two bars of metronome clicks. This gives you the opportunity to get your instrument ready if you are playing along with the computer. The clicking pattern is determined by the time signature if it is a common beat. If it is an unusual rhythm like 13/8, you will get only one click at the beginning of the measure.

By default the guitar chord accompaniment pattern is determined automatically by the time signature. If you are more innovative, you can specify your own pattern. There are several suggestions in the gchord pattern combobox, and if you hover the the mouse pointer over the combobox a tool tip will appear with an explanation of the codes as shown in the above graphics.

Voice Settings

The settings on this page apply only your tune contains voice indications. Note an exception may occur if you like putting voice overlays in your music line. Voice overlays was quite difficult to implement, and its behaviour can be less than intuitive. (A voice overlay causes abc2midi to create a separate track and frequently a separate channel for the overlain voice. A voice overlay (formerly called split voice) is indicated by an ampersand in the music measure.

If you are running EasyABC on a Mac, you are probably using QuickTime to render the MIDI file and this player has a few problems. EasyABC tries to accomodate QuickTime by prefixing the MIDI file a list of control codes assigning all the music channels.

Note that channel 10 is usually assigned to percussion instruments independent of what you do.

The playing instruments (called programs in the MIDI terminology) is specified for the 16 MIDI channels. By default the instrument is set to the 'Acoustic Piano' assuming your soundfont or MIDI player follows the General MIDI Standard. The MIDI standard allows only 16 channels, though you are unlimited in the number of MIDI tracks.

EasyABC does not know how abc2midi will assign channels to the voices. Normally the channel numbers are assigned sequentially but if your tune contains guitar chords, drum patterns, drones, or voice overlays some of the channels will be used for those purposes. In fact the guitar chords use two channels -- one for the bass and one for the chords. Since EasyABC does not know how the channel numbers are assigned, the instrument assignments apply to the voice and not the channel number. Assuming your abc tune does not contain %%MIDI program commands, EasyABC will assign the selected program (or instrument) to that voice the first time that voice appears in the abc notation. You can check this by looking at the Internals/ Input processed tune.

In some instances, the user may find that EasyABC or abc2midi has not done what the user has expected. One solution is to put your own %%MIDI program commands into the input tune and EasyABC will try to get out of your way by not inserting any other %%MIDI program commands.

XML Settings

The options listed on this page can be considered experimental. For your information, the free program Musescore allows you to read/display/play and create Music XML files and import MIDI files. Exporting (All or Selected)

These sub-menu items are found under the File menu at the top left. They provide functions to save your work in several different formats.

Exporting the Music Score to a pdf File

If you wish to save your score as an Acrobat pdf files, then you will require is performed by GhostScript, a separate program, to be installed on your system. You can find it on the web site https://www.ghostscript.com/ or https://sourceforge.net/projects/ghostscript/. It comes in various versions, so once you have added it to your system your will need to indicate its location using the 'Settings/ABC Settings.../File Settings' menu item. On Windows, you link to ...\bin\gswin32c.exe or \bin\gswin64c.exe where ... contains the path name to the ghostscript package -- for example C:\Program Files\gs\gs\9.50. On Linux, you link to merely gs (or /usr/bin/gs).

Saving the MIDI File(s)

EasyABC automatically creates a MIDI file whenever ever you use the play function. The MIDI file is put in a cache and has a meaningless filename, so it is not easy to find. To save the MIDI file(s) in an place where you can find them, use the Export MIDI menu item.

Saving the Score as HTML File(s)

If you save the score(s) as an html file, it can be displayed by all internet browsers. In fact it is drawn in Scaleable Vector Graphics (SVG) which is part of the html standard and embedded in the html file. Unlike PostScript and Pdf files, you do not need special software to display the file. Furthermore, there are browser addons that allow you to print the score from your browser.

Saving the Score as an interactive HTML File

This mode actually embeds the abc file into an html file and links it to a JavaScript library on a remote system. The JavaScript code renders the abc score and has an option to play the music while following the score. You need to be connected to the internet in order to use this feature.

Jef Moine, the creator of abcm2ps, has been rewriting the code in JavaScript. The JavaScript library is now called abc2svg and is posted on his web site. Each time you open such an html file, it gets the JavaScript code from his web page and executes this code to render the score.

Save as an MusicXML File

Besides ABC music notation, there are many other formats for representing music notation. Many of these formats are proprietary to a particular company producing music software. MusicXML was developed as a standard for exchanging digital sheet music.

Wim Vree has written and maintains Python code that can convert abc notation to MusicXML or the reverse. This code is included in EasyABC. There are various options which are accessible from the Settings/ABC Settings... menu item.

Save as an ABC file

The menu item File/Save or File/Save as will save the entire file that you have opened. This may be a compilation of many abc tunes. If you want to save a particular tune that you have selected, use this option to export the selected tune as an abc file. A window will pop up which will allow you to specify the file name and its location.

Save as a WAV Audio File

The selected tune will be converted to a midi file using abc2midi and the resulting midi file will then be converted to a wav audio file. You will be asked to specify the name of the file and its location in a separate window that will pop up.

Import and add ...

There are thousands of music files in midi, xml, nwc, and mcm format that can be downloaded from the internet. EasyABC is able to convert many of these files into abc format.

Find in Files

This function is found under the edit menu. It allows you to search a large collection of abc files for words in titles, composers, lyrics, and etc. For example you can find all tunes with Bach as composer, in the key of G and meter as follows:

C:bach M:9/4 K:G
If you are using this tool for the first time, you need to specify the top level folder where you keep your abc files. This folder could contain may subfolders and subsubfolders. Use the Browse button or enter the information in the top text entry box. The tool will retain this information for future searches.

If you click on any of these items, the selected abc file will be loaded into EasyABC and it will be positioned to the selected tune (or very close to the selected tune). The exhaustive search can take a while, but you can stop it at any time using the progress bar.

find

Abc Assist

abc assist 1 abc assist 3

The Abc Assist mode is useful for both beginner and experienced users. Click on the light bulb icon on the top tool bar to display (or remove) the ABC assist panel. Click on New tune to start. While you are typing in the abc tune, the ABC assist panel will display your various choices. For example, if you enter %% it will offer the choice between abcm2ps or MIDI. If you enter %%MIDI, it will suggest %%MIDI channel or %%MIDI program. If you choose the latter, the possible choices will be listed as shown above.

If you click on New tune, ABC assist will produce a skeleton tune to get you started. The latest version of EasyABC on github ABC assist supports the %%MIDI drum commands.

Midi Sound

EasyABC relies on MIDI synthesizers to produce any audio output. Prior to the introduction of mp3 files and other audio coding schemes, support for MIDI files was available on most systems. In the last few years, you need to make a special effort to in order to play any MIDI files. The 'Windows Media Player' no longer comes automatically with the Windows 10 operating system.

If you running EasyABC on Windows, the play function usually works seamlessly without much effort. EasyABC will follow the score as the music is playing and both forward and reverse will work. On other operating systems, it may be quite complicated to get EasyABC to work in the same manner. (See the section Running EasyABC in Linux for some details.)

EasyABC provides other options for playing abc (MIDI) files. These options are not ideal, in the sense that certain features like score following will not work; however, they provide a good alternative in the last resort. Assuming that you have a separate MIDI player on your system, then you can go to 'Settings / ABC Settings / File Settings/' and specify the path to the MIDI player. Many MIDI players such as TiMidity and Fluidsynth do not come with soundfonts, and you will need to install them on your system and indicate the path to that file.

Running EasyABC from Python 3 Source Code in Windows

If you have not installed Python 3.9, download it and install it from https://www.python.org/downloads/. The 64-bit version works on my system.

From a command window verify that you have are running the correct version.

C:\Users\User> py
Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec  7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Type quit() to exit out of the python shell.

You now need to install various packages if they are not on your system.

py -m pip install -U wxPython

py -m pip install pywin32

py -m pip install pygame

py -m pip install pyparsing

You should now be set. Go to the directory EasyABC.1.3.7.8 or whatever is the latest version and double click on easy_abc.py icon. In case it crashes open up a command window, cd to that directory, and start up easy_abc.py from the command window and note any error messages in the command window.

Running EasyABC in Linux

On Linux, it is necessary to run EasyABC from source code. easy_abc.py
is a python 3 script. Besides python 3, you will also require several
other libraries. The file using_EasyABC_in_Linux.txt which comes with
the source code provides the following instructions.

sudo apt install abcmidi abcm2ps libfluidsynth2 fluid-soundfont-gm jackd

The soundfont should now be installed in

sudo apt install python3-wxgtk4.0 python3-wxgtk-media4.0 python-wxtools python3-pygame

unzip Downloads/EasyABC-master.zip

mv EasyABC-master/ EasyABC

cd EasyABC

Now you can run EasyABC:

python3 easy_abc.py

You may get a GStreamer error. Just ignore it.

Then choose a soundfont in Settings/ABC Settings/File Settings/soundfont
You can find one here: /usr/share/sounds/sf2/FluidR3_GM.sf2

Now exit and run EasyABC.

If the play function does not work, you have two choices. The easier choice is to specify fluidsynth as your midiplayer; however, the follow score feature will not work. The preferable solution can be a lot more complicated. First try,

1) Start jackd. On my machine I use,
/usr/bin/jackd -d alsa --device hw:1 --rate 44100 --period 128

2) Add the extra Midi player parameters for fluidsynth in the ABC settings / file settings box:
--audio-driver=jack --connect-jack-outputs

If the JackServer fails to start, then you may need to install a low latency kernel, create an "audio" group, edit the group limits, and determine the location of the sound card. Anne Sjostrom suggests checking the web page Ted's Linux MIDI Guide for more details on how to do this.

Running EasyABC on the Raspberry Pi 4, Model B

Thanks to John Lowry


Here are my notes from setting up EasyABC on the Raspberry Pi 4, Model B.  

The steps:
Download the latest EasyABC-master.zip from https://github.com/jwdj/EasyABC
Download the source code (extension .tar.gz) from: https://github.com/FluidSynth/fluidsynth/releases 

sudo apt install abcmidi abcm2ps fluid-soundfont-gm python3-wxgtk4.0

unzip Downloads/EasyABC-master.zip
mv EasyABC-master/ EasyABC

tar -xvzf Downloads/fluidsynth-2.2.3.tar.gz
cd fluidsynth-2.2.3/
mkdir build
cd build
sudo apt install cmake libgtk2.0-dev libpulse-dev
cmake ..
make libfluidsynth
cp src/libfluidsynth.so* ~/EasyABC

cd ~/EasyABC
python3 easy_abc.py

EasyABC uses default the sound font in /usr/share/sounds/sf2/FluidR3_GM.sf2
But that can be changed in the settings menu.

Printing does not work properly.  A work around is to export a PDF and then use
another program to print the PDF.