diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..70c932a --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,20 @@ +**Summary** : + + +**Description for the changelog** : + + +**Other info** : + diff --git a/.github/workflows/housekeeping.yaml b/.github/workflows/housekeeping.yaml new file mode 100644 index 0000000..f62f12b --- /dev/null +++ b/.github/workflows/housekeeping.yaml @@ -0,0 +1,44 @@ +name: Housekeeping +on: + # Run daily at 7:00 + schedule: + - cron: '0 7 * * *' + workflow_dispatch: + +# for security reasons the github actions are pinned to specific release versions +jobs: + chores: + name: Tidy workflows + runs-on: ubuntu-22.04 + permissions: + actions: write + + steps: + - name: Delete stale workflow runs + uses: Mattraks/delete-workflow-runs@v2.0.6 + with: + token: ${{ github.token }} + repository: ${{ github.repository }} + retain_days: 28 + keep_minimum_runs: 25 + + - name: Delete unused workflows + uses: otto-de/purge-deprecated-workflow-runs@v2.0.3 + with: + token: ${{ github.token }} + + link_checker: + name: Link checker + runs-on: ubuntu-22.04 + + steps: + - name: Checkout markdown + uses: actions/checkout@v4.1.1 + + - name: Link Checker + uses: lycheeverse/lychee-action@v1.9.1 + with: + args: --verbose --no-progress --max-retries 5 '**/*.md' '*.md' + fail: true + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml new file mode 100644 index 0000000..4e0b936 --- /dev/null +++ b/.github/workflows/pull-request.yaml @@ -0,0 +1,35 @@ +name: Pull request pipeline +on: + pull_request: + branches: + - main + workflow_dispatch: + +# for security reasons the github actions are pinned to specific release versions +jobs: + link_checker: + name: Link checker + runs-on: ubuntu-22.04 + + steps: + - name: Checkout markdown + uses: actions/checkout@v4.1.1 + + - name: Link Checker + uses: lycheeverse/lychee-action@v1.9.1 + with: + args: --verbose --no-progress --max-retries 5 '**/*.md' '*.md' + fail: true + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + + spell_checker: + name: Check spelling + runs-on: ubuntu-22.04 + + steps: + - name: Checkout markdown + uses: actions/checkout@v4.1.1 + + - name: spell_checker + uses: rojopolis/spellcheck-github-actions@0.36.0 diff --git a/.lycheeignore b/.lycheeignore new file mode 100644 index 0000000..4aec7f6 --- /dev/null +++ b/.lycheeignore @@ -0,0 +1 @@ +# ignore these false positives from the link checker housekeeper diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..5e14f56 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,17 @@ +--- +no-trailing-punctuation: false +no-inline-html: false +first-line-heading: false +link-fragments: false + +# MD013 - Line length +MD013: + code_block_line_length: 120 + code_blocks: true + heading_line_length: 80 + headings: true + line_length: 128 + stern: true + strict: false + tables: true + diff --git a/.spellcheck.yaml b/.spellcheck.yaml new file mode 100644 index 0000000..cb66a0e --- /dev/null +++ b/.spellcheck.yaml @@ -0,0 +1,20 @@ +matrix: +- name: Markdown + aspell: + lang: en + dictionary: + wordlists: + - .wordlist.txt + output: wordlist.dic + encoding: utf-8 + pipeline: + - pyspelling.filters.markdown: + - pyspelling.filters.html: + comments: false + ignores: + - code + - pre + sources: + - '**/*.md' + default_encoding: utf-8 + diff --git a/.wordlist.txt b/.wordlist.txt new file mode 100644 index 0000000..85e8f8f --- /dev/null +++ b/.wordlist.txt @@ -0,0 +1,17 @@ +MuseScore +musescore +Github +github +repo +Blayne +Chastain +Chastain's +blaynechastain +www +Tablature +tablature +Tunings +tunings +Flageolet +Dm +QML \ No newline at end of file diff --git a/README.md b/README.md index f1eb483..3b43234 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,14 @@ that you may bump into. ### Installing Font -This plugin relies on a tin whistle tablature font being installed from +This plugin relies on a tin whistle tablature font being installed from [Blayne Chastain's site](https://www.blaynechastain.com/wp-content/uploads/TinWhistleTab.zip). You can also download it from our [release area][font]. If the font isn't installed you will be presented with a message box telling you -how to obtain the font. To install the font, it is usually just a case of double-clicking -the downloaded `.ttf` file and agreeing to the install process. If that does not work then -on linux systems try copying the TinWhistleTab.ttf font file to the `/usr/share/fonts/truetype/` directory. +how to obtain the font. To install the font, it is usually just a case of double-clicking +the downloaded `.ttf` file and agreeing to the install process. If that does not work then +on Linux systems try copying the `TinWhistleTab.ttf` font file to the `/usr/share/fonts/truetype/` directory. However, if you are installing the font on a Windows 10 system you will need to ensure you install the font for "all users". You can do this by right clicking on the file and selecting "Install for all users" as illustrated here: @@ -78,7 +78,7 @@ When you wish to apply the tabs then navigate to 'Plugins' -> 'Tin Whistle' -> ![Diagram of tin whistle tabs applied to the score version 3](images/whistle-tabs-after-v3.png "Tin Whistle tabs applied version 3") -and the equivelent if using MuseScore 2 : +and the equivalent if using MuseScore 2 : ![Diagram of tin whistle tabs applied to the score version 2](images/whistle-tabs-after.png "Tin Whistle tabs applied version 2") @@ -86,7 +86,7 @@ You can back out by navigating to 'Edit' -> 'Undo'. ### Having problems? -Note that this plugin relies on a font being installed, see the 'Installating font' instructions. +Note that this plugin relies on a font being installed, see the 'Installing font' instructions. The plugin will skip any staffs that are not for a Tin Whistle, so for example if the staff is for the Irish Flute then it will not apply the tabs. @@ -95,7 +95,7 @@ This makes sense as other instrument's fingering will be different. ## Extra Tin Whistle and Low Whistle Tunings The files `all-whistles.xml` and `all-whistles-v4.xml` are extra instrument files -for adding both High Tin Whistle types and Low Whistle types to MuseScore. +for adding both High Tin Whistle types and Low Whistle types to MuseScore. MuseScore comes with whistles D, C and B♭ by default but you may want to use other tunings. The High Tin Whistle, which is a metal 6 hole Flageolet, comes in various tunings. @@ -125,7 +125,7 @@ The file `all-whistles.xml` or `all-whistles-v4.xml` needs to be installed using Download the `all-whistles-v4.xml` [instrument extension file][whistles-v4] to your operating system. -1. Start Version 4.x Musescore +1. Start Version 4.x MuseScore 2. use the drop down menus to navigate 'MuseScore' then 'Preferences...' then 'Score' panel 3. Use the file icon beside 'Score Order List 2:' to select the downloaded `all-whistles.xml` file 4. Accept the changes using the OK button @@ -140,7 +140,7 @@ Use the same file for both MuseScore version 2.x and version 3.x : 1. For MuseScore 2.x: copy file `all-whistles.xml` to `Documents/MuseScore2/Extensions/all-whistles.xml` 2. Or for MuseScore 3.x: copy file `all-whistles.xml` to `Documents/MuseScore3/Extensions/all-whistles.xml` -3. within Musescore menu, navigate to 'MuseScore' then 'Preferences...' then 'Score' tab +3. within MuseScore menu, navigate to 'MuseScore' then 'Preferences...' then 'Score' tab 4. in the Default Files panel, add the file to 'Instrument List 2' extension by: 5. browsing to `Documents/MuseScore3/Extensions/all-whistles.xml` and add to 'Instrument List 2' 6. Accept the changes with the OK button @@ -164,18 +164,18 @@ adjust the tab diagram position for the lowest note possible. Prior to MuseScore 3.2: -* The instrument type used on a staff can NOT be detected. In this case the plugin will -assume that a whistle tuned to D is used - this being the most common whistle. +* The instrument type used on a staff can NOT be detected. In this case the plugin will +assume that a whistle tuned to D is used - this being the most common whistle. -* This plugin only supports grace notes that lead the main note. Tabs for trailing grace -notes will be rendered as leading notes which is not what you want. In fact the trailing -notes will be out of order. +* This plugin only supports grace notes that lead the main note. Tabs for trailing grace +notes will be rendered as leading notes which is not what you want. In fact the trailing +notes will be out of order. Prior to MuseScore 3.3: -* You may see some minor issues with grace note tab positioning. The actual physical -position of the grace notes was not available before v3.3 so a heuristic approach -(aka good 'ole human observation) is used to get a decent overall result even though +* You may see some minor issues with grace note tab positioning. The actual physical +position of the grace notes was not available before v3.3 so a heuristic approach +(aka good 'ole human observation) is used to get a decent overall result even though it's not perfect. Here is an example of how the fingering tab images are accurately positioned in MuseScore 3.3+: diff --git a/code_of_conduct.md b/code_of_conduct.md new file mode 100644 index 0000000..97594ea --- /dev/null +++ b/code_of_conduct.md @@ -0,0 +1,131 @@ +# Contributor Covenant Code of Conduct + +DevGuide logo + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement by +emailing [the project team](mailto:owasp.foundation@owasp.org) at the OWASP foundation. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available from the [contributor covenant][cofc] site. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][diversity]. + +See the [FAQ][faq] for answers to common questions about this code of conduct, +and translations are available of this [contributor covenant][translate]. + +[cofc]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[diversity]: https://github.com/mozilla/diversity +[faq]: https://www.contributor-covenant.org/faq +[homepage]: https://www.contributor-covenant.org +[translate]: https://www.contributor-covenant.org/translations diff --git a/dev-notes.md b/dev-notes.md index 2d70cd6..2499f95 100644 --- a/dev-notes.md +++ b/dev-notes.md @@ -1,13 +1,14 @@ There are three branches for this plugin in the code [repository][repo]: + * MuseScore 2.x is on branch 'version2' * MuseScore 3.x is on branch 'version3' * the 'main' branch is for MuseScore 4.x -Note that the instrumentId changed for version 4.0.x and then changed back again for 4.1 +Note that the instrument ID changed for version 4.0.x and then changed back again for 4.1 ### test -* Load the pluging and makes sure the Plugin Manager can enable/disable it +* Load the plugin and makes sure the Plugin Manager can enable/disable it * MuseScore 4.x onwards removed the Plugin Creator tool, so if you want console logs then run MuseScore itself from command line * Apply tabs to the range test examples, all staves should have the same tabs: @@ -31,17 +32,24 @@ There are _two_ release areas, MuseScore community and also github repo release * Set as the latest release * Add the release notes along the lines of: -``` +```text Version 4.1 Tin Whistle plugin tested on MuseScore 4 v4.1.0 Plugin file: `tin_whistle_tablature.qml` Whistle instrument file: `all-whistles-v4.xml` -Note that this is may not be compatible with earlier versions of [MuseScore 3](https://github.com/jgadsden/tin-whistle-tablature/releases/tag/v3.4) and [MuseScore 2](https://github.com/jgadsden/tin-whistle-tablature/releases/tag/v2.3.2) - use the previous releases for those. +Note that this is may not be compatible with earlier versions of [MuseScore 3][ms3] +and [MuseScore 2][ms2] - use the previous releases for those. A font file `TinWhistleTab.ttf` is attached for convenience from Blayne Chastain and states: -_Tin Whistle Tab font is free of charge for both personal and commercial use. Distribution for a fee is not allowed. Please credit Blayne Chastain in any publication in which this font appears with the following copyright notice: "Tin Whistle Tab font © Blayne Chastain / [www.blaynechastain.com](http://www.blaynechastain.com/)"_ +_Tin Whistle Tab font is free of charge for both personal and commercial use. Distribution for a fee is not allowed._ +_Please credit Blayne Chastain in any publication in which this font appears with the following copyright notice:_ +_"Tin Whistle Tab font © Blayne Chastain / [www.blaynechastain.com][bc]"_ + +[bc]: http://www.blaynechastain.com/ +[ms2]: https://github.com/jgadsden/tin-whistle-tablature/releases/tag/v2.3.2 +[ms3]: https://github.com/jgadsden/tin-whistle-tablature/releases/tag/v3.4 ``` When all is good then publish the release, it can always be edited at a later date diff --git a/wordlist.dic b/wordlist.dic new file mode 100644 index 0000000..bb9c52c Binary files /dev/null and b/wordlist.dic differ