diff --git a/README.md b/README.md
index 2dcff4a..839289a 100644
--- a/README.md
+++ b/README.md
@@ -7,14 +7,14 @@ The usual way to run it is one Linux AppImage. That file contains the window and
## Run the AppImage
```bash
-chmod +x Recorder-Tab-Converter-0.2.4.AppImage
-./Recorder-Tab-Converter-0.2.4.AppImage
+chmod +x Recorder-Tab-Converter-0.2.5.AppImage
+./Recorder-Tab-Converter-0.2.5.AppImage
```
If the file will not start because FUSE is missing:
```bash
-APPIMAGE_EXTRACT_AND_RUN=1 ./Recorder-Tab-Converter-0.2.4.AppImage
+APPIMAGE_EXTRACT_AND_RUN=1 ./Recorder-Tab-Converter-0.2.5.AppImage
```
Open **Empty line**, or start from **Twinkle, opening** or **Ode, held note**. Drag any chart from C5 to D7, or drag **Rest** or **Space**, onto a line. Drag a placed item to move it, including onto another line. **New line** adds a row underneath. Plus and minus change the length. Remove takes an item off. **Shorter**, **Taller**, **Narrower**, **Wider**, and the corner grip change the box. **Save PNG** downloads every line.
@@ -30,7 +30,7 @@ From a checkout, one command:
That installs Node packages, builds the app, and writes:
```text
-dist/Recorder-Tab-Converter-0.2.4.AppImage
+dist/Recorder-Tab-Converter-0.2.5.AppImage
```
The AppImage is not committed. Keep it under 600MB.
@@ -49,4 +49,4 @@ The dev server listens on [http://127.0.0.1:3847](http://127.0.0.1:3847).
Baroque (English) fingerings are the first choice on the [Dolmetsch Online chart for recorders in C](https://dolmetsch.com/textfingeringchart.htm) (Brian Blood). The soprano is labeled in concert pitch: low C is C5, and the chart stops at D7. Double holes 6 and 7, forked F, and the second-octave thumb pinch are included. Alternate fingerings on that chart are not shown.
-Each chart is drawn foot-up: holes 7 and 6 at the top, then 5 through 1, then the thumb. The tube ends there. A filled hole is closed. A treble staff under the holes is written one octave below the sounding pitch. Low C, labeled C5, sits on the ledger line below the staff. Sounding C6 is written C5, and sounding C7 is written C6. Length is a notehead, stem, flags, dots, and rests. Labels keep the sounding names.
+Each chart is drawn foot-up: holes 7 and 6 at the top, then 5 through 1, then the thumb. The tube ends there. A filled hole is closed. A treble staff under the holes is written one octave below the sounding pitch. The staff opens with a filled treble clef, spiral on the G line. Low C, labeled C5, sits on the ledger line below the staff. Sounding C6 is written C5, and sounding C7 is written C6. Length is a notehead, stem, flags, dots, and rests. Labels keep the sounding names.
diff --git a/package.json b/package.json
index e230a89..507b30a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "recorder-tab-converter",
- "version": "0.2.4",
+ "version": "0.2.5",
"private": true,
"description": "Arrange soprano recorder fingering charts by dragging them onto a line.",
"main": "electron/main.cjs",
diff --git a/src/components/editor.tsx b/src/components/editor.tsx
index f47336b..dbc1936 100644
--- a/src/components/editor.tsx
+++ b/src/components/editor.tsx
@@ -24,7 +24,7 @@ import {
type LineNote,
type ScoreLine,
} from "@/lib/line";
-import { chartPixelHeight } from "@/lib/notation";
+import { chartOuterWidth, chartPixelHeight } from "@/lib/notation";
import { pngFilename, PNG_CHART_WIDTH } from "@/lib/png-layout";
import { ChevronLeft, ChevronRight, Minus, Plus, X } from "lucide-react";
import { useEffect, useRef, useState, type PointerEvent as ReactPointerEvent, type ReactNode, type RefObject } from "react";
@@ -320,7 +320,7 @@ export function Editor() {
})
}
>
-
{caption}
diff --git a/src/components/fingering-diagram.tsx b/src/components/fingering-diagram.tsx index 01f7910..f4eb29e 100644 --- a/src/components/fingering-diagram.tsx +++ b/src/components/fingering-diagram.tsx @@ -7,7 +7,9 @@ import { import { CHART_VB_H, CHART_VB_W, + chartOuterWidth, chartPixelHeight, + CLEF_GUTTER, dotIndex, ledgerIndexes, noteValue, @@ -66,8 +68,9 @@ export function FingeringDiagram({ width?: number; quarters?: number; }) { - const width = widthOverride ?? (size === "lead" ? 44 : 40); - const height = chartPixelHeight(width); + const bodyWidth = widthOverride ?? (size === "lead" ? 44 : 40); + const width = chartOuterWidth(bodyWidth); + const height = chartPixelHeight(bodyWidth); if (!fingering) { return (