Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 51 additions & 28 deletions harmonica_tablature.qml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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: {
Expand Down Expand Up @@ -123,13 +133,13 @@ MuseScore {
text: "Ok"
onClicked: {
apply()
Qt.quit()
quit()
}
}
Button {
id: closeButton
text: "Close"
onClicked: { Qt.quit() }
onClicked: { quit() }
}

}
Expand All @@ -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",
Expand Down Expand Up @@ -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;
Expand All @@ -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;
}

Expand All @@ -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;
Expand Down Expand Up @@ -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() {
Expand All @@ -323,6 +346,6 @@ MuseScore {

onRun: {
if (typeof curScore === 'undefined')
Qt.quit();
quit();
}
}