ABC Editor Plus THE ILLUSTRATED GUIDE
Launch application ↗ Windows 64-bit · Setup ↓
1.11 FINAL · BY MAXIME LORRAI

From the first note
to the finished piece.

One musical idea. Four ways to work with it. Explore a local browser studio for ABC notation, score engraving, piano-roll editing and tracker music.

Launch ABC Editor Plus ↗ Windows 64-bit · Setup ↓Windows desktop · 20 languagesExplore the complete guide ↓
4 connected views20 interface languages17 visual themesEmbedded General MIDI soundXM + MOD export
FIELD GUIDE / 01

A complete musical workbench

Write in ABC. See the score. Shape the performance. Take it anywhere.

ABC Editor Plus brings text notation, an engraved score, a piano roll and a tracker into one browser application. It is designed for composers, arrangers, music teachers, players learning a part, and musicians making editable retro modules. The same project can be approached as written music, timed notes or a sequence of tracker rows.

Create a tune from a template, import an existing document, choose instruments, listen, annotate and export. The application includes its main libraries and General MIDI sound bank: ordinary notation, playback and file conversion run locally without an account. Optional hardware and the separate audio-transcription service have their own browser permissions or setup requirements.

01 · Start

Launch the application, select your language, then choose a template or use Import.

02 · Shape

Edit ABC or notes, check the score, choose instruments and rehearse an A/B loop.

03 · Keep & share

Export a project backup, then choose notation, audio, MIDI or an editable tracker module.

This reference describes 1.11 Final. Workspace screenshots use the built-in Trio example; the lesson screenshots show a short piano study. They illustrate different tools rather than repeating the interface in every color.

The Studio workspace brings score, ABC, tracker and piano roll together. Splitters let you decide which view gets the most room. Click to enlarge ↗
APPEARANCE / 17 PALETTES

Find your colors.

Every application theme is represented below. Select a palette to recolor this guide. The application’s own appearance selector also changes its controls and view styling; screenshots stay in Ivory Console so each image documents a distinct function.

Current palette: Ivory Console

FIELD GUIDE / 02

Your workspace, your way

Choose the classic two-panel workspace or the four-view Studio layout. Open score, piano roll and tracker in separate linked windows; bring them back into the main workspace when needed. Detached views keep their editing tools, transport access and scrollable controls. Browser popup settings can affect whether a separate window opens.

Drag panel dividers to resize. Focus a divider and use arrow keys for fine adjustment, Shift for larger steps, or Enter to reset; a double-click also resets a divider. Click the application logo for interface zoom, full screen, panel-size reset, appearance, sound settings, startup options and performance tools. Panel sizes and interface preferences are remembered in browser storage.

Follow locks keep the selected voice visible in the ABC and score. Unlock to browse freely. Piano-roll auto-scroll, tracker Follow and tracker Auto are separate controls. The voice selected for visual following does not by itself mute the other voices. Playback synchronization links the notation and play position.

The status area records operations and messages. ABC diagnostics can be reopened, and the status panel can be resized. A performance profile can record 15, 30, 60, 120 or 300 seconds, show timing information, clear a capture and export JSON. These are application timing measurements, not an operating-system CPU meter. Economy settings help reduce display work on slower machines.

20 interface languages: English, French, Italian, German, Spanish, Portuguese, Dutch, Danish, Finnish, Swedish, Norwegian Bokmål, Icelandic, Greek, Turkish, Russian, Simplified Chinese, Japanese, Korean, Arabic and Hebrew. Music and user-entered text remain your own content.

ABC Editor Plus · Playback · ? Help

Restore the default workspace

The layout and scaling menu includes Reset default layout. It returns to Classic at 90%, restores the panels and docks detached views, while preserving the arrangement. Startup: index.html?reset-layout=true. MCP: workspace.resetLayout.

FIELD GUIDE / 03

ABC writing and score engraving

The source editor provides syntax coloring, line numbers, direct text editing, copy, undo and redo. Select individual tunes in a multi-tune ABC document. Start with Blank, Scale, Song, Reel, Duo or Trio templates, or add drums. The insertion palette supplies notes across two octaves, sharps, flats, naturals, duration tokens, rests, barlines and repeat marks. ABC durations are relative to the tune’s L: unit length.

ABC supports headers, voices, instruments, clefs, keys, meters, tempo, chords, rests, ties, tuplets, repeats, lyrics and notation directives as interpreted by the bundled ABCJS engine. Validate the source and inspect diagnostics before conversion. A dedicated cleanup removes verified empty voices; voices carrying timing or structural information may need to stay. Undo/redo provides up to five application changes, so exported backups remain useful for larger revisions.

Transpose the tune by semitones, or adjust a selected score note with the pitch buttons, Alt+arrow keys or Alt+wheel; Shift selects octave movement. Graphical note operations audition the affected notes. The musical analysis panel summarizes the current tune; chord detection offers another view of its harmony. The I–IV–V tool inserts one chord symbol per measure in a repeating I–IV–V–I cycle and replaces existing body chord symbols. Its presets cover C, G, D and F major, plus A and E minor.

Rendering options control score scale, font scale, swing from 50% to 80%, tablature and chord grids. Tablature choices are guitar, violin, viola, cello, bass, mandolin, banjo and ukulele. Show chord grids with music or without it; written chord symbols are required. Responsive engraving adjusts automatic staff width; an explicit width overrides that choice. Zoom is independent. Swing changes playback timing, not the written notes.

The score follows the chosen voice; the playback status remains beside ? Help.

Standard notation and tablature

The score panel offers Auto, Score and Tablature. Auto chooses a drum grid when the followed voice is percussion; Score keeps standard notation. Guitar and bass tablature use the selected instrument and its tuning. These controls also remain available in a detached score window.

index.html?notation=tab&tab-instrument=guitar6&tab-tuning=40,45,50,55,59,64

The reference for these controls and their MCP commands is available in the MCP guide in twenty languages.

FIELD GUIDE / 04

Mark a score for a real performance

The annotation toolbar supports text, highlights, circles, straight and diagonal arrows, fingerings 0–5, pp/p/mp/mf/f/ff/sfz dynamics, crescendo and decrescendo, staccato, tenuto, accent, marcato and fermata. Add breath marks, caesuras, double-slash breaths, bowing signs, trills, mordents, inverted mordents, accelerando, ritardando and a tempo.

Select and move marks, change their appearance with the available size and color controls, duplicate or delete a selected mark, remove automatic marks or clear all annotations. Automatic annotation options include regular section labels, phrase highlighting, progressive dynamics, a highest-note climax, phrase-end breaths and descending-scale fingerings. Phrase and section lengths are adjustable. These are editable suggestions, not an interpretation of every musical intention.

Supported score annotations are included in PDF and SVG output. A visual annotation does not necessarily change the synthesizer’s performance. Keep a project export to preserve the editable annotation layer.

The lyrics panel adds verses and lyric slots, shows or hides lyrics and reloads the words from ABC. Karaoke follows the words during playback. Neither audio-import engine recognizes lyrics.

The score with the annotation toolbar open: performance markings remain alongside the written music. Click to enlarge ↗
FIELD GUIDE / 05

Edit notes in the piano roll

Choose a voice and its instrument, add an empty voice or delete the selected voice. Click notes to select and audition them with their instrument and velocity. Drag to move; drag a note edge to change duration. Double-click empty space to insert a note and right-click a note to delete it. Shift-click extends a selection; Shift-drag draws a selection rectangle. Group audition is limited to 16 notes on release.

Scroll with the wheel, use Ctrl+wheel to zoom, or use the zoom buttons and reset. The voice legend identifies the colored parts. Toggle the legend, contextual help and automatic scrolling independently. Play from the cursor to hear a local edit immediately.

Edits originating from MIDI rebuild the ABC transcription. ABC-origin edits preserve surrounding notation where the mapping is clear. Ambiguous repeats, lyrics or conflicting chord velocities can prevent an unsafe edit. Escape cancels an active drag. The original imported file remains available separately from the edited transcription.

Time and pitch become directly editable. Voice colors, the keyboard, instrument selector and navigation controls work together. Click to enlarge ↗
FIELD GUIDE / 06

A tracker for precise musical editing

The tracker lays voices out in columns and musical time in rows. Select quarter-, eighth-, sixteenth- or thirty-second-note steps, or eighth-note triplets. Click to select, double-click an empty cell to insert, drag to move, and edit note or chord velocity in the velocity column. Add or remove voices and choose instruments. Select all, clear selection, delete, duplicate, cut, copy and paste; transpose by one semitone or one octave in either direction.

Play from the cursor, return to the first row, follow playback or browse freely. Previous row, Row and Next row audition individual steps. Step playback is useful for checking a passage one row at a time. The tracker shows the selected voice, position and counts of tracks, rows, notes and selected notes.

The computer-keyboard input has Off, Audition and Write modes. Writing is intended for stopped playback and uses the selected octave, velocity and advance amount. Automatic layout detection and QWERTY, AZERTY and QWERTZ choices follow physical key positions. On a US keyboard, Z S X D C V G B H N J M form a chromatic lower row; Q 2 W 3 E R 5 T 6 Y 7 U form the upper row. The displayed mapping adapts to layout. F1/F2 change octave and Shift temporarily raises it. Key release stops previews; Panic stops every preview sound. Writing a cell does not silently replace an existing chord with a single note.

For a hardware keyboard, choose MIDI IN · Connect, grant permission, select an input port, then accept all channels or one of 1–16. Choose Audition or Write and use the selected tracker voice. This is note entry and preview, not a general multitrack recording system. Web MIDI availability depends on browser and security context.

Tracker playback uses the same status beside ? Help.
FIELD GUIDE / 07

Listen, mix and rehearse

Play/Pause, Stop and Play from cursor serve different purposes: Play starts at the beginning, while Pause and Stop retain the cursor for Play from cursor. The transport shows elapsed and total time in hours, minutes, seconds and tenths. Adjust tempo, including ±5 BPM buttons, enable the metronome, and open the voice mixer for levels, mute and solo. Instrument selection and percussion controls shape individual parts. Reset audio rebuilds audio state if playback needs restarting.

For an imported MIDI file, choose the MIDI source or its ABC transcription as the playback source. Comparing them helps reveal what notation conversion changed. Source selection does not erase the other representation.

Set loop start A and end B at the cursor, then enable or play the loop. A/B positions appear in score, piano roll and tracker. Use Alt+click or Alt+A for A; Alt+Shift+click or Alt+B for B; Alt+L to play the loop; Alt+Shift+L to open its settings. The end is exclusive: the interval is [A, B). The measure-loop dialog offers repeat counts, including continuous repetition. Clear a loop when finished.

Dedicated loop exports exist for WAV, MIDI, ABC and rendered MOD. WAV uses the exact selected sample interval, with preparatory rendering before A where required and no extra tail after B. MIDI and ABC exports clip and rebase the interval within their conversion limits. XM has no separate loop-export menu in this version.

The piano roll and transport share one playback status in the main toolbar.

Ornament playback

Select ABC as the playback source; raw imported MIDI has no ornament signs. Play ornaments enables the same interpretation in the editor and HTML Lesson. ~ and !roll! play main–upper–main–lower–main, with short cuts. T / !trill! and extended trills alternate with the upper neighbour; mordents and turns use the appropriate neighbours. Key signatures, current accidentals and transposition determine auxiliary pitches. Arpeggios spread chords upwards. Ornaments fit inside the written duration, including tuplets and ties: repeats, A/B loops and score following keep their timing. Exercises require the written notes, not generated auxiliaries. Disable the option to hear the plain melody. Fermatas and bowing marks remain engraved without automatic tempo holds. Interpretation varies by instrument and tradition; write explicit notes for a different realization. Re-export older lessons. Startup: ornaments=true|false; MCP: ornaments.set, enabled=true|false.

~G3  !roll!G3  TG3  MG3  PG3  !turn!G3
!trill(!G3 A3 | !trill)!B3 c3 |
index.html?ornaments=true
lesson.html?ornaments=false
Ornament playback: hear the written signs without changing the score.
FIELD GUIDE / 08

Bring existing music into the workspace

InputWhat happens
ABCOpen notation text and select tunes in a multi-tune document.
MIDI · .mid / .midiKeep the imported source and create an editable ABC transcription with selectable tracks and instruments.
MusicXML · .xml / .musicxml / .mxlConvert plain or compressed score interchange files to ABC; inspect the resulting engraving.
Project JSONRestore a saved project, its notation and associated project state.
Library JSONImport a collection into the local tune library.
AudioDecode a recording and prepare a melody draft or use the separately installed transcription service.

MIDI transcription offers title and tempo, automatic/adaptive or fixed L: note units, rhythm labels, triplet detection, repeats, velocity-to-dynamics conversion, overlap handling, ties and non-binary durations. Review the track choices before transcription. Conversion checks can refuse a result that changes protected pitches, instruments or velocities instead of replacing the current project. The original import can be exported unchanged.

The live microphone pitch detector is a separate tool requiring microphone permission. It estimates pitch; it is not a promise of complete polyphonic transcription.

MIDI transcription options let you decide how timed performance data becomes written notation. Click to enlarge ↗
FIELD GUIDE / 09

Turn a recording into a starting point

Import Audio accepts WAV, MP3, FLAC, OGG, M4A, AAC and WebM when the browser can decode the particular codec. Input files are limited to 32 MiB. The local melody draft works best with an isolated monophonic line, is limited to three minutes, takes a manually supplied tempo and silence threshold, and quantizes notes to sixteenth notes. It uses a YIN-style pitch estimator on audio reduced to 8 kHz for analysis. Mixed instruments, percussion and chords can produce incorrect notes.

Analyze first, review the draft, then choose Open this draft. The original recording is retained with the project state where supported. This feature supplies an editable starting point, not a guaranteed score reconstruction.

The optional SheetSage2 route calls its official Python interface through a separate local service at http://127.0.0.1:8765. The service and its model files are not bundled. It needs separate installation, a service token and explicit consent before sending the recording to that service. Its own license is CC BY-NC 4.0. Ordinary ABC editing and the local melody draft do not require this service.

Audio import separates the local melody draft from the optional external installation and shows its progress before applying a draft. Click to enlarge ↗
FIELD GUIDE / 10

Inside the sound engine

The built-in TimGM6mb SoundFont supplies General MIDI melodic programs and percussion. Load another SF2 bank to change the sound or restore the built-in bank. A custom bank applies to the current session; it is not a permanent replacement for the bundled bank. Master level, room reverb and chorus have independent controls.

StageImplementation and behavior
Sample preparationSF2 parsing and PCM preparation use a worker; decoded samples are cached and shared for playback, previews and rendering.
Voice selectionKey and velocity regions, layered zones, root pitch, coarse/fine tuning and sample rate determine which samples play and at what pitch.
AmplitudeDelay, attack, hold, decay, sustain and release envelopes; note velocity, channel volume and expression; sample loops and sustain behavior.
Tone & modulationLow-pass filtering and resonance, supported modulation-envelope and LFO routes for pitch, filter and amplitude; SF2 chorus sends.
MIDI performanceVolume CC7, pan CC10, expression CC11, sustain CC64 and pitch bend. The normal bend range is ±2 semitones; do not assume arbitrary RPN bend-range automation is reproduced. Percussion exclusive classes support choking related sounds.
OutputWeb Audio sample sources, gain, filtering and stereo panning; room reverb with a generated approximately 1.65-second impulse, chorus and output compression. Real-time sample rate depends on the browser and audio device.
Offline WAVStereo rendering at 44,100 Hz by default, converted to signed 16-bit PCM. Full-song output may include a bounded release/reverb tail; exact loop output is cropped at B.

Rendering is bounded by a one-hour duration ceiling and a 256 MiB audio-buffer safety budget; the memory budget can be reached first. Large arrangements require enough memory for floating-point audio buffers before PCM encoding. Available polyphony is affected by layers and release tails as well as the visible note count. The sound engine’s SF2 behavior is richer than what classic tracker files can represent.

Sound settings expose the active bank, a session-only SF2 replacement, master level, room reverb and chorus. Click to enlarge ↗
FIELD GUIDE / 11

HTML Lesson: learn from the score

Export one HTML file, send it to a student and open it directly in a browser. The lesson draws its own score with the editor’s ABC engine and plays the included instrument samples.

In Export, choose HTML Lesson. Save the file, then open it in a browser; the arrangement, sound and teacher annotations travel together.

Choose a practice mode

Playback

Play the whole arrangement, pause, rewind and practise an A/B loop.

Step by step

Press Space or Next to hear one onset position across the voices, then stop.

Computer keyboard

Use QWERTY or AZERTY as a piano. Enter the selected voice’s notes; − and + change octave.

MIDI exercise

Connect a MIDI instrument in a compatible browser. Correct notes advance; wrong notes are counted.

Read, zoom and follow

The lesson embeds the editor’s ABC score renderer and SF2 player, not a pre-rendered score. Notation and shared instrument samples are compressed inside the single HTML file. Two musical lines are shown: the current line and the next one. Score zoom (50–300%) is independent of interface size; Follow keeps the playhead visible. The arrows browse lines with Follow disabled. The audio scheduler runs separately from the display, and only a few lines are kept in memory. The playback status is shown once beside the ? Help button, in both the editor and lesson. Startup and MCP options: score-zoom=150, score-view=focus or full. Score zoom and voice selection are in the right sidebar; ☰ opens it on narrow screens.

The header holds the error count, reset and interface size. Transport times stay beside Stop and Set B; other settings occupy the second row. Instructions, MIDI connection, keyboard map and credits are on the right (☰). Click a piano key, score note or tablature note to audition; QWERTY/AZERTY and MIDI also work outside exercises. Release keys to stop. Clicks never answer an exercise. Keyboard/MIDI exercises still grade answers.

Language, theme and visual effects are on the second toolbar row. All 17 palettes are available; interface size changes the controls separately from score zoom.

Ornament playback

Select ABC as the playback source; raw imported MIDI has no ornament signs. Play ornaments enables the same interpretation in the editor and HTML Lesson. ~ and !roll! play main–upper–main–lower–main, with short cuts. T / !trill! and extended trills alternate with the upper neighbour; mordents and turns use the appropriate neighbours. Key signatures, current accidentals and transposition determine auxiliary pitches. Arpeggios spread chords upwards. Ornaments fit inside the written duration, including tuplets and ties: repeats, A/B loops and score following keep their timing. Exercises require the written notes, not generated auxiliaries. Disable the option to hear the plain melody. Fermatas and bowing marks remain engraved without automatic tempo holds. Interpretation varies by instrument and tradition; write explicit notes for a different realization. Re-export older lessons. Startup: ornaments=true|false; MCP: ornaments.set, enabled=true|false.

Instructions & errors

Space: hear one position, then stop. Exercises: match every note of the selected voice’s chord, octave included; release keys between chords. Wrong notes stay at the same position. − / + change the computer-keyboard octave. A/B define an exclusive-end loop. Rests are skipped in exercises. Audio is embedded; MIDI needs browser permission. URL: ?help=1. Console: help, options, clear, set --mode step. Parameters control the embedded piece, not an external file.

See and hear your instrument

Instrument guide

The 88-key piano shows selected voices: red keys sound during playback; amber keys are the next exercise target. Select several voices in the right panel; the primary voice anchors scrolling. Guitar and bass show suggested string/fret positions, not prescribed finger numbers. Frets rise toward the body at the bottom, with markers at 3, 5, 7, 9, 12 (double), 15, 17, 19, 21 and 24 (double). Twelve strings form six paired courses; lower four pairs sound octaves. Custom tuning uses MIDI pitches from low to high; blank restores the model. Winds have the mouthpiece at the bottom and separate thumb holes. One wind note at a time; unavailable fingerings are reported rather than guessed. Recorder: Baroque soprano C5–D6; whistle D5–C♯7; three-hole profiles include register and partial bell closure. Profiles vary by instrument: verify with your teacher. Display transposition changes diagrams, not sound or exercise answers. MIDI guitars and winds use note-on/off on the selected port and channels; all channels accepts separate-string channels. Audio-to-note exercise grading, breath controllers and pitch bends are not implemented. The microphone tuner measures one string, gives cents and an up/down direction; ±5 cents is in tune. A4 can be set from 430 to 450 Hz. It needs microphone permission, headphones and a clear sustained tone; close it to stop capture. Startup: voices=1,2; piano=true; instrument=guitar6/guitar12/guitar7/guitar8/guitar9/bass4/bass5/bass6/bass7/recorder/whistle/tabor/galoubet/txistu/off; instrument-transpose=0; instrument-tuning=40,45,50,55,59,64; reference-a=440. No microphone is started automatically.

One string at a time. Playback pauses during tuning. Reference sound suspends measurement; use headphones. Audio stays on this device.

Sharing and sound

Audio: the standalone lesson embeds the SF2 playback engine and shared samples for the instruments used, including their key and velocity zones, loops and envelopes. Notes are synthesized during playback, rather than exported as separate WAV files. No sound-bank download is needed. The 128 MiB limit applies to shared sample data, not song duration. Audition uses the selected instrument and stops after at most 2.5 seconds.

Read, zoom and follow · Score zoom and voice selection are in the right sidebar; ☰ opens it on narrow screens.
Recorder · Baroque C · Piano
Tablature · Guitar
Percussion
FIELD GUIDE / 12

Launch with the right options

Add options after ? in the file URL, or in its # fragment. Help opens a PowerShell-style lesson console: help, options, clear and set configure this piece, without running operating-system commands.

Help → ?help=1

lesson.html?help=1&lang=en
lesson.html?mode=step&voice=1&score-zoom=150&score-view=focus&lang=en
lesson.html?mode=midi&instrument=whistle&reference-a=440

help
options
clear
set --mode step --score-zoom 150 --score-view focus
set --mode keyboard --layout azerty --octave 4
ParameterValuesInstructions & errors
score-zoom50:300Score zoom
score-viewfocus fullScore view
notationauto score tabNotation
voicesvoice IDs, comma separatedFollow / practice voice
pianotrue | falsePiano
instrumentoff guitar6 guitar12 guitar7 guitar8 guitar9 bass4 bass5 bass6 bass7 recorder whistle tabor galoubet txistuInstrument
instrument-transpose-24:24Display transposition (semitones)
instrument-tuningMIDI pitches, low to highOpen strings (MIDI, low → high)
reference-a430:450Play reference
ornamentstrue | falsePlay ornaments
themevintage ivory porcelain graphite navy forest copper wine ice mint lavender sienna monochrome amber ocean plum sandTheme
effectsnone soft retroVisual effects
zoom60:140Interface size
helptrue | falseInstrument guide
consoletrue | falseConsole
langen fr it de es pt nl da fi sv nb is el tr ru zh ja ko ar heLanguage
modeplay step keyboard midiMode
voiceV: IDFollow / practice voice
layoutqwerty azertyKeyboard
octave0:8Octave
start0:86400Start (seconds)
loop-start0:86400Start (seconds)
loop-end0:86400End (seconds)
looptrue | falseLoop
volume0:100Volume
autoplaytrue | falseAutomatic playback
followtrue | falseFollow
midi-channel0:16Channel
midi-inputport nameInput
MCP
Launch with the right options
FIELD GUIDE / 13

Choose the right deliverable

ExportBest useKeep in mind
PDFPrinting and sharing an engraved, paginated score.Page processing is reflected in export progress.
SVGScalable score artwork and supported annotations.Vector notation, not an audio file.
ABCReadable notation source.Does not contain a complete sound bank or all project state.
MIDITimed notes and instrument/controller information.A receiving synthesizer determines the sound; transcription and source MIDI are distinct.
WAVA rendered stereo performance.Audio is no longer individually editable notes.
XM / MODSelf-contained tracker music with embedded PCM samples.Choose editable, reduced or rendered modes according to format limits.
ProjectPortable working backup.Preserves more editing state than an ABC-only export.
Original importRecover the imported source.Original bytes are separate from subsequent edits.

The intermediate export window opens before the expensive work. Measurable stages report actual completed work; stages without a reliable counter remain indeterminate. The promotional banner and its five-second waiting period are separate from conversion progress. Full screen is exited when this window appears. Cancellation prevents a cancelled job from later offering an obsolete download. Review the conversion report before accepting a file, especially when a reduced tracker arrangement was required.

ABC-YuE2 export

Export → ABC-YuE2 prepares the selected tune for YuE2. Select the source of Vocal and Ins; unused parts become rests. Two independent monophonic lines are required, never a multi-track MIDI arrangement. Strict polyphony mode refuses chords and overlaps. Highest/lowest mode chooses a note at each attack and shortens an overlapping held note. Repeats and first/second endings are expanded using the editor’s playing order; ambiguous navigation is refused. Dotted durations are preserved; tuplets or other non-native rhythms require explicit quantization on a power-of-two grid. Short or irregular bars need matching meters, without adding silence. Native plans use one integer tempo. MIDI instructions are removed and sounding pitches are retained with explicit accidentals in K:C. Optional supported chord symbols belong in Vocal; without harmony use cot=melody, otherwise cot=full. Read the preview and adaptation counts before downloading through the progress window. The A/B option exports only that passage. Structural and note-event checks do not guarantee generated sound or model context capacity. MCP: yue2.prepare and abc_export format=yue2. Quantization keeps each selected note for at least one grid step; merged attacks are refused.

Notation and selected musical events are checked. Generated audio and the complete model input budget are not checked.

yue2.prepare: options={"vocal":0,"ins":null,"polyphony":"strict","rhythm":"exact"}
abc_export: format="yue2", options={"vocal":0,"ins":null}
python tools/yue2/abc_tools.py inspect exported-yue2.abc
yue2 generate --request song.json --abc-file exported-yue2.abc --cot melody --output output-song
ABC-YuE2: choose the two melody sources and review every adaptation.
FIELD GUIDE / 14

XM and MOD: editable music within real limits

Both exporters include samples from the selected sound bank. They do not require external sample files. There is a deliberate choice between preserving an editable arrangement and preserving a rendered sound. Creating more channels helps XM only up to its format budget; it cannot make a four-channel ProTracker module unlimited.

CharacteristicXM · FastTracker IIMOD · ProTracker
TargetXM 1.04, up to 32 channels and 128 instruments.Classic four-channel MOD, 31 sample slots.
PatternsVariable row counts, up to 256 rows per pattern.64 rows per pattern; exporter limits of 100 patterns and 128 order entries.
PCM16-bit delta-encoded samples with tuning and linear periods.Signed 8-bit samples, up to 65,534 bytes per sample.
DynamicsNote/instrument volumes and mapped volume envelopes, within the 12-point envelope limit; pattern-volume handling where appropriate.Sample and effect volumes. No SF2 instrument-envelope system.
RepresentationSimplified editable, native/strict, automatic fallback, rendered stereo, or tracker techniques with 4/8/16/32-channel budgets.Native editable, automatic fallback, simplified/reduced voices, rendered stereo, or four-channel tracker techniques.

Simplified editable keeps base samples and note velocities while omitting layered zones, sustain pedal and release tails. This reduces voice pressure and changes the sound. It still has a finite simultaneous-note budget. Strict/native export preserves more of the source representation when it fits, and reports unsupported or excessive demands rather than silently pretending they fit.

Rendered stereo mixes the performance to PCM and packages it for the module engine. It accommodates complex source polyphony, but individual original notes are no longer separate tracker events. XM uses a stereo sample representation at 33,452 Hz; MOD uses its own sample-block arrangement and 8-bit constraints. The format’s tuning, quantization and playback model can still affect the result.

Automatic mode can choose a rendered fallback when a native arrangement exceeds the budget. Choose an explicitly editable mode when editing tracker notes is the priority, and inspect its report. MIDI program count and SF2 region count are not the same as the number of required module instruments.

XM representation is an explicit choice. The simplified mode retains editable notes while making its sound changes clear. Click to enlarge ↗
FIELD GUIDE / 15

Classic tracker arranging techniques

The tracker-techniques mode deliberately reshapes an arrangement for the characteristic economy of small-channel modules. It uses base samples and a bounded channel budget, then reports the transformations. The source project remains available unchanged.

  1. Repeated combinations become one sample. The planner finds pairs or triples that repeatedly begin together with matching pitch, volume and gate signatures. Candidates need at least three occurrences; drums and bass are priorities. Up to eight composite samples, each no longer than two seconds, replace recurring simultaneous parts with a single trigger. Normalization and note-volume compensation keep the mixed sample’s gain under control. Its components are no longer separately editable inside that sample.
  2. Arpeggio approximates a chord. A compatible group of up to three notes can use the 0xy effect, cycling pitch rapidly instead of sounding all pitches at once. It is a recognizable tracker texture, not true simultaneous harmony. Drums and composite samples are excluded.
  3. A quiet restart suggests continuation. When an unused channel becomes available before a note’s original end, one quieter re-trigger at 60% level can suggest its decay. This restarts a sample; it does not continue the original sample phase. Drums and composite samples are excluded.
  4. Delayed attacks favor pads. EDx can spread suitable slow attacks inside a row. With six ticks per row, ED5 is the largest permitted delay below the tick threshold. The technique planner uses 250 BPM: a tick is 10 ms and a row is 60 ms. Drums and bass are kept as timing priorities rather than being treated like pads.

Composite preparation uses 16-bit PCM at 33,452 Hz for XM and 8-bit PCM near 29,557 Hz for MOD. The technique mode simplifies envelopes, sustain, release and controller detail; later pan/effect changes and pitch bends are not a faithful performance-automation transfer. Grid placement and delayed attacks alter timing. These modes are creative reductions for an editable retro arrangement, not lossless MIDI conversion.

FIELD GUIDE / 16

Projects, library and startup

Save a tune in the local library, find it with search, reopen it, rename it or delete it. Export and import the whole library as JSON. Export Project is the more complete working backup: it carries the ABC and associated working/original import data, annotations and project settings supported by the current project. An exported MIDI or WAV is not a substitute for this backup.

Copy ABC gives plain source text. Copy share link compresses ABC into a URL for convenient transfer; it is not a complete project package and does not transport a custom sound bank. Very large links can exceed practical browser or messaging limits. Browser storage belongs to the page’s location/origin and can be cleared; moving the application or using another browser does not guarantee the same local library appears. Keep exported files outside browser storage.

The startup console documents launch arguments and examples. Startup options can select content, a template or library entry and configure the initial presentation. Local paths still require explicit file selection or a compatible launcher; a browser URL is not unrestricted access to the disk. Use the application’s Startup options reference for exact accepted arguments.

For this distribution, keep this guide beside index.html. Open the guide and press Launch ABC Editor Plus. The button uses that relative path. The guide embeds every screenshot and palette and loads no external page resources; credit links are opened only when followed. Audio playback normally needs an initial user interaction. Microphone, MIDI, clipboard, popups and full screen depend on browser support and permission.

Complete startup parameter reference

Use URL query parameters, for example index.html?lang=en&layout=studio&template=trio. Supply only one explicit document source. Boolean values accept true/false, yes/no, on/off or 1/0.

ParameterValuesPurpose
helpboolShow this console and the complete option list; do not load or play a file.
consoleboolShow the startup console after applying the other options.
langen fr it de es pt nl da fi sv nb is el tr ru zh ja ko ar heInterface language (regional codes such as fr-FR are accepted).
layoutclassic studioClassic two-panel or Studio four-panel workspace.
viewscore pianoroll trackerActive musical view; in Studio, choose the focused musical view.
themethemeInterface palette identifier. Use themes to list all identifiers.
zoom50:120Interface size in percent. Without a saved choice: 90; Reset remains 100.
filetextABC, MIDI, MusicXML or project URL/path; local paths require explicit selection or the launcher.
typeauto abc midi musicxml projectPreloaded document format; auto detects the extension or signature.
abc-texttextInline ABC text, URL-encoded. Mutually exclusive with file, abc, template and library.
abctextExisting LZ-compressed ABC sharing parameter (not plain ABC text).
templateblank trio scale lyrics reelLoad an included template rather than restoring the last document.
library1:2147483647Open a saved library project by its numeric ID, on the same browser origin.
restoreboolRestore the last session only when no explicit document is supplied (default: true).
sourceauto midi abcPlayback data source, not sound bank; midi requires a working MIDI document.
autoplayboolRequest playback after successful loading; ask for a click if the browser blocks sound.
start0:3600Initial cursor in source seconds; playback uses this position.
tempo10:1000Playback tempo override in BPM; does not rewrite Q: fields.
volume0:100Master audio level in percent; applies to the common GM sound engine.
tune1:10000One-based tune number within an ABC tunebook.
followboolEnable or disable locked follow in all musical views.
voicetextExact ABC V: identifier for score/source following.
keyboardoff audition writeTracker computer-keyboard input mode; does not request MIDI hardware access.
step4 8 12 16 32Tracker row resolution: 4=quarter, 16=sixteenth, 12=triplet grid.
stepplayboolTracker audition by row; not continuous playback.
metronomeboolEnable or disable the playback metronome.
fullscreenboolRequest app fullscreen after a user click if permission is needed.
FIELD GUIDE / 17

Keyboard and practical reference

ContextKeysAction
Tracker editingCtrl+A / X / C / V / DSelect all, cut, copy, paste, duplicate.
Tracker editingDelete · EscDelete selection; clear selection or stop/cancel the active preview or interaction.
EditingCtrl+Z · Ctrl+YUndo / redo.
Tracker pitchCtrl+↑ / ↓; add ShiftTranspose by semitone; by octave with Shift.
Tracker navigation↑ / ↓ · ← / → · Page Up / Down · Home / EndRows, voices, 16-row jumps, first/last row.
Tracker step auditionEnter / SpaceAudition the current row in the appropriate tracker input context.
Tracker note inputF1 / F2 · ShiftOctave changes; temporary upper octave.
Score pitchAlt+arrows / Alt+wheel; add ShiftSelected-note semitones; octaves with Shift.
LoopAlt+A · Alt+B · Alt+L · Alt+Shift+LSet start, set end, play loop, loop settings.
Piano rollShift+click / drag · Ctrl+wheel · EscExtend/select a group, zoom, cancel drag.
Focused dividerArrows · Shift+arrows · EnterResize, resize faster, reset.

Shortcuts are contextual: typing into a text field and entering tracker notes are different modes. The visible tooltips and contextual Help panels are the immediate reference. If a browser intercepts a key, use the matching on-screen control.

MCP · API · JSON · UIMCP · JSON
QUICK LOOKUP

Find a control

A searchable inventory of the application’s named buttons and tools. Read the relevant chapter for behavior and limitations.

  • Export HTML Lesson
  • Interface zoom
  • Toggle library
  • Copy share link
  • New tune
  • Save tune
  • Undo last change (0/5) · Ctrl+Z
  • Redo last undone change (0/5) · Ctrl+Y
  • Play / Pause
  • Play from cursor
  • Stop playback
  • Toggle mixer
  • Toggle metronome
  • Measure loop
  • Reset audio
  • Play MIDI source
  • Play ABC source
  • Tempo +5 BPM
  • Tempo −5 BPM
  • Set A at cursor
  • Set B at cursor
  • Enable / disable loop
  • Play loop
  • A/B loop settings
  • Score view
  • Piano roll view
  • Tracker view
  • I–IV–V harmonization
  • Toggle karaoke
  • Import file
  • Import ABC
  • Import MIDI
  • Import MusicXML
  • Import audio
  • Export tune
  • Export project
  • Export original import
  • Export PDF
  • Export ABC
  • Export ABC-YuE2
  • Export SVG
  • Export MIDI
  • Export XM (FastTracker II)
  • Export MOD (ProTracker)
  • Export WAV
  • Export loop — WAV
  • Export loop — MIDI
  • Export loop — MOD
  • Export loop — ABC
  • Help and legal notice
  • Copy ABC source
  • Toggle playback synchronization
  • Toggle palette
  • Toggle analysis
  • Validate ABC source
  • Toggle lyrics
  • Tune templates
  • Transpose tune
  • Open project
  • Keep the selected voice visible in ABC and score. Click to scroll freely.
  • Close palette
  • Insert C
  • Insert D
  • Insert E
  • Insert F
  • Insert G
  • Insert A
  • Insert B
  • Insert c
  • Insert d
  • Insert e
  • Insert f
  • Insert g
  • Insert a
  • Insert b
  • Insert sharp
  • Insert flat
  • Insert natural
  • Insert quarter-note duration
  • Insert half-note duration
  • Insert eighth-note duration
  • Insert sixteenth-note duration
  • Insert rest
  • Insert half-note rest
  • Insert barline
  • Insert final barline
  • Insert repeat start
  • Insert repeat end
  • Close lyrics
  • Add verse
  • Insert lyric slots
  • Toggle lyrics display
  • Reload ABC lyrics
  • Lower selected note by one semitone. Alt+arrows or Alt+wheel; Shift: octave.
  • Raise selected note by one semitone. Alt+arrows or Alt+wheel; Shift: octave.
  • Toggle annotations
  • Automatic annotations
  • Rendering options
  • Add empty voice
  • Delete selected voice
  • Zoom in
  • Zoom out
  • Reset zoom
  • Toggle auto-scroll
  • Toggle voice legend
  • Toggle help
  • Open in a separate window
  • Select or move annotations
  • Delete annotation
  • Add fingering 1
  • Add fingering 2
  • Add fingering 3
  • Add fingering 4
  • Add fingering 5
  • Add fingering 0
  • Add dynamic pp (pianissimo)
  • Add dynamic p (piano)
  • Add dynamic mp (mezzo-piano)
  • Add dynamic mf (mezzo-forte)
  • Add dynamic f (forte)
  • Add dynamic ff (fortissimo)
  • Add dynamic sfz (sforzando)
  • Add crescendo
  • Add decrescendo
  • Add staccato
  • Add tenuto
  • Add accent
  • Add marcato
  • Add fermata
  • Add breath
  • Add caesura
  • Add double-slash breath
  • Add down-bow
  • Add up-bow
  • Add bowing
  • Add trill
  • Add mordent
  • Add inverted mordent
  • Add accelerando
  • Add ritardando
  • Add a tempo
  • Add highlight
  • Add circle
  • Add right arrow
  • Add diagonal arrow
  • Add text
  • Duplicate annotation
  • Delete automatic annotations
  • Delete all annotations
  • Exit annotation mode
  • Close help
  • Close voice legend
  • Previous row and audition
  • Audition current row
  • Next row and audition
  • Stop all preview notes
  • Add voice
  • Delete last voice
  • First row
  • Toggle follow lock
  • Toggle tracker help
  • Play the selected tracker voice with a MIDI keyboard
  • Stop all preview sounds
  • Delete selection (Del)
  • Duplicate selection (Ctrl+D)
  • Select all (Ctrl+A)
  • Clear selection (Esc)
  • Lower selection by one semitone (Ctrl+↓)
  • Raise selection by one semitone (Ctrl+↑)
  • Lower selection by one octave (Ctrl+Shift+↓)
  • Raise selection by one octave (Ctrl+Shift+↑)
  • Cut selection (Ctrl+X)
  • Copy selection (Ctrl+C)
  • Paste at cursor (Ctrl+V)
  • Close karaoke
  • Close library
  • Export library JSON
  • Import library JSON
  • Open ABC diagnostics (0)
  • Remove verified empty voices
  • Performance profile
  • Toggle pitch detection
  • Detect chords
  • Generate harmonization
  • 🤖 Analyze and annotate
  • Enable
  • 📥 Transcribe to ABC
  • 📥 Convert
  • 🎼 + Drums
  • 🎻 Duo
  • 🎼 Trio
  • 🎵 Scale
  • 📝 Song
  • 🎻 Reel
  • ⬜ Blank
  • Startup console
  • Reset panel sizes
  • Toggle full screen
  • Sound settings
  • Show startup arguments and examples
  • Load SF2…
  • Built-in bank
  • Record
  • Stop capture
  • Clear
  • Export JSON
  • By measures…
  • Clear loop
  • Create MOD
  • Create XM
  • Tracker note velocity
  • Tracker input octave
  • Tracker input advance
  • Tracker grid resolution
  • Tracker keyboard mode: Off, Audition, Write
  • Tracker keyboard layout: Auto, QWERTY, AZERTY, QWERTZ
  • MIDI input port
  • MIDI input channel: All or 1–16
  • MIDI input mode: Audition or Write
  • Piano-roll voice selector
  • Piano-roll instrument selector
  • Tune selector
  • Interface language
  • Workspace layout: Classic or Studio
  • Interface theme: 17 palettes
  • Score scale
  • Score font scale
  • Swing percentage
  • Tablature instrument
  • Chord grid
  • Responsive staff layout
  • Explicit staff width
  • Annotation color
  • Annotation size
  • Master sound level
  • Room reverb level
  • Chorus level
  • Audio-import tempo
  • Audio-import silence threshold
  • Audio-import analysis engine
  • MIDI transcription note unit
  • MIDI transcription rhythm
  • XM representation mode
  • XM technique channel budget
  • MOD representation mode
  • Measure-loop repetition count
  • Performance capture duration
LOCAL AUTOMATION

MCP: control the editor and its lessons

Version 1.11 adds a local stdio MCP companion. Configure the supplied server with Configure_MCP.cmd, then call abc_launch from your MCP client. Node.js 22 or later is required. The editor remains a standalone HTML application when remote control is not needed.

The companion exposes 13 tools, 114 named actions and a live catalogue of fine controls. Inspect ABC, notes, voices, annotations, sound, layouts and diagnostics; edit with document revisions; control transport and loops; import files and export through the existing progress window. Collection respects the advertising countdown and any required conversion-loss review.

Independent HTML lessons can also connect. Synthetic test answers remain separate from student performance. Browser permissions for sound and hardware still apply. The integrated MCP and lesson help is available in all 20 interface languages.

The default local port is 8766. Existing file-based browser libraries must be exported and imported into this origin. Temporary files can be saved only in the configured export folder. Keep the launch URL and its temporary token private.

Installation, full command schemas and examples · Measured CPU cost · Verification and limits

Windows desktop edition

Windows 64-bit: use Setup for a per-user installation, or Portable without installation. Keep the portable executable in a writable folder. Its ABC-Editor-Plus-Data folder stores preferences, exports and MCP settings beside the executable; move both together. The installed edition stores its data in the Windows user profile. Uninstalling preserves that data.

File → Open imports supported music, audio and sound-bank files through the editor’s existing checks. Export from the editor as usual, then choose a destination in the Windows save dialog. Help → Application data opens the settings folder. Save project backups before closing. The HTML Lesson export remains an independent browser file.

MCP starts with the application and stops when it closes. No separate Node.js installation is required. Keep the desktop editor open; choose Help → Create MCP client configuration, then import the generated mcp-config.json entry into your client. The mcp-stdio.cjs argument connects that client to this desktop instance. It does not start a second editor. The browser companion and desktop companion remain separate.

Allow MIDI or microphone access only when needed. Ordinary editing and playback use the bundled resources locally; online links and optional transcription services require a connection. Detached windows share the editor’s session. The application remembers its window size. F11 switches full screen; the existing export window exits full screen automatically.

The desktop menus currently use English; the editor and this desktop help offer all 20 languages. No automatic updater is included. These executables are not digitally signed. Hardware MIDI, microphone input and audio latency depend on your devices and should be checked on the target computer.

PEOPLE & COMPONENTS

Credits and full notices

Credits and sources

Maxime LORRAI — ABC Editor Plus

Complete third-party notices

Authors and licenses
ABC Editor Plus — Maxime LORRAI

Third-party authors and notices



abcjs-6.4.4.js

! abcjs_basic v6.4.4 Copyright © 2009-2024 Paul Rosen and Gregory Dyke (https://abcjs.net)



codemirror-5.65.16.js



jspdf-2.5.1.js

* @license
 *
 * jsPDF - PDF Document creation from JavaScript
 * Version 2.5.1 Built on 2022-01-28T15:37:57.789Z
 *                      CommitID 00000000
 *
 * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
 *               2015-2021 yWorks GmbH, http://www.yworks.com
 *               2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX
 *               2016-2018 Aras Abbasi <aras.abbasi@gmail.com>
 *               2010 Aaron Spike, https://github.com/acspike
 *               2012 Willow Systems Corporation, https://github.com/willowsystems
 *               2012 Pablo Hess, https://github.com/pablohess
 *               2012 Florian Jenett, https://github.com/fjenett
 *               2013 Warren Weckesser, https://github.com/warrenweckesser
 *               2013 Youssef Beddad, https://github.com/lifof
 *               2013 Lee Driscoll, https://github.com/lsdriscoll
 *               2013 Stefan Slonevskiy, https://github.com/stefslon
 *               2013 Jeremy Morel, https://github.com/jmorel
 *               2013 Christoph Hartmann, https://github.com/chris-rock
 *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
 *               2014 James Makes, https://github.com/dollaruw
 *               2014 Diego Casorran, https://github.com/diegocr
 *               2014 Steven Spungin, https://github.com/Flamenco
 *               2014 Kenneth Glassey, https://github.com/Gavvers
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * Contributor(s):
 *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
 *    kim3er, mfo, alnorth, Flamenco

*
   * A class to parse color values
   * @author Stoyan Stefanov <sstoo@gmail.com>
   * {@link   http://www.phpied.com/rgb-color-parser-in-javascript/}
   * @license Use it if you like it

*
   * @license
   * Joseph Myers does not specify a particular license for his work.
   *
   * Author: Joseph Myers
   * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js
   *
   * Modified by: Owen Leong

*
   * @license
   * FPDF is released under a permissive license: there is no usage restriction.
   * You may embed it freely in your application (commercial or not), with or
   * without modifications.
   *
   * Reference: http://www.fpdf.org/en/script/script37.php

*
   * @license
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   * Author: Owen Leong (@owenl131)
   * Date: 15 Oct 2020
   * References:
   * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt
   * https://github.com/foliojs/pdfkit/blob/master/lib/security.js
   * http://www.fpdf.org/en/script/script37.php

*
   * @license
   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * Copyright (c) 2017 Aras Abbasi
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

* @license
   * jsPDF Autoprint Plugin
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * jsPDF filters PlugIn
   * Copyright (c) 2014 Aras Abbasi
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * jsPDF fileloading PlugIn
   * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * ====================================================================
   * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com
   *
   * Permission is hereby granted, free of charge, to any person obtaining
   * a copy of this software and associated documentation files (the
   * "Software"), to deal in the Software without restriction, including
   * without limitation the rights to use, copy, modify, merge, publish,
   * distribute, sublicense, and/or sell copies of the Software, and to
   * permit persons to whom the Software is furnished to do so, subject to
   * the following conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   * ====================================================================

*
   * @license
   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   *
   * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
   *
   * Permission is hereby granted, free of charge, to any person obtaining
   * a copy of this software and associated documentation files (the
   * "Software"), to deal in the Software without restriction, including
   * without limitation the rights to use, copy, modify, merge, publish,
   * distribute, sublicense, and/or sell copies of the Software, and to
   * permit persons to whom the Software is furnished to do so, subject to
   * the following conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   * ====================================================================

*
   * @license
   * (c) Dean McNamee <dean@gmail.com>, 2013.
   *
   * https://github.com/deanm/omggif
   *
   * Permission is hereby granted, free of charge, to any person obtaining a copy
   * of this software and associated documentation files (the "Software"), to
   * deal in the Software without restriction, including without limitation the
   * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   * sell copies of the Software, and to permit persons to whom the Software is
   * furnished to do so, subject to the following conditions:
   *
   * The above copyright notice and this permission notice shall be included in
   * all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   * IN THE SOFTWARE.
   *
   * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,
   * including animation and compression.  It does not rely on any specific
   * underlying system, so should run in the browser, Node, or Plask.

*
   * @license
    Copyright (c) 2008, Adobe Systems Incorporated
    All rights reserved.

    Redistribution and use in source and binary forms, with or without 
    modification, are permitted provided that the following conditions are
    met:

    * Redistributions of source code must retain the above copyright notice, 
      this list of conditions and the following disclaimer.
    
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the 
      documentation and/or other materials provided with the distribution.
    
    * Neither the name of Adobe Systems Incorporated nor the names of its 
      contributors may be used to endorse or promote products derived from 
      this software without specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*
   * @license
   * Copyright (c) 2017 Aras Abbasi
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

* @license
     * Copyright (c) 2017 Dominik Homberger
    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    https://webpjs.appspot.com
    WebPRiffParser dominikhlbg@gmail.com

*
   * @license
   * Copyright (c) 2018 Aras Abbasi
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * Copyright (c) 2019 Aras Abbasi
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   *
   * Copyright (c) 2021 Antti Palola, https://github.com/Pantura
   *
   * Permission is hereby granted, free of charge, to any person obtaining
   * a copy of this software and associated documentation files (the
   * "Software"), to deal in the Software without restriction, including
   * without limitation the rights to use, copy, modify, merge, publish,
   * distribute, sublicense, and/or sell copies of the Software, and to
   * permit persons to whom the Software is furnished to do so, subject to
   * the following conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   * ====================================================================

*
   * @license
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * ====================================================================
   * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br
   *
   * Permission is hereby granted, free of charge, to any person obtaining
   * a copy of this software and associated documentation files (the
   * "Software"), to deal in the Software without restriction, including
   * without limitation the rights to use, copy, modify, merge, publish,
   * distribute, sublicense, and/or sell copies of the Software, and to
   * permit persons to whom the Software is furnished to do so, subject to
   * the following conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   * ====================================================================

* ====================================================================
   * @license
   * jsPDF XMP metadata plugin
   * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi
   *
   * Permission is hereby granted, free of charge, to any person obtaining
   * a copy of this software and associated documentation files (the
   * "Software"), to deal in the Software without restriction, including
   * without limitation the rights to use, copy, modify, merge, publish,
   * distribute, sublicense, and/or sell copies of the Software, and to
   * permit persons to whom the Software is furnished to do so, subject to
   * the following conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   * ====================================================================

*
   * @license
   * jsPDF virtual FileSystem functionality
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license

*
   * @license
   * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)
   * MIT License



lz-string-1.5.0.js



tonejs-midi-2.0.28.js



ABCJS-6.4.4.txt

MIT License

Copyright (c) 2009-2024 Paul Rosen and Gregory Dyke

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/paulrosen/abcjs/v6.4.4/LICENSE.md




CodeMirror-5.65.16.txt

MIT License

Copyright (C) 2017 by Marijn Haverbeke <marijn@haverbeke.berlin> and others

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/codemirror/codemirror5/5.65.16/LICENSE




Tonejs-Midi.txt

MIT License

Copyright (c) 2016 Yotam Mann

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/Tonejs/Midi/master/LICENSE.md




jsPDF-2.5.1.txt

/** @license
 *
 * jsPDF - PDF Document creation from JavaScript
 * Version 2.5.1 Built on 2022-01-28T15:37:57.789Z
 *                      CommitID 00000000
 *
 * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
 *               2015-2021 yWorks GmbH, http://www.yworks.com
 *               2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX
 *               2016-2018 Aras Abbasi <aras.abbasi@gmail.com>
 *               2010 Aaron Spike, https://github.com/acspike
 *               2012 Willow Systems Corporation, https://github.com/willowsystems
 *               2012 Pablo Hess, https://github.com/pablohess
 *               2012 Florian Jenett, https://github.com/fjenett
 *               2013 Warren Weckesser, https://github.com/warrenweckesser
 *               2013 Youssef Beddad, https://github.com/lifof
 *               2013 Lee Driscoll, https://github.com/lsdriscoll
 *               2013 Stefan Slonevskiy, https://github.com/stefslon
 *               2013 Jeremy Morel, https://github.com/jmorel
 *               2013 Christoph Hartmann, https://github.com/chris-rock
 *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
 *               2014 James Makes, https://github.com/dollaruw
 *               2014 Diego Casorran, https://github.com/diegocr
 *               2014 Steven Spungin, https://github.com/Flamenco
 *               2014 Kenneth Glassey, https://github.com/Gavvers
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * Contributor(s):
 *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
 *    kim3er, mfo, alnorth, Flamenco
 */




lz-string-1.5.0.txt

MIT License

Copyright (c) 2013 pieroxy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/pieroxy/lz-string/1.5.0/LICENSE




Dracula CSS — Michael Kaminsky; original colors by Zeno Rocha — MIT
https://github.com/codemirror/codemirror5/blob/5.65.16/theme/dracula.css

Lato — Łukasz Dziedzic — SIL Open Font License — https://www.latofonts.com/

DejaVu / Bitstream Vera — https://dejavu-fonts.github.io/License.html

Dracula-CodeMirror.txt
CodeMirror Dracula theme
Author: Michael Kaminsky
Original color scheme: Zeno Rocha
Source: https://github.com/codemirror/codemirror5/blob/5.65.16/theme/dracula.css

MIT License

Copyright (C) 2017 by Marijn Haverbeke <marijn@haverbeke.berlin> and others

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/codemirror/codemirror5/5.65.16/LICENSE


midi-file-LICENSE.txt
MIT License

Copyright © 2016 Carter Thaxton
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/Tonejs/Midi/master/LICENSE.md

Source: https://github.com/carter-thaxton/midi-file


array-flatten-LICENSE.txt
MIT License

Copyright (c) 2014 Blake Embrey
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Source: https://raw.githubusercontent.com/Tonejs/Midi/master/LICENSE.md

Source: https://github.com/blakeembrey/array-flatten

TimGM6mb General MIDI sound bank

Tim Brechbill (2004), David Bolton (2010). GPL-2. The embedded sound-bank notice is reproduced in full below.

TimGM6mb — copyright and license
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: timgm6mb
Source: https://github.com/musescore/musescore-old/commit/90c33ef9d87b3f5ff92efd3b07d89eb455fb1fef

Files: TimGM6mb.sf2
Copyright: 2004 Tim Brechbill <https://www.timbrechbill.com>
  2010 David Bolton <davidkbolton@gmail.com>
License: GPL-2
 This package is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <https://www.gnu.org/licenses/>
 .
 On Debian systems, the complete text of the GNU General
 Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
Comment:
 Thomas • Dec 6, 2009 - 16:51
 Tim came back to me with some more information about the soundfont: "I created
 some of the samples myself and all others are either public domain or fall
 under the terms of the GNU General Public License." For me this is enough to
 add his soundfont to the repository.
 <https://musescore.org/en/node/1463#comment-9168>

Files: debian/*
Copyright: 2015 Toby Smithe <tsmithe@ubuntu.com>
  2015 Tiago Bortoletto Vaz <tiago@debian.org>
  2015-2020 Fabian Greffrath <fabian@debian.org>
License: GPL-3+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <https://www.gnu.org/licenses/>.
 .
 On Debian systems, the full text of the GNU General Public
 License version 2 can be found in the file
 `/usr/share/common-licenses/GPL-3'.

                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Moe Ghoul>, 1 April 1989
  Moe Ghoul, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

Lesson compression and instrument references

HTML lessons use pako (MIT). Instrument fingering references: Yamaha — Baroque recorder, abcm2ps tables — Guido Gonzato, Michel Bellon, and Pipe and Tabor Society.

pako · MIT license
(The MIT License)

Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

YuE2 native ABC reference and portable checker: YuE2 authors · Apache-2.0. Commit 1647252d68b70cbead046ffd3f7caf036dde47ee.

Audio transcription references

Local melody estimator: original application code using the YIN principle, Alain de Cheveigné and Hideki Kawahara (2002), doi:10.1121/1.1458024. Optional SheetSage2 — Multimodal Art Projection, CC BY-NC 4.0; separately installed, with model files not bundled.

ABC Editor Plus is by Maxime LORRAI. The application is supplied as is; inspect converted music and keep exported backups. The component notices above retain their respective terms. This guide does not grant a new license to those components.