Jump to content

ABC Transcription Tools


Michael Eskin

Recommended Posts

You can now 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

Note: For all soundfonts, my custom sampled instruments for dulcimer, accordion, flute, and whistle will override the soundfont sounds.

Demo video (iPad screen capture with audio) showing all the soundfont options in the context of the two J.S. Bach demos built into the tool:
 

 

 

Edited by Michael Eskin
Link to comment
Share on other sites

OK, things just got very, very weird.... 🙂


Demonstration of scanning two pages of piano score with PlayScore 2 for iOS, exporting the MusicXML file it created, then importing and playing the file using the ABC Transcription Tools.

You can also email or AirDrop the MusicXML file from the iPad/iPhone to use the file on a desktop system.
 

PlayScore 2:
https://www.playscore.co/

Demo Video (iPad screen capture with sound):
 

 

 

-----


Demonstration of scanning a tune from "The Waltz Book 2" with "Sheet Music Scanner" for iOS, exporting the MusicXML file it created, then importing and playing the file using the ABC Transcription Tools.

Unlike PlayScore 2, this one doesn't pick up chords and lyrics, but seems to do better on simple scores.


You can also email or AirDrop the MusicXML file from the iPad/iPhone to use the file on a desktop system.

Sheet Music Scanner: https://sheetmusicscanner.com/

Demo Video (iPad screen capture with sound):
 
 
Link to comment
Share on other sites

"A Collection of 28 Renaissance Lute Pieces" Interactive PDF Tunebook
 

This is an experiment I did to create an interactive PDF tunebook from MusicXML pieces imported from https://guitarloot.org.uk/ into my ABC Tools and transcoded to ABC format.


The pieces are presented as a collection of top line incipits with associated play links.


Click the top of any tune to open and play it in the ABC Transcription Tools.


I've selected the Orchestral Harp (46) MIDI program from the "FatBoy" soundfont when playing them.


I have not played through every tune from start to finish, but they sound good to me in my somewhat limited testing.


The interactive PDF tunebook is available for free download at:

http://michaeleskin.com/transcriptions/renaissance_lute_pieces_13sep2023.pdf


The ABC Transcription Tools can easily do all this with just a few lines of annotations at the top of the ABC file:


%pdfquality .75
%pdf_between_tune_space 20
%addtitle A Collection of 28 Renaissance Lute Pieces
%addsubtitle Imported from MusicXML at https://guitarloot.org.uk/
%addtoc Table of Contents
%addlinkbacktotoc
%pageheader Click the top of any tune to play
%pagefooter Created with Michael Eskin's ABC Transcription Tools
%add_all_playback_links 46 46
%qrcode http://michaeleskin.com/abctools/userguide.html
%caption_for_qrcode Click for the ABC Transciption Tools User Guide


I exported the PDF file selecting "Note Incipits - Letter" as the output format.


Demo Video:

In the video I show viewing the PDF tunebook in the "GoodReader" app on my iPad, scrolling through the tunebook and playing various tunes by touching the top of the tune. The tunes launch in Safari on the iPad.


On desktop systems, you would typically use Adobe Acrobat Reader and the tunes would launch in your default web browser.

Link to comment
Share on other sites

I discovered that PlayScore 2 is able to interpret music that is in PDF files.

 

This makes it possible to take tunes from any PDF tunebook you already have and make them editable again in my ABC Tools.

 

Here's a quick demo on my iPad.

 

 

And one more, this one with Emerson, Lake, and Palmer's "Trilogy" from a PDF:
 

 

Edited by Michael Eskin
Link to comment
Share on other sites

I have a very exciting announcement about a major new feature for my ABC Transcription Tools!

 

On desktop browsers, you can now assemble tunebooks by dragging and dropping ABC or MusicXML files to the work area.

 

All the tunes in the dropped file get appended to the end of the work area.

 

Only single file drag-and-drop is supported. 

 

If you try to drag multiple files in at one time, only the first one in the group will be imported.

 

I think this a "game changer" for the tool.

I've also added the ability to add tunes to the existing ones from a new button on the Add dialog.

 

Demo Video:

 

https://youtu.be/y4Vr3nFXmwo

Edited by Michael Eskin
Link to comment
Share on other sites

Guitar version of "A Collection of 28 Renaissance Lute Pieces" Interactive PDF Tunebook

 

The PDF is available for free download at:

 

http://michaeleskin.com/transcriptions/renaissance_lute_pieces_guitar_14sep2023.pdf


This is the same interactive PDF tunebook as in the earlier video, but with the harp sound replaced with a guitar sound more similar to the lute sound the music was original written for.

This is an experiment I did to create an interactive PDF tunebook from MusicXML pieces imported from https://guitarloot.org.uk/ into my ABC Tools and transcoded to ABC format.

The pieces are presented as a collection of top line incipits with associated play links.

 

Click the top of any tune to open and play it in the ABC Transcription Tools.


I've selected the Nylon Acoustic Guitar (24) MIDI program from the "FatBoy" soundfont when playing them.

In the video I show viewing the PDF tunebook in the "GoodReader" app on my iPad, scrolling through the tunebook and playing various tunes by touching the top of the tune. The tunes launch in Safari on the iPad.

On desktop systems, you would typically use Adobe Acrobat Reader and the tunes would launch in your default web browser.


Demo video:

https://youtu.be/0Uf32v48sLk

Link to comment
Share on other sites

It dawned on me this afternoon that most modern iOS apps (including my own "Celtic Sounds" app) can be downloaded from the App Store and run on M1 and M2 silicon Macs.
 

So I downloaded PlayScore 2 from the App Store on my Mac.


You need to download the iOS version, you won't find a Mac-specific version.


It even carried forward my monthly subscription to PlayScore 2 at the Pro level (about $6/month), and I can use the same app subscription for all devices on my Apple ID account.


Same Emerson, Lake, and Palmer "Trilogy" demo as I did on the iPad, but this time on my Mac.


After PlayScore 2 generates the MusicXML, I then drag and drop it  (new feature!) to my ABC Transcription Tools, then play it.


Works and sounds exactly the same as it did on the iPad, but now I can do this on my Mac desktop.  


https://youtu.be/py_YvmG58iE
 

This is amazing.

Link to comment
Share on other sites

1 hour ago, Michael Eskin said:

It dawned on me this afternoon that most modern iOS apps (including my own "Celtic Sounds" app) can be downloaded from the App Store and run on M1 and M2 silicon Macs.
 

So I downloaded PlayScore 2 from the App Store on my Mac. etc...

PlayScore also seems to be available for Windows. Does this mean I could do the same thing on my Windows machines?

 

Sorry if this is a dumb question, but I'm trying to get my head around this. I've seen discussions of scanning sheet music (elsewhere) which seem to regard the job as 'pretty difficult', so this looks like a pretty slick trick...

 

 

Edited by lachenal74693
Link to comment
Share on other sites

16 hours ago, lachenal74693 said:

PlayScore also seems to be available for Windows. Does this mean I could do the same thing on my Windows machines?

 

Sorry if this is a dumb question, but I'm trying to get my head around this. I've seen discussions of scanning sheet music (elsewhere) which seem to regard the job as 'pretty difficult', so this looks like a pretty slick trick...

 

 

I would think so!

 

Link to comment
Share on other sites

Now, if you just want to mute the melody or the bass/chords, instead of remembering to use program #136 you can just use: %%MIDI program mute
 
and
 
%%MIDI chordprog mute
 
This also works for the Default melody and bass/chord program setup in the Settings dialog.
 

I've customized the abcjs MIDI parser, so it just detects this case handles it all nice and quietly behind the scenes, nothing to see here. 🙂

 

To be a better General MIDI citizen, I also changed the way I handle MIDI export for tunes that have any of my custom MIDI programs (129-136, including muting).  Here's the new info from the User Guide:


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.

 

  • Thanks 1
Link to comment
Share on other sites

Reworked the MIDI program, MIDI chordprog, %%staffwidth, and %abcjs_soundfont injection dialogs so you can now either inject a single string at the cursor insertion point, or the entire set of tunes.
 

I found this particularly useful when injecting %%MIDI program values in the multi-voice demos I've been posting recently.


Also, the main Settings as well as the inject MIDI program and chordprog dialogs now show drop-downs menus with all the MIDI program names.


You no longer have to remember the mapping of instrument to MIDI program number when selecting instruments in any dialogs in the tool where you used to have to type a General MIDI program number.


Additionally, these instrument drop-down menus include the "Mute" instrument at the top as well as all my custom AppCordions instruments at the bottom.

Link to comment
Share on other sites

I've done some reworking of the backup generation so that it handles bass and chords around pickup  notes and partial measures, or example in the first ending of a tune where there is a pickup at the start of the tune.
 

By default abcjs would just play repeated chord notes on every beat for the entire partial measure, which to me, particularly in traditional Irish music, and especially jigs, sounded very hackney.  


Now, it's much more adaptive, using the rhythm pattern for partial measures if there are sufficient notes for it to make sense to do so, or doing just chords, or leaving both the bass and chords out, if it makes sense.


I think the new version is much nicer sounding in these cases, hope you enjoy it.


Here's an example of a jig with pickups and partial measures:


https://tinyurl.com/4s65bfsc


I've sent the source changes to Paul Rosen to consider merging into abcjs.

Also added a few additional meter backing pattern options:

2/8, 3/8, 5/4, 7/4, 10/4, 7/8, and 10/8

2/8 and 3/8 are for those who want to create their own subdivided 7/8 or x/8 patterns with different pulses from the defaults.

 

Edited by Michael Eskin
  • Like 1
Link to comment
Share on other sites

You may now 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.

Here are a couple of demos showing the new directive being used for 7/8, 5/4, and 5/8 rhythm patterns:


7/8:


https://tinyurl.com/y3xepvfr


5/4 and 5/8:


https://tinyurl.com/35xfk7sr

It just bugged me that there was no way to support both Bccbcbc and Bcbcbcc (or whatever) for 7/8 and other meters where there are several common and equally valid pulse groupings. This at least provides some improvement for those cases.

It's semi-hackish and definitely not perfect, but gives more flexibility than the default abcjs backup implementation for many meters. Probably could use a bit more work, particularly where there are multiple chord changes in a measure, but it's good for a lot of use cases.

Edited by Michael Eskin
Link to comment
Share on other sites

Here are all of my ragtime ABC examples:

"Ragtime Nightingale"- Joseph Lamb

https://tinyurl.com/ymwb7h6c

Demo video how it was generated:

https://youtu.be/CpTrfw3PRUk

"The Entertainer" - Scott Joplin

https://tinyurl.com/29hr79m9

"Peacherine Rag" - Scott Joplin

https://tinyurl.com/mrxu47vh

"The Chrysanthemum" - Scott Joplin

https://tinyurl.com/5n8hw8cu

"Solace" - Scott Joplin

https://tinyurl.com/52p7bd2y

Link to comment
Share on other sites

If you'd like to add a metronome to your tunes for practice, it's really simple.

I recently added the ability to do
custom rhythm patterns to my ABC tool:

http://michaeleskin.com/abctools/userguide.html#custom_backup_rhythms

With this, and the appropriate choice of a backup instrument you can easily add a metronome to a tune, assuming the tune doesn't already have chords.

For example:

X: 1
T: Cooley's
R: Reel
M: 4/4
L: 1/8
K: Edor
%
% 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|]

Here's a share link with it live:


https://tinyurl.com/46zxxvay

 
Similar example with a jig:
 
 
Edited by Michael Eskin
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...