Jump to content

ABC Transcription Tools


Michael Eskin

Recommended Posts

One of the more powerful, but I think not well known feature of my ABC Transcription Tools, is the ability to save out .MP3 files for all the tunes in a tunebook at once, with optional two bar silence and/or click track, plus optional tune repeats.

This feature is only available on desktop browsers.

Full details here: 

https://michaeleskin.com/abctools/userguide.html#export_all_as_mp3


Demo video:
 

 

  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...
Posted (edited)
I've added the ability to import MIDI files directly into the tool.
 
You can open them just like any ABC or MusicXML file, or drag and drop a MIDI file onto the editor.

I'm doing this using the MIT Music21 Python library wrapped in a web service I've created.

I consider this very much an experimental feature.
 
It generally works well with fairly simple MIDI files, but completely depends on the quality of the MIDI file itself.

It may sometimes produce complete garbage, odd results, fail, or even crash or lock up the tool when it tries to render the notation for the output of the Music21 MIDI converter.

In general, MIDI files that are real-time capture of a live player are probably going to result in a mess.
 
MIDI files that are exported from other software, or the tool itself tend be very clean and transcode nicely to ABC.

If the tool crashes during notation rendering after MIDI import is complete, reload the page to restart.

Imported notes are quantized to sixteenth note durations.

MIDI Import is limited to a maximum MIDI file length of 30 KBytes.

Demo video:
 

 

Other features that have been added since I last posted here:

MusicXML export for one or all of the tunes. (Tool could already read MusicXML files)

Ability to change the beat duration fraction for the boom/chick backup bass and chords.

Robust support for a wide variety of reverb styles, including custom convolution impulse models. Reverb is even available in exported .wav and .mp3 files of tunes.

 

Edited by Michael Eskin
Link to comment
Share on other sites

  • 4 weeks later...
Posted (edited)

You can now specify your chord inversions using either a number or a letter.

 

Here's the information from the User Guide:

 

If you want to specify that a chord in the ABC play with an inversion,  you can append a : and then the numbers 0-14 or the letters a-n

 

0 = no inversion

1 = 1st inversion

2 = 2nd inversion

3 = 3nd inversion (octave up for simple 3-note chords)

etc.

 

Or:

 

a = no inversion

b = 1st inversion

c = 2nd inversion

d = 3nd inversion (octave up for simple 3-note chords)

etc.


Example 1: E Minor chord, first inversion:

"Em:1"
or
"Em:b"


Example 2: G chord, second inversion:

"G:2"
or
"G:c"


Example 3: D Major chord, one octave higher:

"D:4"
or
"D:d"

 

The inversion values allow up to a full octave transform  of the original chord, and then will wrap around to the original chord  and subsequent inversions.

 

The inversions also include any octave shifts you might have specified on the %%MIDI chordprog octave=1 style commands for the chord instrument.

 

This style of indicating inversions was inspired by a system described at this Wikipedia page:

 

https://en.wikipedia.org/wiki/Inversion_(music)

 

Note: This extended chord syntax for the inversions may not be compatible with other ABC tools.

 

Demo video:

 

Edited by Michael Eskin
Link to comment
Share on other sites

Posted (edited)

You can now set your preferred abcjs soundfont, MIDI programs, and volumes right from the Player, and if you want, override the values in the ABC for a tune.

This is particularly useful for changing the instruments “baked in” an interactive PDF tunebook created with the tool.

Demo video:

 

Edited by Michael Eskin
Link to comment
Share on other sites

Posted (edited)

.MP3 and .WAV exported audio from the Player now reflects any speed percentage change set in the Player control bar speed control.
 

Previously, it was always at 100% speed.  


I finally figured out a way for the speed to be applied when exporting the audio.


Full details in the User Guide at:
https://michaeleskin.com/abctools/userguide.html#export_audio_image


Demo video showing exporting .MP3 files from the Player of "Cooley's" at 100%, 75%, and 50% speeds, then playing the resulting .MP3 audio files:
 

 

Edited by Michael Eskin
Link to comment
Share on other sites

Demo of a long-requested feature that will allow you to transpose one or all of the tunes to a specific key.
 

This is particularly interesting for Scottish bagpipe injection, where the drone sits effective on the note A as far as ABC is concerned.


By transposing an entire tunebook to A before using "Inject Bagpipe Sounds", you can insure that the tunes, when played, will be consonant with the drones.


Demo video:
https://youtu.be/DkNUePXKtaA

Link to comment
Share on other sites

  • 2 weeks later...


Well, I'm very happy to be able to announce that I was able to successfully integrate Paul Rosen's just released support in abcjs for %%MIDI gchord into the custom version of abcjs I use for my ABC Transcription Tools!
 
Basically, if the ABC for a tune contains:
 
%%MIDI gchord pattern_string
 
then it will use Paul's gchord backup system instead of my version and will handle gchord strings.
 
In addition, you can still use my:
 
%%MIDI abctt:boomchick_fraction
%%MIDI abctt:boom_fraction
%%MIDI abctt:chick_fraction
 
custom annotations to scale the durations of the boom and chicks in the gchord rendering.
 
When the abcjs gchord-based backup system is being used, the following custom backup annotations will be ignored if present in the ABC:
%%MIDI abctt:boomchick
%%MIDI abctt:strum_chords
%%MIDI abctt:strum_chords_divider
 
If you don't use %%MIDI gchord, you should not notice any difference in playback.
 
This is a massive bunch of changes to my custom abcjs codebase, and while I believe I've isolated all of the gchord related code from the non-gchord stuff, there is always the possibility I've introduced a bug.
 
Please let me know if you run into any issues.
 
I'm not an expert yet on %%MIDI gchord control strings, so I'm assuming for now that Paul got it right. If you use %%MIDI gchord and find an issue, please send along the ABC via a share link and I'll pass it along to Paul for further analysis.
 
It was a long time coming, and I only learned about Paul adding this two days ago, so I've been having a marathon coding session integrating it into my tool while still supporting all of my legacy custom %%MIDI features so I don't break anything already out there as far as ABC files that use my custom MIDI features.
 

Full details on %%MIDI gchord control string syntax:

Demo video:
 

Here's the first %%MIDI gchord control string in the tune used in the demo video:
%%MIDI gchord GzI2h2I2GzI2h2I2
 

Working with Cooley's reel, walking through several %%MIDI gchord examples, shows both boom-chick style and arpeggiated patterns:
 

 

 
You'll find my ABC Transcription Tools at:
 
https://michaeleskin.com/abc
 
User Guide:
 
https://michaeleskin.com/userguide

Edited by Michael Eskin
Link to comment
Share on other sites

In my ABC Transcription tools, when using %%MIDI gchord-based backup, I've added the ability to set the volume stress and duration for each gchord element.
 

Expanding on the new %%MIDI gchord features now available in abcjs, I've added a couple of private %%MIDI extensions for my tool that allow you to scale both the volume and duration of each element in a gchord-based backup pattern.


The dynamics of the gchord backup pattern may be set using the following private %%MIDI command:


%%MIDI abctt:gchordstress stress_pattern


Where stress_pattern is a sequence of floating point numbers that have a 1-to-1 correspondence to the %%MIDI gchord control string entries.


Each value in the sequence multiplies the %%MIDI bassvol or %%MIDI chordvol playing volume of each corresponding gchord entry by the specified value.


The scaled values are limited to a range of 0 - 127.


If the number of values in the stress_pattern is less than the gchord pattern length, it will be automatically filled out with 1.0 to match the gchord pattern length.


For example, here is a pair of gchord and abctt:gchordstress commands for a reel where the second half of the pattern is played quieter:


%%MIDI gchord fzczfzcz
%%MIDI abctt:gchordstress 1.0 1.0 1.0 1.0 0.5 0.5 0.5 0.5


%%MIDI abctt:gchordstress can also be used as an inline MIDI command:

[I: MIDI=abctt:gchordstress 1.0 1.0 1.0 1.0 0.5 0.5 0.5 0.5]


Duration of the notes in the gchord pattern can be changed using the following private %%MIDI command:


%%MIDI abctt:gchorddurationscale duration_scale_pattern


Where duration_scale_pattern is a sequence of floating point numbers that have a 1-to-1 correspondence to the %%MIDI gchord control string entries.


Each value in the sequence multiplies the default duration (generally 1/8th note) of each corresponding gchord entry by the specified value.


If the number of values in the duration_scale_pattern is less than the gchord pattern length, it will be automatically filled out with 1.0 to match the gchord pattern length.


For example, here is a pair of gchord and abctt:gchorddurationscale commands for a reel where the second half of the pattern is played with longer notes:


%%MIDI gchord fzczfzcz
%%MIDI abctt:gchorddurationscale 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0


%%MIDI abctt:gchorddurationscale can also be used as an inline MIDI command:

[I: MIDI=abctt:gchorddurationscale 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0]


The %%MIDI abctt:gchordstress and %%MIDI abctt:gchorddurationscale commands are private to this tool and will have no effect in other ABC tools.


Here is an example of a tune in the tool that uses both to create a style of gchord-based backup I think not really possible before with ABC:


"Petite Fleur" by Sidney Bechet (1959)

https://tinyurl.com/2hbwfkhw
 

(Clicking the link opens the tune in my tool's player)


Demo video:

 

Edited by Michael Eskin
Link to comment
Share on other sites

Also, the new native abcjs %%MIDI swing command is also supported along with my tool-specific swing options.
 

The tool also now supports the native abcjs:


%%MIDI swing swing_value


swing_value is interpreted as follows:
 

50 (or less) is no swing

66 is triplet swing 2:1

60 is swing with a ratio of 3:2

75 is the maximum swing where the first eighth is played as a dotted eighth and the second as a sixteenth


If both the native abcjs %%MIDI swing and the tool-specific %swing or %%MIDI abctt:swing commands are found in the same tune, the abcjs native swing command will take precedence.


More details on adding swing at:

https://michaeleskin.com/abctools/userguide.html#adding_swing

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