commit
bc5ebb1ebb
|
|
@ -1 +1,3 @@
|
|||
0.01: New App!
|
||||
0.02: Increased Legibility, GUI rework
|
||||
0.03: 13 new chords
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ An app that simply describes finger placements on a Ukulele to form common chord
|
|||
|
||||
## Usage
|
||||
|
||||
Use the button to scroll through the available chords.
|
||||
Select a chord to view.
|
||||
Use the button to return to the chord selection menu.
|
||||
|
||||
## Creator
|
||||
|
||||
|
|
|
|||
246
apps/Uke/app.js
246
apps/Uke/app.js
|
|
@ -16,52 +16,12 @@ const cc = [
|
|||
|
||||
const dd = [
|
||||
"D",
|
||||
"22",
|
||||
"23",
|
||||
"22",
|
||||
"24",
|
||||
"x"
|
||||
];
|
||||
|
||||
const gg = [
|
||||
"G",
|
||||
"x",
|
||||
"21",
|
||||
"33",
|
||||
"22",
|
||||
];
|
||||
|
||||
const am = [
|
||||
"Am",
|
||||
"22",
|
||||
"x",
|
||||
"x",
|
||||
"x"
|
||||
];
|
||||
|
||||
const em = [
|
||||
"Em",
|
||||
"x",
|
||||
"43",
|
||||
"32",
|
||||
"21"
|
||||
];
|
||||
|
||||
const aa = [
|
||||
"A",
|
||||
"22",
|
||||
"11",
|
||||
"x",
|
||||
"x"
|
||||
];
|
||||
|
||||
const ff = [
|
||||
"F",
|
||||
"22",
|
||||
"x",
|
||||
"11",
|
||||
"x"
|
||||
];
|
||||
|
||||
var ee = [
|
||||
"E",
|
||||
"33",
|
||||
|
|
@ -70,14 +30,187 @@ var ee = [
|
|||
"11"
|
||||
];
|
||||
|
||||
const ff = [
|
||||
"F",
|
||||
"22",
|
||||
"x",
|
||||
"11",
|
||||
"x"
|
||||
];
|
||||
|
||||
const gg = [
|
||||
"G",
|
||||
"x",
|
||||
"21",
|
||||
"33",
|
||||
"22",
|
||||
];
|
||||
|
||||
const aa = [
|
||||
"A",
|
||||
"22",
|
||||
"11",
|
||||
"x",
|
||||
"x"
|
||||
];
|
||||
|
||||
const bb = [
|
||||
"B",
|
||||
"42",
|
||||
"43",
|
||||
"44",
|
||||
"21"
|
||||
];
|
||||
|
||||
const cm = [
|
||||
"Cm",
|
||||
"11",
|
||||
"x",
|
||||
"12",
|
||||
"34"
|
||||
];
|
||||
|
||||
const dm = [
|
||||
"Dm",
|
||||
"x",
|
||||
"22",
|
||||
"33",
|
||||
"11"
|
||||
];
|
||||
|
||||
const em = [
|
||||
"Em",
|
||||
"x",
|
||||
"43",
|
||||
"32",
|
||||
"21"
|
||||
];
|
||||
|
||||
const fm = [
|
||||
"Fm",
|
||||
"33",
|
||||
"11",
|
||||
"11",
|
||||
"11"
|
||||
];
|
||||
|
||||
const gm = [
|
||||
"Gm",
|
||||
"x",
|
||||
"22",
|
||||
"33",
|
||||
"11"
|
||||
];
|
||||
|
||||
const am = [
|
||||
"Am",
|
||||
"22",
|
||||
"23",
|
||||
"11",
|
||||
"x"
|
||||
];
|
||||
|
||||
const bm = [
|
||||
"Bm",
|
||||
"x",
|
||||
"43",
|
||||
"32",
|
||||
"21"
|
||||
];
|
||||
|
||||
const c7 = [
|
||||
"C7",
|
||||
"22",
|
||||
"33",
|
||||
"11",
|
||||
"x"
|
||||
];
|
||||
|
||||
const d7 = [
|
||||
"D7",
|
||||
"x",
|
||||
"22",
|
||||
"11",
|
||||
"23"
|
||||
];
|
||||
|
||||
const e7 = [
|
||||
"E7",
|
||||
"x",
|
||||
"11",
|
||||
"x",
|
||||
"x"
|
||||
];
|
||||
|
||||
const f7 = [
|
||||
"F7",
|
||||
"11",
|
||||
"22",
|
||||
"11",
|
||||
"11"
|
||||
];
|
||||
|
||||
const g7 = [
|
||||
"G7",
|
||||
"x",
|
||||
"x",
|
||||
"x",
|
||||
"11"
|
||||
];
|
||||
|
||||
const a7 = [
|
||||
"A7",
|
||||
"21",
|
||||
"21",
|
||||
"21",
|
||||
"32"
|
||||
];
|
||||
|
||||
const b7 = [
|
||||
"B7",
|
||||
"11",
|
||||
"22",
|
||||
"x",
|
||||
"23"
|
||||
];
|
||||
|
||||
|
||||
|
||||
var index = 0;
|
||||
var chords = [];
|
||||
var menu = {
|
||||
"" : { "title" : "Uke Chords" },
|
||||
"C" : function() { draw(cc); },
|
||||
"D" : function() { draw(dd); },
|
||||
"E" : function() { draw(ee); },
|
||||
"F" : function() { draw(ff); },
|
||||
"G" : function() { draw(gg); },
|
||||
"A" : function() { draw(aa); },
|
||||
"B" : function() { draw(bb); },
|
||||
"C7" : function() { draw(c7); },
|
||||
"D7" : function() { draw(d7); },
|
||||
"E7" : function() { draw(e7); },
|
||||
"F7" : function() { draw(f7); },
|
||||
"G7" : function() { draw(g7); },
|
||||
"A7" : function() { draw(a7); },
|
||||
"B7" : function() { draw(b7); },
|
||||
"Cm" : function() { draw(cm); },
|
||||
"Dm" : function() { draw(dm); },
|
||||
"Em" : function() { draw(em); },
|
||||
"Fm" : function() { draw(fm); },
|
||||
"Gm" : function() { draw(gm); },
|
||||
"Am" : function() { draw(am); },
|
||||
"Bm" : function() { draw(bm); },
|
||||
"About" : function() {
|
||||
E.showMessage(
|
||||
"Created By:\nNovaDawn999", {
|
||||
title:"About"
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function init() {
|
||||
g.setFontAlign(0,0); // center font
|
||||
g.setFont("6x8",2); // bitmap font, 8x magnified
|
||||
chords.push(cc, dd, gg, am, em, aa, ff, ee);
|
||||
}
|
||||
|
||||
function drawBase() {
|
||||
for (let i = 0; i < 4; i++) {
|
||||
|
|
@ -87,18 +220,18 @@ function drawBase() {
|
|||
}
|
||||
|
||||
function drawChord(chord) {
|
||||
g.drawString(chord[0], g.getWidth() * 0.5 + 2, 18);
|
||||
g.drawString(chord[0], g.getWidth() * 0.5 - (chord[0].length * 5), 16);
|
||||
for (let i = 0; i < chord.length; i++) {
|
||||
if (i === 0 || chord[i][0] === "x") {
|
||||
continue;
|
||||
}
|
||||
if (chord[i][0] === "0") {
|
||||
g.drawString(chord[i][1], x + (i - 1) * stringInterval + 1, y + fretHeight * chord[i][0], true);
|
||||
g.drawCircle(x + (i - 1) * stringInterval -1, y + fretHeight * chord[i][0], 8);
|
||||
g.drawString(chord[i][1], x + (i - 1) * stringInterval - 5, y + fretHeight * chord[i][0] + 2, true);
|
||||
g.drawCircle(x + (i - 1) * stringInterval -1, y + fretHeight * chord[i][0], 10);
|
||||
}
|
||||
else {
|
||||
g.drawString(chord[i][1], x + (i - 1) * stringInterval + 1, y -fingerOffset + fretHeight * chord[i][0], true);
|
||||
g.drawCircle(x + (i - 1) * stringInterval -1, y -fingerOffset + fretHeight * chord[i][0], 8);
|
||||
g.drawString(chord[i][1], x + (i - 1) * stringInterval -5, y -fingerOffset + fretHeight * chord[i][0] + 2, true);
|
||||
g.drawCircle(x + (i - 1) * stringInterval -1, y -fingerOffset + fretHeight * chord[i][0], 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -107,22 +240,19 @@ function buttonPress() {
|
|||
setWatch(() => {
|
||||
buttonPress();
|
||||
}, BTN);
|
||||
index++;
|
||||
if (index >= chords.length) { index = 0; }
|
||||
draw();
|
||||
E.showMenu(menu);
|
||||
}
|
||||
|
||||
function draw() {
|
||||
function draw(chord) {
|
||||
g.clear();
|
||||
drawBase();
|
||||
drawChord(chords[index]);
|
||||
drawChord(chord);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function main() {
|
||||
init();
|
||||
draw();
|
||||
E.showMenu(menu);
|
||||
setWatch(() => {
|
||||
buttonPress();
|
||||
}, BTN);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{ "id": "Uke",
|
||||
"name": "Uke Chords",
|
||||
"shortName":"Uke",
|
||||
"version":"0.01",
|
||||
"version":"0.03",
|
||||
"description": "Wrist mounted ukulele chords",
|
||||
"icon": "app.png",
|
||||
"tags": "uke, chords",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
0.01: New App!
|
||||
0.02: More Chords, formatting, fret offset support.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Guitar Chords
|
||||
|
||||
An app that simply describes finger placements on a Guitar to form common chords.
|
||||
|
||||
## Usage
|
||||
|
||||
Select a chord to view.
|
||||
Use the button to return to the chord selection menu.
|
||||
|
||||
## Creator
|
||||
|
||||
NovaDawn999
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwwkCkQA/AGMkoQXVptEFytEogwUCoIYBLqlUGIIXTopHVknUoXULylNpouUIoKmUUi0hoMUailEiMSCR/d7pdECx8tC4IYBolULqAWC7qLSFwfdiKMRC4dEoK6RFwYWBppdW7vSLiPd6gXPConVgIWCYYYtM9vdosUqgXOFwndilBqoGDLh/eqtEioXR9xHCoIXDO5SKEpvU6kVppeQ73kqgwB7wuNOwosEXqSlB9xFNR49RpwXV6pICIxhIF73ePAIXTAAgXOJApePGBQXPGA4XPGAxeOGBAWQDAouRDAgWUAH4AZ"))
|
||||
|
|
@ -0,0 +1,340 @@
|
|||
const stringInterval = 24;
|
||||
const stringLength = 138;
|
||||
const fretHeight = 35;
|
||||
const fingerOffset = 17;
|
||||
const xOffset = 26;
|
||||
const yOffset = 34;
|
||||
|
||||
const cc = [
|
||||
"C",
|
||||
"0X",
|
||||
"33",
|
||||
"22",
|
||||
"x",
|
||||
"11",
|
||||
"x",
|
||||
"0"
|
||||
];
|
||||
|
||||
const dd = [
|
||||
"D",
|
||||
"0X",
|
||||
"0X",
|
||||
"x",
|
||||
"21",
|
||||
"33",
|
||||
"22",
|
||||
"0"
|
||||
];
|
||||
|
||||
const gg = [
|
||||
"G",
|
||||
"32",
|
||||
"21",
|
||||
"x",
|
||||
"x",
|
||||
"x",
|
||||
"33",
|
||||
"0"
|
||||
];
|
||||
|
||||
const am = [
|
||||
"Am",
|
||||
"0x",
|
||||
"x",
|
||||
"23",
|
||||
"22",
|
||||
"11",
|
||||
"x",
|
||||
"0"
|
||||
];
|
||||
|
||||
const em = [
|
||||
"Em",
|
||||
"x",
|
||||
"22",
|
||||
"23",
|
||||
"x",
|
||||
"x",
|
||||
"x",
|
||||
"0"
|
||||
];
|
||||
|
||||
const aa = [
|
||||
"A",
|
||||
"0X",
|
||||
"x",
|
||||
"21",
|
||||
"22",
|
||||
"23",
|
||||
"x",
|
||||
"0"
|
||||
];
|
||||
|
||||
var ee = [
|
||||
"E",
|
||||
"x",
|
||||
"22",
|
||||
"23",
|
||||
"11",
|
||||
"x",
|
||||
"x",
|
||||
"0"
|
||||
];
|
||||
|
||||
var dm = [
|
||||
"Dm",
|
||||
"0x",
|
||||
"0x",
|
||||
"x",
|
||||
"22",
|
||||
"33",
|
||||
"11",
|
||||
"0"
|
||||
];
|
||||
|
||||
var ff = [
|
||||
"F",
|
||||
"0x",
|
||||
"0x",
|
||||
"33",
|
||||
"22",
|
||||
"11",
|
||||
"11",
|
||||
"0"
|
||||
];
|
||||
|
||||
var b7 = [
|
||||
"B7",
|
||||
"0x",
|
||||
"22",
|
||||
"11",
|
||||
"23",
|
||||
"x",
|
||||
"24",
|
||||
"0"
|
||||
];
|
||||
|
||||
var cadd9 = [
|
||||
"Cadd9",
|
||||
"0x",
|
||||
"32",
|
||||
"21",
|
||||
"x",
|
||||
"33",
|
||||
"34",
|
||||
"0"
|
||||
];
|
||||
|
||||
var dadd11 = [
|
||||
"Dadd11",
|
||||
"0x",
|
||||
"33",
|
||||
"22",
|
||||
"x",
|
||||
"11",
|
||||
"x",
|
||||
"3"
|
||||
];
|
||||
|
||||
var csus2 = [
|
||||
"Csus2",
|
||||
"0x",
|
||||
"33",
|
||||
"x",
|
||||
"x",
|
||||
"11",
|
||||
"0x",
|
||||
"0"
|
||||
];
|
||||
|
||||
var gadd9 = [
|
||||
"Gadd9",
|
||||
"32",
|
||||
"0x",
|
||||
"x",
|
||||
"21",
|
||||
"x",
|
||||
"33",
|
||||
"0"
|
||||
];
|
||||
|
||||
var aadd9 = [
|
||||
"Aadd9",
|
||||
"11",
|
||||
"33",
|
||||
"34",
|
||||
"22",
|
||||
"x",
|
||||
"x",
|
||||
"5"
|
||||
];
|
||||
|
||||
var fsharp7add11 = [
|
||||
"F#7add11",
|
||||
"21",
|
||||
"43",
|
||||
"44",
|
||||
"32",
|
||||
"x",
|
||||
"x",
|
||||
"0"
|
||||
];
|
||||
|
||||
var d9 = [
|
||||
"D9",
|
||||
"0x",
|
||||
"22",
|
||||
"11",
|
||||
"23",
|
||||
"23",
|
||||
"0x",
|
||||
"4"
|
||||
];
|
||||
|
||||
var g7 = [
|
||||
"G7",
|
||||
"33",
|
||||
"22",
|
||||
"x",
|
||||
"x",
|
||||
"34",
|
||||
"11",
|
||||
"0"
|
||||
];
|
||||
|
||||
var bflatd = [
|
||||
"Bb/D",
|
||||
"0x",
|
||||
"33",
|
||||
"11",
|
||||
"11",
|
||||
"11",
|
||||
"0x",
|
||||
"3"
|
||||
];
|
||||
|
||||
var e7sharp9 = [
|
||||
"E7#9",
|
||||
"0x",
|
||||
"22",
|
||||
"11",
|
||||
"23",
|
||||
"34",
|
||||
"0x",
|
||||
"6"
|
||||
];
|
||||
|
||||
var a11 = [
|
||||
"A11 3rd fret",
|
||||
"33",
|
||||
"0x",
|
||||
"34",
|
||||
"22",
|
||||
"11",
|
||||
"0x",
|
||||
"0"
|
||||
];
|
||||
|
||||
var a9 = [
|
||||
"A9",
|
||||
"32",
|
||||
"0x",
|
||||
"33",
|
||||
"21",
|
||||
"34",
|
||||
"0x",
|
||||
"3"
|
||||
];
|
||||
|
||||
|
||||
|
||||
var index = 0;
|
||||
var chords = [];
|
||||
var menu = {
|
||||
"" : {
|
||||
"title" : "Guitar Chords"
|
||||
},
|
||||
"C" : function() { draw(cc); },
|
||||
"D" : function() { draw(dd); },
|
||||
"E" : function() { draw(ee); },
|
||||
"Em" : function() { draw(em); },
|
||||
"A" : function() { draw(aa); },
|
||||
"Am" : function() { draw(am); },
|
||||
"F" : function() { draw(ff); },
|
||||
"G" : function() { draw(gg); },
|
||||
"Dm" : function() { draw(dm); },
|
||||
"B7" : function () { draw(b7); },
|
||||
"Cadd9" : function () { draw(cadd9); },
|
||||
"Dadd11" : function () { draw(dadd11); },
|
||||
"Csus2" : function () { draw(csus2); },
|
||||
"Gadd9" : function () { draw(gadd9); },
|
||||
"Aadd9" : function () { draw(aadd9); },
|
||||
"F#7add11" : function () { draw(fsharp7add11); },
|
||||
"D9" : function () { draw(d9); },
|
||||
"G7" : function () { draw(g7); },
|
||||
"Bb/D" : function () { draw(bflatd); },
|
||||
"E7#9" : function () { draw(e7sharp9); },
|
||||
"A11" : function () { draw(a11); },
|
||||
"A9" : function () { draw(a9); },
|
||||
"About" : function() {
|
||||
E.showMessage(
|
||||
"Created By:\nNovaDawn999", {
|
||||
title:"About"
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
function drawBase() {
|
||||
for (let i = 0; i < 6; i++) {
|
||||
g.drawLine(xOffset + i * stringInterval, yOffset, xOffset + i * stringInterval, yOffset + stringLength);
|
||||
g.fillRect(xOffset- 1, yOffset + i * fretHeight - 1, xOffset + stringInterval * 5 + 1, yOffset + i * fretHeight + 1);
|
||||
}
|
||||
}
|
||||
|
||||
function drawChord(chord) {
|
||||
g.drawString(chord[0], g.getWidth() * 0.5 - (chord[0].length * 5), 16);
|
||||
for (let i = 0; i < chord.length - 1; i++) {
|
||||
if (i === 0 || chord[i][0] === "x") {
|
||||
continue;
|
||||
}
|
||||
if (chord[i][0] === "0") {
|
||||
g.drawString(chord[i][1], xOffset + (i - 1) * stringInterval - 5, yOffset + fretHeight * chord[i][0] + 2, true);
|
||||
g.drawCircle(xOffset + (i - 1) * stringInterval -1, yOffset + fretHeight * chord[i][0], 10);
|
||||
}
|
||||
else {
|
||||
g.drawString(chord[i][1], xOffset + (i - 1) * stringInterval -5, yOffset -fingerOffset + fretHeight * chord[i][0] + 2, true);
|
||||
g.drawCircle(xOffset + (i - 1) * stringInterval -1, yOffset -fingerOffset + fretHeight * chord[i][0], 10);
|
||||
}
|
||||
}
|
||||
if (chord[7] !== "0") {
|
||||
g.drawString(chord[7], 9, 50);
|
||||
}
|
||||
}
|
||||
|
||||
function buttonPress() {
|
||||
setWatch(() => {
|
||||
buttonPress();
|
||||
}, BTN);
|
||||
E.showMenu(menu);
|
||||
}
|
||||
|
||||
function draw(chord) {
|
||||
g.clear();
|
||||
drawBase();
|
||||
drawChord(chord);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function main() {
|
||||
E.showMenu(menu);
|
||||
setWatch(() => {
|
||||
buttonPress();
|
||||
}, BTN);
|
||||
}
|
||||
|
||||
main();
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
|
|
@ -0,0 +1,14 @@
|
|||
{ "id": "guitar",
|
||||
"name": "Guitar Chords",
|
||||
"shortName":"Guitar",
|
||||
"version":"0.02",
|
||||
"description": "Wrist mounted guitar chords",
|
||||
"icon": "app.png",
|
||||
"tags": "guitar, chords",
|
||||
"supports" : ["BANGLEJS2"],
|
||||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name":"guitar.app.js","url":"app.js"},
|
||||
{"name":"guitar.img","url":"app-icon.js","evaluate":true}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue