diff --git a/harmonica_tablature.qml b/harmonica_tablature.qml index a35d294..16e4c4d 100644 --- a/harmonica_tablature.qml +++ b/harmonica_tablature.qml @@ -22,6 +22,14 @@ MuseScore { menuPath: "Plugins.Harmonica Tablature" pluginType: "dialog" + Component.onCompleted : { + if (mscoreMajorVersion >= 4) { + title = qsTr("cwHarmonica Tab") ; + // thumbnailName = ".png"; + // categoryCode = "some_category"; + } + } + // ------ OPTIONS ------- property string sep : "\n" // change to "," if you want tabs horizontally property string bendChar : "'" // change to "b" if you want bend to be noted with b @@ -92,6 +100,8 @@ MuseScore { ListElement { text: "Power Bender (Brendan Power), valved"; tuning: 11 } ListElement { text: "Power Draw (Brendan Power), valved"; tuning: 12 } ListElement { text: "Standard Chromatic"; tuning: 4 } + ListElement { text: "Chromatic 16Hole"; tuning: 13 } + ListElement { text: "Diminished Lucky 13"; tuning: 14 } } width: 100 onCurrentIndexChanged: { @@ -123,13 +133,13 @@ MuseScore { text: "Ok" onClicked: { apply() - Qt.quit() + quit() } } Button { id: closeButton text: "Close" - onClicked: { Qt.quit() } + onClicked: { quit() } } } @@ -141,6 +151,7 @@ MuseScore { "+7", "-7o", "-8", "+8b", "+8", "-9", "+9b", "+9", "-9o", "-10", "+10bb", "+10b", "+10", "-10o" ]; //Standard Richter tuning with overbends + var richterValved = ["+1", "-1b", "-1", "+2b", "+2", "-2bb", "-2b", "-2", "-3bbb", "-3bb", "-3b", "-3", "+4", "-4b", "-4", "+5b", "+5", "-5", "+6b", "+6", "-6b", "-6", "-7b", "-7", "+7", "-8b", "-8", "+8b", "+8", "-9", "+9b", "+9", "-10b", "-10", "+10bb", "+10b", @@ -206,6 +217,16 @@ MuseScore { powerDraw[-2] = "+1bb"; powerDraw[-1] = "+1b"; //Two notes below the key at blow 1 // Brendan Power's tuning, half valved + var chromatic16H = ["+1.", "+1.s", "-1.", "-1.s", "+2.", "-2.", "-2.s", "+3.", "+3.s", "-3.", "-3.s","-4.", + "+1", "+1s", "-1", "-1s", "+2", "-2", "-2s", "+3", "+3s", "-3", "-3s","-4", + "+4", "+4s", "-5", "-5s", "+6", "-6", "-6s", "+7", "+7s", "-7", "-7s", "-8", + "+8", "+8s", "-9", "-9s", "+10", "-10", "-10s", "+11", "+11s", "-11", "-11s", "-12", + "+12", "+12s", "-12", "-12s" ]; + + var diminishedLucky13 = ["+1", "-1b", "-1", "+2", "-2b", "-2", "+3", "-3b", "-3", "+4", "-4b", "-4", + "+5", "-5b", "-5", "+6", "-6b", "-6", "+7", "-7b", "-7", "+8", "-8b", "-8", "+9", "-9b", "-9", "+10", "-10b", "-10", + "+11", "-11b", "-11", "+12", "-12b", "-12", "+13", "-13b", "-13" ]; // Diminished tuning of a Lucky 13 by Brenden Power (use key of A) + var tuning = richter switch (harp.tuning) { case 1: tuning = richter; break; @@ -220,6 +241,8 @@ MuseScore { case 10: tuning = paddyRichter; break; case 11: tuning = powerBender; break; case 12: tuning = powerDraw; break; + case 13: tuning = chromatic16H; break; + case 14: tuning = diminishedLucky13; break; default: tuning = richter; break; } @@ -240,13 +263,13 @@ MuseScore { if (bendChar !== "b") tab = tab.replace(/b/g, bendChar); text.text = tab + text.text; - } + } } } function applyToSelection(func) { if (typeof curScore === 'undefined') - Qt.quit(); + quit(); var cursor = curScore.newCursor(); var startStaff; var endStaff; @@ -285,34 +308,34 @@ MuseScore { if (fullScore) // no selection cursor.rewind(0); // beginning of score - while (cursor.segment && (fullScore || cursor.tick < endTick)) { - if (cursor.element && cursor.element.type == Element.CHORD) { - var text = newElement(Element.STAFF_TEXT); - - var graceChords = cursor.element.graceNotes; - for (var i = 0; i < graceChords.length; i++) { - // iterate through all grace chords - var notes = graceChords[i].notes; - tabNotes(notes, text); - // TODO: deal with placement of grace note on the x axis - text.placement = textposition - text.offset = Qt.point(-40 * (graceChords.length - i), 0) - cursor.add(text); - // new text for next element - text = newElement(Element.STAFF_TEXT); - } - - var notes = cursor.element.notes; + while (cursor.segment && (fullScore || cursor.tick < endTick)) { + if (cursor.element && cursor.element.type == Element.CHORD) { + var text = newElement(Element.STAFF_TEXT); + + var graceChords = cursor.element.graceNotes; + for (var i = 0; i < graceChords.length; i++) { + // iterate through all grace chords + var notes = graceChords[i].notes; tabNotes(notes, text); + // TODO: deal with placement of grace note on the x axis text.placement = textposition - + text.offset = Qt.point(-40 * (graceChords.length - i), 0) cursor.add(text); - } // end if CHORD - cursor.next(); - } // end while segment + // new text for next element + text = newElement(Element.STAFF_TEXT); + } + + var notes = cursor.element.notes; + tabNotes(notes, text); + text.placement = textposition + + cursor.add(text); + } // end if CHORD + cursor.next(); + } // end while segment } // end for voice } // end for staff - Qt.quit(); + quit(); } // end applyToSelection() function apply() { @@ -323,6 +346,6 @@ MuseScore { onRun: { if (typeof curScore === 'undefined') - Qt.quit(); + quit(); } }