diff --git a/.github/funding.yml b/.github/funding.yml new file mode 100644 index 0000000..11ef0ba --- /dev/null +++ b/.github/funding.yml @@ -0,0 +1,6 @@ +# If you found my work useful and wish to give thanks or support my random obsessions, feel free to use the link below or to contribute to the project :) +# Buy Me A Coffee: https://buymeacoffee.com/stephanroos +buy_me_a_coffee: stephanroos + +# Financial support is not required, but I always sincerely appreciate it. +# Many thanks are extended to all who support open-source projects. diff --git a/README.md b/README.md new file mode 100644 index 0000000..143aa99 --- /dev/null +++ b/README.md @@ -0,0 +1,109 @@ +# Woodwind Tab Generator for MuseScore 4 + +A MuseScore Studio V4.X plugin for highly flexible fingering tab creation for woodwinds, using the familiar tin whistle tab style. + +## Contents + +- [Overview](#overview) +- [Installation](#installation) +- [Usage](#usage) +- [Adding Your Own Woodwinds](#adding-your-own-woodwinds) +- [Troubleshooting](#troubleshooting) + +--- + +## Overview + +This plugin offers several predefined whistles as well as custom alternative woodwinds (e.g. Ocarina). The following are fully user-customizable: + +- Font size, family, and justification +- Spacing and vertical offset from the staff +- Layout of the finger holes + +The plugin also remembers settings, responds to dark and light mode themes, supports undo and redo, and provides a live preview of note fingering with the selected settings. + +--- + +This plugin was inspired by the [tin-whistle-tablature project](https://github.com/jgadsden/tin-whistle-tablature/tree/main), which has the notable advantage of reducing diagram size for short notes. This project also offers several additional advantages: + +- **Completely customizable fingering diagrams** with support for an unlimited number of holes — especially useful for makers of unique designs such as the [Chromophone](https://www.natco.co/khromophone/specs.php), or uncommon whistles and woodwinds. +- **Font installation is optional** — required custom font glyphs are sideloaded automatically when the extension loads. +- **Diagrams are constructed one hole at a time** — the inserted diagram is plain text and can be edited as such. +- **Customizable look with intelligent overwriting** — font, size, justification, offset, line spacing, and transposition are all supported. Modifying tabs cleanly replaces existing ones if present. +- **Add your own whistles!** Strange cross-fingerings? Custom preferences? A 9-hole G whistle? No problem. + +--- + +## Installation + +> **Note:** This plugin was tested on MuseScore 4. API compatibility with other versions has not been evaluated. + +1. Download `Woodwind_Tab_Generator.zip` from the releases page. +2. Extract the zip file to a folder. +3. Follow the [MuseScore plugin installation instructions](https://musescore.org/en/handbook/4/plugins#installation), starting from step 5 — drop the `Woodwind_Tab_Generator` folder (containing the `.qml` file, icon, and font) into the MuseScore plugin directory. +4. Run the plugin from the plugin menu to open the configuration window. + +--- + +## Usage + +Opening the plugin presents the configuration window: + +![GUI of woodwind generator in light mode](imgs/GUI_LowD_Light.png "GUI, light mode") +![GUI of woodwind generator in dark mode](imgs/GUI_Ocarina_Dark.png "GUI, dark mode") + +From here you can select a woodwind definition, customize settings or the format string, and apply to generate the tab. + +**Examples:** + +Low D Whistle: +![Example Tab Generated for the Low D whistle](imgs/Example_Tab_LowD.png "Low D") + +Alto C Ocarina: +![Example Tab Generated for the Ocarina](imgs/Example_Tab_Ocarina.png "Ocarina") + +--- + +## Adding Your Own Woodwinds + +1. Open `woodwind_tab_generator.qml` and navigate to the section: +```text +//--------------------------------------------------------- +// FINGERING DICTIONARY +// Last bit = plus sign indicator +//--------------------------------------------------------- +``` + +2. Add your own fingering definition in the same format as the existing examples, using the following fields: + +> **Note:** Notes are currently defined by their sounding pitch, not their written notation (relevant for transposing instruments). + +| Field | Description | +|---|---| +| `name` | The name of the woodwind as shown in the GUI. | +| `fingeringDict` | A dictionary of notes and fingering patterns. Uses note names (sharps required) and numerical fingering representations. Left→right, starting from hole one (represented as `$1..`), with the last digit indicating the number of times to overblow (accessed with the `$+` variable). | +| `formatString` | The string used to lay out the holes on the tab. Use `\n` for a new line. | + +**Tip for complex layouts (e.g. Ocarina):** Use a temporary template in the format string field, open the plugin, and adjust the layout using the preview as a guide. Then copy the format string (including whitespace) into a text editor and replace literal newlines (`\n`) with `\\n` — you may need to enable regex replace in your editor. See the Ocarina definition for an example of a more complex layout. + +![Visual guide for specifying a woodwind fingering diagram entry](imgs/Whistle%20Specification.jpg "Example Instrument Entry") + +If you'd prefer, you can also open an issue with a clear description of your instrument and fingering patterns and I can add it for you. + +--- + +## Troubleshooting + +>#### My tab symbols are smaller after saving and reloading the project +This plugin loads its own font to ensure symbols render at the correct size. However, since the font isn't loaded until the plugin starts, MuseScore may fall back to a default font on reload. + +To fix this, either: +- Re-insert the tab using the plugin, or +- Install `WhistleSymbols.ttf` (found in the `woodwind_tab_generator` plugin folder) system-wide: + - **Windows:** Right-click → *Install for all users* + - **Linux:** Open with your system's font manager and install + +>#### I am getting ☒ symbols underneath my notes +This means the note couldn't be found in your instrument definition — i.e. it cannot be played on your instrument. + +Try transposing the music. If you are using an instrument like a whistle where the notation is written an octave lower than it sounds, check the **Transposed** box in the plugin settings. diff --git a/imgs/Example_Tab_LowD.png b/imgs/Example_Tab_LowD.png new file mode 100644 index 0000000..23c1266 Binary files /dev/null and b/imgs/Example_Tab_LowD.png differ diff --git a/imgs/Example_Tab_Ocarina.png b/imgs/Example_Tab_Ocarina.png new file mode 100644 index 0000000..6f54484 Binary files /dev/null and b/imgs/Example_Tab_Ocarina.png differ diff --git a/imgs/GUI_LowD_Light.png b/imgs/GUI_LowD_Light.png new file mode 100644 index 0000000..2575e70 Binary files /dev/null and b/imgs/GUI_LowD_Light.png differ diff --git a/imgs/GUI_Ocarina_Dark.png b/imgs/GUI_Ocarina_Dark.png new file mode 100644 index 0000000..ced779c Binary files /dev/null and b/imgs/GUI_Ocarina_Dark.png differ diff --git a/imgs/Whistle Specification.jpg b/imgs/Whistle Specification.jpg new file mode 100644 index 0000000..dec843c Binary files /dev/null and b/imgs/Whistle Specification.jpg differ