From 258fa7ac41f28060d6bca4f6d65647995fe9ac3a Mon Sep 17 00:00:00 2001 From: Amras Date: Wed, 13 May 2026 09:52:27 +0200 Subject: [PATCH] working prototype for soprano recorder --- .../woodwind_tab_generator.qml | 94 ++++++++++--------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/woodwind_tab_generator/woodwind_tab_generator.qml b/woodwind_tab_generator/woodwind_tab_generator.qml index 371db9f..ed83426 100644 --- a/woodwind_tab_generator/woodwind_tab_generator.qml +++ b/woodwind_tab_generator/woodwind_tab_generator.qml @@ -336,34 +336,34 @@ MuseScore { formatString: "$1\n$2\n$3\n\n$4\n$5\n$6\n$+\n\n$note" }, { - "name": "C Whistle [C4-C6] (Prefer half-holing)", + "name": "Soprano Recorder", "fingeringDict": { - "C4": "2222220", - "C#4": "2222210", - "D4": "2222200", - "D#4": "2222100", - "E4": "2222000", - "F4": "2220000", - "F#4": "2210000", - "G4": "2200000", - "G#4": "2100000", - "A4": "2000000", - "A#4": "1000000", - "B4": "0000000", - "C5": "0222221", - "C#5": "2222211", - "D5": "2222201", - "D#5": "2222101", - "E5": "2222001", - "F5": "2220001", - "F#5": "2210001", - "G5": "2200001", - "G#5": "2100001", - "A5": "2000001", - "A#5": "1000001", - "B5": "0000001" + "C4": "222222220", + "C#4": "222222210", + "D4": "222222200", + "D#4": "222222100", + "E4": "222222000", + "F4": "222200000", + "F#4": "222100000", + "G4": "222000000", + "G#4": "221000000", + "A4": "220000000", + "A#4": "210000000", + "B4": "200000000", + "C5": "000222221", + "C#5": "002222211", + "D5": "002222201", + "D#5": "002222101", + "E5": "002222001", + "F5": "002220001", + "F#5": "002210001", + "G5": "002200001", + "G#5": "002100001", + "A5": "002000001", + "A#5": "001000001", + "B5": "000000001", }, - formatString: "$1\n$2\n$3\n\n$4\n$5\n$6\n$+\n\n$note" + formatString: "$note\n\n$1\n-\n$2\n$3\n$4\n-\n$5\n$6\n$7\n$8\n$+" }, { name: "High D Whistle [D5-D7] (Prefer half-holing)", @@ -702,7 +702,9 @@ MuseScore { for (var i = 0; i < holeCount; i++) { if (binaryString[i] !== "0" && binaryString[i] !== "1" && - binaryString[i] !== "2") + binaryString[i] !== "1" && + binaryString[i] !== "2" && + binaryString[i] !== "3") return "Invalid Fingering Pattern Value. Must be one of 0,1,2" } @@ -734,10 +736,14 @@ MuseScore { var symbol if (binaryString[i] === "2") symbol = String.fromCharCode(0x25CF) // Closed hole - custom font - else if (binaryString[i] === "1") - symbol = String.fromCharCode(0x25D0) // Half hole - custom font - else - symbol = String.fromCharCode(0x25CB) // Open Hole - custom font + else if (binaryString[i] === "1") + symbol = String.fromCharCode(0x25D0) // Half hole - custom font + else if (binaryString[i] == "3") + symbol = String.fromCharCode(0x25D2) // Bottom half hole + else if (binaryString[i] == "4") + symbol = String.fromCharCode(0x29B6) // Open Hold with line + else + symbol = String.fromCharCode(0x25CB) // Open Hole - custom font var token = "$" + (i+1) while (output.indexOf(token) !== -1) { @@ -777,18 +783,18 @@ MuseScore { function getColor(noteName) { const note = noteName.slice(0, -1) const colorMap = { - C: "red", - "C#": "crimson", - D: "orange", - "D#": "gold", - E: "yellow", - F: "green", - "F#": "lime", - G: "blue", - "G#": "indigo", - A: "purple", - "A#": "violet", - B: "pink", + C: "#ed1c24", + "C#": "#f37021", + D: "#f8931e", + "D#": "#ffc20e", + E: "#fff200", + F: "#bed630", + "F#": "#72bf44", + G: "#00a29d", + "G#": "#007dc5", + A: "#49479d", + "A#": "#8d5ca6", + B: "#c9277d", } return colorMap[note] || "gray" } @@ -801,8 +807,6 @@ MuseScore { text.offsetY = userOffsetY text.lineSpacing = userLineSpacing - //var family = "WhistleSymbols" - //text.defaultFont = family text.fontFamily = getFontStack() if (userJustification === 0)