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...
Posted (edited)


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

Posted (edited)

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

Posted (edited)

To at least provide some additional ability beyond the default abcjs gchord implementation to specify gchord patterns at higher resolutions, I've added an optional divider parameter to %%MIDI gchord in my tool:
 

From my User Guide:


1/16th or 1/32nd Note Resolution gchord Patterns


The default resolution for the gchord patterns in abcjs is 1/8th notes.


If you want to specify your gchord patterns at a 1/16th or 1/32nd note resolution instead of the default 1/8th, you can append a optional divider value to the %%MIDI gchord command.


Valid divider values are 1 (1/8th note resolution - default), 2 (1/16th note resolution), and 4 (1/32nd note resolution)


For example, here are two gchord patterns using 1/16th note resolution:

%%MIDI gchord bzzzzzczbzzzbzzz 2
%%MIDI gchord GHIJghijGHIJghij 2


When specifying a gchord resolution divider, the %%MIDI abctt:gchordstress and %%MIDI abctt:gchorddurationscale patterns can also be longer to match the gchord pattern length.


If the specified abctt:gchordstress or abctt:gchorddurationscale patterns are shorter than the gchord pattern, they will be filled out by copying values from the beginning of the pattern as required to match the gchord pattern length.


Here's an example of an arpeggiated backup at 1/16th note resolution using


%%MIDI gchord GHIJghijGHIJghij 2
%%MIDI abctt:gchorddurationscale 1.5


"Petite Fleur" by Sidney Bechet (1959)


https://michaeleskin.com/abctools/abctools.html?lzw=BoLgBAjAUApDAuBLeAbApgMwPYDt5gGEsBbRAYzAGUBDHAZzAFlLIAOWGOgVwCMlVMufEVIUa9Jiwjs4iHNmx5CJclVoNmkAMwcADtQBO8OouEqx6ydo7w0xXVlPLRaiZog64tgB7wnI1XENKQAWDjISBzo0A39zV2DrOFocLHhqJFw4lyCrDygAFXAABTR+NDAAMXQuAyhGcBCAejCAGXAIFqgARQ6WgF4IACYABg5GAEkAEQmwAHMyAAssAwATMABxAAkJgCk5xcQAK229g+OwIfHp2eoeMnh4EAXltdXajMRcOjJqdEgAHQAVlgdAA7nI5mARgCRgB2EEwAxoABuMR4YEWfxQ0IBAE5cdACOBKIhVjg0ABPMAAITQSzKkDxQLxUAA0uAaTxYFQsFwcKtTOAMCguGTYHcyEc6AB9Oh8gVOEVi1Y8xhoFBYVbU3QGLBzAzUYjgACCES4dCQFA2hoFYGKiFoWGuMzAuv1huI0J5NOodAY7oNRvABV41Bdsx4frogbAQJkMEmrqj-pRWBxeIAbDyCK9VgG9UHjWAzXzLaoNmL0nU4EnZksVqtY0NEYmbmAG2s0zihmEAKJaJpDPtNAA+4AA2sUQCaALoAIimcMXIQAtKOpgA9SpNE1NMAACi0ZDQq1H842xHnNLXo5pUyaG33e5pu8fY6g85Ny5Nt8XP7AfoR23fcjw2E1KnPS8V3XKZ503HhkWoABrecAC8ByHEdRygacaU-JcYI3EC90PY9T3PLl5wwW8MFWJo0Caa8AAb5zIjAKM-AhiGXNA-0qXiOyaeiyNPMhKJ4edViGVd-ykmSoKvVZXzIfd524+cj1WMgaRw6cCE-E0eJ4IF5zIP9CLIF81MIo8dJNRTrz-PtmOXGkn1Io8aRNDYcK-H8QlHIDArkk0ZPnPseB-BTQvgxC0BQ9DMOHD9pymAjlymW8tx3TzyLPC8rxvdd73fEsmlfPcnz8oy4RMr8tA7c9CJpLQHMKi9wo0jYYugjY0IvZcyI2foaTPPSQD7Q9wUhABKT8NmXDBwqmHjqN6oajzoiojzQGVqDmc8NL49c0CGMA0IY-dGMYvyBPnE7R12sh1l2mU5gwCSpK0CLJLQZrlzIOKkNQjDBxS0cJsqDKiKmMASNA-LHOKu8HyfcrKvfGrjNMk1jwB682scnrZO63qrx6icJhAOt+heRtNjQpnmbQ2c0KGUdZyAA&format=noten&ssp=19&name=Petite_Fleur_gchord_arpeggio_demo_scaled_22jun2024&play=1

 

Here's a demo of the new feature in action:
 

 

 

 

Edited by Michael Eskin
Link to comment
Share on other sites

Posted (edited)

Automatic duration map generation for gchord commands is now working!
 

If you use a gchord command string like %%MIDI gchord f2c2f2c2the tool will now generate a default duration map based on the pattern and make the notes the correct length.  


It can handle pretty much anything you throw at it.


You can still override the defaults for special effects like overlapping notes by adding a


%%MIDI abctt:gchorddurationscale (duration scale values)

command after the gchord, but it is no long required to scale durations to match numbers included in the gchord command string.


Here's a proper version of Philip DeWalt's "Hypnopompic Music" pretty much as written with minimal changes (just adding a 2 as the gchord divider to the gchord commands to tell abcjs to use the 1/16th note pattern size) and all the note durations working properly for his complex gchord command strings.
 

Live in the tool:


https://michaeleskin.com/abctools/abctools.html?lzw=BoLgTAnAUAKiASBPADgOwPbPQW2QSwGMACAWQFcBnQqAYRAAUALPAGz2SIBEBTAdQEMWAFyIAGAIwB6SFBIgALJPlQAMiCkAOKAEV1SgLziwoqAGkQAcQAm6AE5QApEQDK6MqisAzdKiEginvxCAEboiI78wQQAVhQA+hRuHt6+AUGh4U4k3CzoVohEyLboAOa2-Nj+AIIEbhRChEQW5R5E9Hj8GI4OJACSnL2FxWUVYo5EAEL8FBRDpeWVRDV1DcTNnVZtHV0OPf2DwdMURaVju30DRIczAG7oLEQAbMpONIx2VrMnI4vLlKtNFqbdqddDdC6DAjvWxWb5nPaXKEfO4PZ7jKpWfjIITcTbBAokQiMfg5IgAUQoAGs8KgAnYiEJGNwlhMaEQYC0KARbOwGj52eh7rN+WAwEQAFLuIjGMAvIiMIRCZAUECSSTYIkkljcKk0gB0tWwkkiBHB+yIJSRMKaAC9emBGGB7RY7Q6nWKwFAAEQWbBeiaSAiSANBgAUVgAzNwAJShzxgAC0AB9-cEvZ4SrHuBHM0Q45mk6Hs7n89G854rNGU77-YHg3WiFY6yHJHmrDH48nvRM055PJISq3uJIm8P+0QxwPG4P+0nh6PJOPJyUAvXBwHVwHhwGU1U06G4tnK0Qg02g3EqpJQxNE0nvTQAOz+qpliySS9vgBirdDnE-sYsW8LAAPX-clJH0b8yUkTgfxoCwTxKZMvT3L0Sk8IhD2PU9mx-C8Jire8n1DfQqgsMtvy-SRoLzYDODJMsSM4GhkwAbTkR4lAAXVY3oQAhC0rU2F17UdZ1XTEsBgnkG15GlLivU4J8aGjWDQNbaDIOomCf1Agh+HkBMAEJPG4WxsCCfgjP4aMqnYhRuN4-jzUtaFhNdAh3RKDz3S4kAkycgTXI+W17QIG0IxEsBwojeSfWwCAvWvAA+YCCDLBcm30IMoBSl88wmZKXyTNKR1wvMqmShDKoIk8yqDHdApcoTbWCR4uNDSrqsTEyzIsoQrKqeQqy47oCG4XwzKIGhMEQHkSgVIgAErpVEWU2mYNgOB4ARhCgKAgA&format=noten&ssp=19&name=Hypnopompic_Music_Scaled_No_Duration_22Jun2024&play=1

Details in the User Guide:
https://michaeleskin.com/abctools/userguide.html#midigchord

Edited by Michael Eskin
Link to comment
Share on other sites

The tool will now determine the gchord slot timing resolution based on the meter and the gchord pattern size.


You can still use the optional


%%MIDI gchord pattern divider


divider parameter I provided (1 = 1/8th notes, 2 = 1/16th notes, 4=1/32nd notes) if you want to force a particular resolution, but in most cases you don't need to add it.


Here's a new version of Philip DeWalt's "Hypnopompic Music" with no need for gchord pattern timing divider parameters, it's all being done by the tool.


https://michaeleskin.com/abctools/abctools.html?lzw=BoLgTAnAUAKiASBPADgOwPbPQW2QSwGMACAWQFcBnQqAYRAAUALPAGz2SIBEBTAdQEMWAFyIAGAIwB6SFBIgALJPlQAMiCkAOKAEV1SgLziwoqAGkQAcQAm6AE5QApEQDK6MqisAzdKiEginvxCAEboiI78wQQAVhQA+hRuHt6+AUGh4U4k3CzoVohEyLboAOa2-Nj+AIIEbhRChEQW5R5E9Hj8GI4OJACSnL2FxWUVYo5EAEL8FBRDpeWVRDV1DcTNnVZtHV0OPf2DwdMURaVju30DRIczAG7oLEQAbMpONIx2VrMnI4vLlKtNFqbdqddDdC6DAjvWxWb5nPaXKEfO4PZ7jKpWfjIITcTbBAokQiMfg5IgAUQoAGs8KgAnYiEJGNwlhMaEQYC0KARbOwGj52eh7rN+WAwEQAFLuIjGMAvIiMIRCZAUECSSTYIkkljcKk0gB0tWwkkiBHB+yIJSRMKaAC9emBGGB7RY7Q6nWAoAAiCzYT0TSQEST+wMACisAGZuABKEOeMAAWgAPn7gp7PCUY9xwxmiLGM4mQ1mc3mo7nPFYo8mfX6A0Ha0QrLXg5Jc1Zo3Gk16JqnPJ5JCUW9xJI2h32iKP+w2B33E0OR5IxxOSgE6wP-Sv-UP-cmqqmQ3EsxWiIHG4G4lVJCGJgnE16aAB2P1VUsWSQX18AMRbIc4H5jFhvCwAD0-3JSR9C-MlJE4b8aAsY8SiTT1d09EpPCIA8jxPJtv3PCZKzvR8Q30KoLFLL9P0kKDcyAzgyVLYjOBoJMAG05EeJQAF0WN6EAIQtK1Nhde1HWdV1RLAYJ5BteROM9ThHxoKMYJAlsoIgqjoO-ECCH4eR4wAQk8bhbGwIJ+AM-goyqRM2IULieL481LWhITXQId0Snc91OJAWzeP4lyPlte0CBtcNhLAMLwzkn0IE9K8AD4gIIUt50bfRAygJLn1zCZEufRMUuHHDcyqRL4PK-DjxKwNt0cwLBNtYJHk4kNysqhMjJMsyhAsqp5ErTjugIbhfBMogaEwRAeRKBUiAASulURZTaZg2A4HgBGEKAoCAA&format=noten&ssp=19&name=Hypnopompic_Music_No_Scale_Numbers_23jun2024&play=1

 
Here's the info from the User Guide:


Based on the meter of the tune and number of timeslots in the gchord control string, the tool will determine a default beat resolution to use for the gchord control string entries.


For an x/8 meter the 1/8th note resolution will be the numerator of the meter.


For an x/4 meter, the 1/8th note resolution will be twice the numerator of the meter.


Case 1: 4/4 meter


Number of timeslots in the control string:

1-8: 1/8th note resolution

9-16: 1/16th note resolution

>16: 1/32nd note resolution


Some examples:


8 timeslots, will use 1/8th note resolution:

%%MIDI gchord fzczfzcz

8 timeslots, will use 1/8th note resolution:

%%MIDI gchord f2c2f2c2

16 timeslots, will use 1/16th note resolution:

%%MIDI gchord f3zc3zf3zc3z

32 timeslots, will use 1/32th note resolution:

%%MIDI gchord f6z2c6z2f6z2c6z2

12 timeslots, will use 1/16th note resolution and pad with silence:

%%MIDI gchord f3zc3zf3z


Case 2: 6/8 meter


Number of timeslots in the control string:

1-6: 1/8th note resolution

7-12: 1/16th note resolution

>12: 1/32nd note resolution


Some examples:


6 timeslots, will use 1/8th note resolution:

%%MIDI gchord fzcfzc

6 timeslots, will use 1/8th note resolution:

%%MIDI gchord f2cf2c

12 timeslots, will use 1/16th note resolution:

%%MIDI gchord f2z2c2f2z2c2

24 timeslots, will use 1/32th note resolution:

%%MIDI gchord f4z4c4f4z4c4

8 timeslots, will use 1/16th note resolution and pad with silence:

%%MIDI gchord f2z2c2f2


If using %%MIDI abctt:gchordstress and %%MIDI abctt:gchorddurationscale along with automatic beat divider resolution, you will need to make sure your scaling lists lengths match the expected beat resolution.


Forcing a Specific gchord Divider


If you want to force the tools to interpret your gchord patterns at a 1/16th or 1/32nd note resolution instead of the default 1/8th, you can append a optional divider value to the %%MIDI gchord command.


Valid divider values are 1 (1/8th note resolution - default), 2 (1/16th note resolution), and 4 (1/32nd note resolution)


For example, here are two gchord patterns forced to use 1/16th note resolution even though they only have 8 timeslot entries:

 

%%MIDI gchord fz5cz 2
%%MIDI gchord GHIJghij 2


When specifying a gchord resolution divider, the %%MIDI abctt:gchordstress and %%MIDI abctt:gchorddurationscale patterns can also be longer to match the gchord pattern length.

Link to comment
Share on other sites

This is really exciting!
 
The tool now supports
 
%%MIDI gchordbars
 
for multi-measure backup as well as automatic timing compression based on the number of elements in the gchord description string combined with the number of measures it covers and the current meter.
 
Full details on all things gchord in the User Guide:
 
 
Demo video of multi-bar backup patterns as well as automatic backup timing resolution scaling:

 
 
 
Link to comment
Share on other sites

Posted (edited)

Now supporting a really simple way of indicating chord inversions in the tool:
 


Works both with just normal backup, as well as gchord pattern string b (bass+chord), c (chord), and individual chord note GHIJghij values.


Chord inversions also will respect any octave shift you have applied on the chord program, for example:

%%MIDI chordprog 0 octave=1

Full details in the User Guide:


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


Live demo in the tool:


https://michaeleskin.com/abctools/abctools.html?lzw=BoLgjAUApFAuCWsA2BTAZgewHawAQGEMBbeAY1wGUBDLAZ1wFkLcwAOaKWgVwCMFl02PIRLlqdRszAAWDvCyZMOAsTKUa9JiwDMHAA5UATrFpLhqsRsk6OsFET0YzK0eolawumHYAesZyJq4ppSsjA0WBiwVAjYARZuITYAKiAUsIZcsAhYAOS4AOqIABaUxCi4AEKVAIoQqQwAkgAijbgA5qTFGIYAJriNWABuKIa08Nj0zfYYHDxRtAakFQAMHKTEjrSji1TLuGswRFzjpLv7h1AGxrTnq7aIqHcHEPjgAJwATADsuAAy8CQuAAEkZevJcABBQxEWgZbDtCAMEDSAD0sj+4FR7BqWOkAF4wABWdgAaRAADEIAAFECDeEcJqtXC0ADu8nauCJ70ZLTanW6fVwPAAXqQRaLxbzmVQeKRsiABT1enDDChbrgAHQANi1us+esNOtwBp10DKXCwvTMIFwaBi8wAntBZaQAFa0AD6tAwlutQjtDowzqgjBQSAwvUduD0hgw7UMVCItshGxOCHIAHFE1bcNT4DRZjAmW1Y-HE0QXqHKlQNWWE0mU2m4WpszR+vnC9K2jxa4s45zLiXhX2hhggdpPub8IKVTGBxWm76W1mcx2C5Fu7gusr61WoMOd30xxOpwAiCkXzOQyq4M-4b5n0ifZ8AHwvT+kAFp7wBqR+kNI74UuAV43neD6gc+b4XiAnyfj++D-nBn6vluSpCiKEpYdhuAQGeqJnmeAB6ABKxSOrAxSVr2pAANZfjwKAxPQ2BII6V4fuBBFPvBIFgLx76EaQvRns0RBnmgonCfB4mgZCFJCWembwZmj4Upmd6EZCKDKd8KG9KQX6vrgADajQgMOGH9JK2HigAurgEEAawaEfhp3EUgAxAADQBL6fO++BPrqkLEYpenKTeny9J8+KVJqpBBY+IraBSuAAKIUqmr5obSM49CcECviAH4AIREEYpAxBgZUoJ8FVVTVdWfPVX4oCKr4ir0X6xaQCn4MB8mual6VZTl+GXvVKAoF+1L1SKgWwQJ3W9S+kIvsZYkAdokJfpC37vs0+kCQdN4icZ+GZhJvQ9b02pbfg7xnrFZV2FgWS1a972fWVpCahtmZHRJFIjdIWXXm5akvdICmQ3poG9HtkLaslT71SRABymr4JqT5VLFVSvqmnyQrgmZYYFblTa1tPtZ1y1nqtfUDUN8GQiNAAUxHXp8ACUb0oB9sC1SpFI9dTj63b1qMXidTMNbQSDwL0KBlVJpC7e+lQ8GegvC6LmoUp8FJfhSQFnjroGLSKzS4MR+DNNlbk67x8WepUX6VBbOsSTblQAN4oAAvmg2iVMBZ4barc0oIdYnPQtvTEc+1qXcpRCPmHuD9JUmkihFD5R-9G3bjFaDGWAd6Xo1hjVSL6ufDbQEiqwICvga5WVXXzVoNIIpAeZll8viHRHjZTc4Vh9lDyWo+ugq1mquq9AGlX68sJv6-2a3r72RAEBAA&format=noten&ssp=19&name=struttin_with_some_bbq_gchord_inversions_24jun2024&play=1

Edited by Michael Eskin
Link to comment
Share on other sites

Posted (edited)

The offline-use enabled PWA (Progressive Web Application) version of the tool just isn’t working out well enough to allow me to promote it to being a mainstream release.
 

It was an interesting experiment, but I don’t have the energy right now to spend any more time on this.


It's working for offline use on Safari on iOS as well as Chrome on desktops. I hear it's also working on Chrome on Android and Linux. Firefox seems possibly problematic.


On iOS, if it misbehaves or fails to load, you may have to go into the Settings/Safari and clear all website data to make sure to have a clean environment for the PWA if you want to create a Home Screen icon for the tool you can use to launch the tool while offline.


Since in normal use, instruments sounds are fetched on-the-fly from a remote site, when running the PWA version offline, all instruments will be replaced by a piano sound which is embedded in the tool source. Reverb is not available offline since it also depends on reading a convolution kernel from a remote site. Percussion, primarily for use by the metronome is also available.


Another more stable option for desktop users who need to run the tool offline is to download the source code archive .zip from my GitHub repo, unzip the source archive, and run abctools-offline.html.


You can find the experimental PWA version here:
https://michaeleskin.com/abctools_pwa/abctools.html

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