diff --git a/README.md b/README.md index 56325ba..b7a44a3 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,8 @@ Optional query parameters override the stored/default settings: | Param | Applies to | Example | |------------|-----------------------|----------------| -| `bpm` | click-track drills | `?bpm=66` | +| `bpm` | click-track drills, T1 | `?bpm=66` | +| `string` | T1 (1 = high e … 6 = low E) | `?string=6` | | `variant` | drills with variants | `?variant=2-3-2` | | `key` | T2, T4 | `?key=D` | | `root` | T3, T5, T6 | `?root=A` | diff --git a/src/components/views/NotePrompterView.svelte b/src/components/views/NotePrompterView.svelte index 91747d4..dc49191 100644 --- a/src/components/views/NotePrompterView.svelte +++ b/src/components/views/NotePrompterView.svelte @@ -15,7 +15,15 @@ } let { drill, params }: Props = $props() - const initString = () => storage.getNumber(`${drill.code}:string`, 5) + // URL uses guitar string numbering (1 = high e … 6 = low E); internal index is 0 = high e … 5 = low E. + function stringFromParam(): number | null { + const q = params.get('string') + if (q === null) return null + const n = Number(q) + if (Number.isInteger(n) && n >= 1 && n <= 6) return n - 1 + return null + } + const initString = () => stringFromParam() ?? storage.getNumber(`${drill.code}:string`, 5) const initRandom = () => storage.getString(`${drill.code}:order`, 'seq') === 'rand' let stringIdx = $state(initString())