This is the repository of String Tools site. It is built with Vue 3.
This tool calculates multiple-stop fingerings for the provided notes.

Features:
- Four instruments: violin, viola, cello and double 5-string double bass.
- Note input by text (e.g.
D5 G5) or MIDI input. - Can select how far down the fingerboard can the player reach.
- Optionally, calculates fingerings with gaps (skipped strings in the middle) which are useful for pizzicato.
- Optionally, can include fingerings with finger stretches that are too wide.
- Optionally, it includes fingerings with natural harmonics.
- The instrument is shown with a superimposed diagram with the selected fingerings.
- Can select/deselect fingerings for display in the diagram.
- Each found fingering is displayed in a card with a detailed description.
- The notes are displayed in score view.
VSCode + Volar (and disable Vetur).
TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.
npm installnpm run devnpm run buildRun Unit Tests with Vitest
npm run test:unitRun End-to-End Tests with Playwright
# Install browsers for the first run
npx playwright install
# When testing on CI, must build the project first
npm run build
# Runs the end-to-end tests
npm run test:e2e
# Runs the tests only on Chromium
npm run test:e2e -- --project=chromium
# Runs the tests of a specific file
npm run test:e2e -- tests/example.spec.ts
# Runs the tests in debug mode
npm run test:e2e -- --debugLint with ESLint
npm run lintThese are instructions on how to work with a Github issue with number <ISSUE>. If you don't remember the issue number, you can use gh issue list to see all the open issues.
gh issue develop <ISSUE> -c [-n <BRANCH_NAME>]- Development and commits (can push but not needed).
- If package release is needed, decide
<RTYPE>to be major, minor or patch:- First release:
publish.ps1 pre<RTYPE> - Rest of prereleases:
publish.ps1 prerelease - Final release:
publish.ps1 release - After every release is published with version
<VERSION>:cd website; npm install string-fingerings@<VERSION>
- First release:
gh pr create --body "Fixes #<ISSUE>" -egh pr view <PR> -w: Review PR and push what's needed.gh pr merge <PR>
Use gh pr list to remember the PR number.