Jump to content

Michael Eskin

  • Posts

  • Joined

  • Last visited

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Interests
    Traditional Irish Music
    Anglo Concertina
    Uilleann Pipes
  • Location
    San Diego, CA

Recent Profile Visitors

3,737 profile views

Michael Eskin's Achievements

Heavyweight Boxer

Heavyweight Boxer (5/6)

  1. 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
  2. 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:
  3. 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: https://abcmidi.sourceforge.io/#gchord 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
  4. Here’s an example of my new MusicXML native line break handling in action. On the left is a MusicXML arrangement for lute loaded into the Mac version of MuseScore. On the right is the same MusicXML file, loaded into my ABC tools. https://michaeleskin.com/img/musicxml_import_example_15jun2024.jpg
  5. Here's an ABC version played with sampled concertina sounds that will open in my ABC Transcription Tools: Once loaded you can slow it down by setting the speed percentage on the right side of the player control, or click on the "Tune Trainer" to practice it slowly, looped with increasing speed: https://tinyurl.com/55eeub6p Here's a link to an interactive PDF of the tune: https://michaeleskin.com/transcriptions/JS_Bach_Cello_Suite_No_1_Concertina.pdf On this PDF, click the title to open the tune in the tool's Player.
  6. Why even waste mental energy wondering why someone would use a specific ABC construction? Keep in mind that 50% of the population are of below average intelligence. 🙂 Who knows why anyone does anything. It may deliberate, it may be that they didn't know what they were doing, or maybe they blindly copied and pasted some ABC from somewhere else without knowing exactly what they were doing.
  7. Here's a demo of what a variant of that does using abcjs: X:7961 T:Triplet Test M:4/4 L:1/8 Q:1/4=130 R:March K:Gmaj (3:2:3fga (3:4:3fga (3:8:3fga || https://michaeleskin.com/abctools/abctools.html?lzw=BoLg7AnAbAjAUAFRAgTgSwA4BsCmAXAAgRwGc84BZEAFgHpq4AZEGWgDjgEUX6BeGAMwAGOACUQFAIYoAxgAs4AaRABxALaSAVnAAUAkACYQAgGYBzSQT01j5y9ba2LBAD4ugA&format=noten&ssp=10&name=Triplet_Test&play=1 This appears to change the playback timing and space occupied by the triplet. There's a comment about this in the abcjs source: // We are expecting "(p:q:r" or "(p:q" or "(p::r" // That is: "put p notes into the time of q for the next r notes" // if r is missing, then it is equal to p. // if q is missing, it is determined from this table: // (2 notes in the time of 3 // (3 notes in the time of 2 // (4 notes in the time of 3 // (5 notes in the time of n | if time sig is (6/8, 9/8, 12/8), n=3, else n=2 // (6 notes in the time of 2 // (7 notes in the time of n // (8 notes in the time of 3 // (9 notes in the time of n
  8. 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
  9. Batch .MP3 export of all tunes in the ABC tunebook work area now supports setting the playback speed for the saved tunes. This feature is only available on desktop browsers. Full details in the User Guide at: https://michaeleskin.com/abctools/userguide.html#export_all_as_mp3 Demo video:
  10. .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:
  11. 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:
  12. The WARBL and WARBL2 both support changing octaves via pressure change thresholds and various related hysteresis and timing settings. Or you can assign functions like octave shifts to any of the three buttons on the back. Full details and documentation is here: https://warbl.xyz/documentation.html
  13. I'm just not convinced that it's worth the massive increase in instrument complexity and probably cost to implement. The 3-axis accelerometer used in the WARBL2 is a single tiny chip, and you only need one to implement motion-based MIDI expression for an instrument.
  14. I can't even imagine why you'd want polyphonic aftertouch on a concertina shaped device. The new WARBL2 BLE MIDI wind controller has a 3-axis accelerometer that can be mapped to any kind of MIDI control message flow. I have a couple, having worked with Andrew on the original. That might be something to consider. You might even be able to leverage the WARBL2 firmware, which is open source, to understand how to do the mapping.
  15. 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:
  • Create New...