commit 3b81f92b6623ef0f3cc62aaca1cec67468bcb219 parent 6e2148a8493fb224e7bb819e975cb55228134402 Author: gstraube <gstraube@mailbox.org> Date: Thu, 14 Dec 2017 16:15:25 +0100 Display octave number and sign as sub/superscript Diffstat:
25 files changed, 377 insertions(+), 203 deletions(-)
diff --git a/app/src/main/java/com/github/cythara/CanvasPainter.java b/app/src/main/java/com/github/cythara/CanvasPainter.java @@ -150,7 +150,8 @@ class CanvasPainter { yOffset = 10; } if (mark % 20 == 0) { - canvas.drawText(text, xPos - numbersPaint.measureText(text) / 2F, y - 30, numbersPaint); + canvas.drawText(text, xPos - numbersPaint.measureText(text) / 2F, y - 30, + numbersPaint); yOffset = 20; } @@ -161,9 +162,21 @@ class CanvasPainter { float x = canvas.getWidth() / 2F; float y = canvas.getHeight() - canvas.getHeight() / 4F; - String note = pitchDifference.closest.getName(); + Note closest = pitchDifference.closest; + String note = closest.getName(); float offset = textPaint.measureText(note) / 2F; + String sign = closest.getSign(); + String octave = closest.getOctave(); + + TextPaint paint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); + paint.setColor(Color.BLACK); + int textSize = (int) (textPaint.getTextSize() / 2); + paint.setTextSize(textSize); + + canvas.drawText(sign, x + offset * 1.25f, y - offset * 1.5f, paint); + canvas.drawText(octave, x + offset * 1.25f, y + offset * 0.5f, paint); + canvas.drawText(note, x - offset, y, textPaint); } diff --git a/app/src/main/java/com/github/cythara/Note.java b/app/src/main/java/com/github/cythara/Note.java @@ -3,5 +3,7 @@ package com.github.cythara; public interface Note { String getName(); + String getOctave(); + String getSign(); float getFrequency(); } diff --git a/app/src/main/java/com/github/cythara/tuning/BassTuning.java b/app/src/main/java/com/github/cythara/tuning/BassTuning.java @@ -6,24 +6,40 @@ public class BassTuning implements Tuning { private enum Pitch implements com.github.cythara.Note { - E1(41.204f), - A1(55f), - D2(73.416f), - G2(97.999f); - + E1("E", "1", 41.204f), + A1("A", "1", 55f), + D2("D", "2", 73.416f), + G2("G", "2", 97.999f); + + private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(float frequency) { + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } public String getName() { - return this.name(); + return name; } public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/ChromaticTuning.java b/app/src/main/java/com/github/cythara/tuning/ChromaticTuning.java @@ -7,150 +7,161 @@ public class ChromaticTuning implements Tuning { private enum Pitch implements Note { - C_MINUS_1("C-1", 8.176f), - C_MINUS_1_SHARP("C-1#", 8.662f), - D_MINUS_1("D-1", 9.177f), - D_MINUS_1_SHARP("D-1#", 9.723f), - E_MINUS_1("E-1", 10.301f), - F_MINUS_1("F-1", 10.914f), - F_MINUS_1_SHARP("F-1", 11.563f), - G_MINUS_1("G-1", 12.250f), - G_MINUS_1_SHARP("G-1#", 12.979f), - A_MINUS_1("A-1", 13.750f), - A_MINUS_1_SHARP("A-1#", 14.568f), - B_MINUS_1("B-1", 15.434f), - - C0("C0", 16.352f), - C0_SHARP("C0#", 17.324f), - D0("D0", 18.354f), - D0_SHARP("D0#", 19.445f), - E0("E0", 20.602f), - F0("F0", 21.827f), - F0_SHARP("F0", 23.125f), - G0("G0", 24.500f), - G0_SHARP("G0#", 25.957f), - A0("A0", 27.500f), - A0_SHARP("A0#", 29.135f), - B0("B0", 30.868f), - - C1("C1", 32.703f), - C1_SHARP("C1#", 34.648f), - D1("D1", 36.708f), - D1_SHARP("D1#", 38.891f), - E1("E1", 41.203f), - F1("F1", 43.654f), - F1_SHARP("F1#", 46.249f), - G1("G1", 48.999f), - G1_SHARP("G1#", 51.913f), - A1("A1", 55.000f), - A1_SHARP("A1#", 58.270f), - B1("B1", 61.735f), - - C2("C2", 65.406f), - C2_SHARP("C2#", 69.296f), - D2("D2", 73.416f), - D2_SHARP("D2#", 77.782f), - E2("E2", 82.407f), - F2("F2", 87.307f), - F2_SHARP("F2#", 92.499f), - G2("G2", 97.999f), - G2_SHARP("G2#", 103.83f), - A2("A2", 110.00f), - A2_SHARP("A2#", 116.54f), - B2("B2", 123.47f), - - C3("C3", 130.81f), - C3_SHARP("C3#", 138.59f), - D3("D3", 146.83f), - D3_SHARP("D3#", 155.56f), - E3("E3", 164.81f), - F3("F3", 174.61f), - F3_SHARP("F3#", 185.00f), - G3("G3", 196.00f), - G3_SHARP("G3#", 207.65f), - A3("A3", 220.00f), - A3_SHARP("A3#", 233.08f), - B3("B3", 246.94f), - - C4("C4", 261.63f), - C4_SHARP("C4#", 277.18f), - D4("D4", 293.66f), - D4_SHARP("D4#", 311.13f), - E4("E4", 329.63f), - F4("F4", 349.23f), - F4_SHARP("F4#", 369.99f), - G4("G4", 392.00f), - G4_SHARP("G4#", 415.30f), - A4("A4", 440.00f), - A4_SHARP("A4#", 466.16f), - B4("B4", 493.88f), - - C5("C5", 523.25f), - C5_SHARP("C5#", 554.37f), - D5("D5", 587.33f), - D5_SHARP("D5#", 622.25f), - E5("E5", 659.26f), - F5("F5", 698.46f), - F5_SHARP("F5#", 739.99f), - G5("G5", 783.99f), - G5_SHARP("G5#", 830.61f), - A5("A5", 880.00f), - A5_SHARP("A5#", 932.33f), - B5("B5", 987.77f), - - C6("C6", 1046.5f), - C6_SHARP("C6#", 1108.7f), - D6("D6", 1174.7f), - D6_SHARP("D6#", 1244.5f), - E6("E6", 1318.5f), - F6("F6", 1396.9f), - F6_SHARP("F6#", 1480.0f), - G6("G6", 1568.0f), - G6_SHARP("G6#", 1661.2f), - A6("A6", 1760.0f), - A6_SHARP("A6#", 1864.7f), - B6("B6", 1975.5f), - - C7("C7", 2093.0f), - C7_SHARP("C7#", 2217.5f), - D7("D7", 2349.3f), - D7_SHARP("D7#", 2489.0f), - E7("E7", 2637.0f), - F7("F7", 2793.8f), - F7_SHARP("F7#", 2960.0f), - G7("G7", 3136.0f), - G7_SHARP("G7#", 3322.4f), - A7("A7", 3520.0f), - A7_SHARP("A7#", 3729.3f), - B7("B7", 3951.1f), - - C8("C8", 4186.0f), - C8_SHARP("C8#", 4434.9f), - D8("D8", 4698.6f), - D8_SHARP("D8#", 4978.0f), - E8("E8", 5274.0f), - F8("F8", 5587.7f), - F8_SHARP("F8#", 5919.9f), - G8("G8", 6271.9f), - G8_SHARP("G8#", 6644.9f), - A8("A8", 7040.0f), - A8_SHARP("A8#", 7458.6f), - B8("B8", 7902.1f), - - C9("C9", 8372.0f), - C9_SHARP("C9#", 8869.8f), - D9("D9", 9397.3f), - D9_SHARP("D9#", 9956.1f), - E9("E9", 10548.1f), - F9("F9", 11175.3f), - F9_SHARP("F9#", 11839.8f), - G9("G9", 12543.9f); + C_MINUS_1("C", "-1", 8.176f), + C_MINUS_1_SHARP("C", "-1", "#", 8.662f), + D_MINUS_1("D", "-1", 9.177f), + D_MINUS_1_SHARP("D", "-1", "#", 9.723f), + E_MINUS_1("E", "-1", 10.301f), + F_MINUS_1("F", "-1", 10.914f), + F_MINUS_1_SHARP("F", "-1", "#", 11.563f), + G_MINUS_1("G", "-1", 12.250f), + G_MINUS_1_SHARP("G", "-1", "#", 12.979f), + A_MINUS_1("A", "-1", 13.750f), + A_MINUS_1_SHARP("A", "-1", "#", 14.568f), + B_MINUS_1("B", "-1", 15.434f), + + C0("C", "0", 16.352f), + C0_SHARP("C", "0", "#", 17.324f), + D0("D", "0", 18.354f), + D0_SHARP("D", "0", "#", 19.445f), + E0("E", "0", 20.602f), + F0("F", "0", 21.827f), + F0_SHARP("F", "0", "#", 23.125f), + G0("G", "0", 24.500f), + G0_SHARP("G", "0", "#", 25.957f), + A0("A", "0", 27.500f), + A0_SHARP("A", "0", "#", 29.135f), + B0("B", "0", 30.868f), + + C1("C", "1", 32.703f), + C1_SHARP("C", "1", "#", 34.648f), + D1("D", "1", 36.708f), + D1_SHARP("D", "1", "#", 38.891f), + E1("E", "1", 41.203f), + F1("F", "1", 43.654f), + F1_SHARP("F", "1", "#", 46.249f), + G1("G", "1", 48.999f), + G1_SHARP("G", "1", "#", 51.913f), + A1("A", "1", 55.000f), + A1_SHARP("A", "1", "#", 58.270f), + B1("B", "1", 61.735f), + + C2("C", "2", 65.406f), + C2_SHARP("C", "2", "#", 69.296f), + D2("D", "2", 73.416f), + D2_SHARP("D", "2", "#", 77.782f), + E2("E", "2", 82.407f), + F2("F", "2", 87.307f), + F2_SHARP("F", "2", "#", 92.499f), + G2("G", "2", 97.999f), + G2_SHARP("G", "2", "#", 103.83f), + A2("A", "2", 110.00f), + A2_SHARP("A", "2", "#", 116.54f), + B2("B", "2", 123.47f), + + C3("C", "3", 130.81f), + C3_SHARP("C", "3", "#", 138.59f), + D3("D", "3", 146.83f), + D3_SHARP("D", "3", "#", 155.56f), + E3("E", "3", 164.81f), + F3("F", "3", 174.61f), + F3_SHARP("F", "3", "#", 185.00f), + G3("G", "3", 196.00f), + G3_SHARP("G", "3", "#", 207.65f), + A3("A", "3", 220.00f), + A3_SHARP("A", "3", "#", 233.08f), + B3("B", "3", 246.94f), + + C4("C", "4", 261.63f), + C4_SHARP("C", "4", "#", 277.18f), + D4("D", "4", 293.66f), + D4_SHARP("D", "4", "#", 311.13f), + E4("E", "4", 329.63f), + F4("F", "4", 349.23f), + F4_SHARP("F", "4", "#", 369.99f), + G4("G", "4", 392.00f), + G4_SHARP("G", "4", "#", 415.30f), + A4("A", "4", 440.00f), + A4_SHARP("A", "4", "#", 466.16f), + B4("B", "4", 493.88f), + + C5("C", "5", 523.25f), + C5_SHARP("C", "5", "#", 554.37f), + D5("D", "5", 587.33f), + D5_SHARP("D", "5", "#", 622.25f), + E5("E", "5", 659.26f), + F5("F", "5", 698.46f), + F5_SHARP("F", "5", "#", 739.99f), + G5("G", "5", 783.99f), + G5_SHARP("G", "5", "#", 830.61f), + A5("A", "5", 880.00f), + A5_SHARP("A", "5", "#", 932.33f), + B5("B", "5", 987.77f), + + C6("C", "6", 1046.5f), + C6_SHARP("C", "6", "#", 1108.7f), + D6("D", "6", 1174.7f), + D6_SHARP("D", "6", "#", 1244.5f), + E6("E", "6", 1318.5f), + F6("F", "6", 1396.9f), + F6_SHARP("F", "6", "#", 1480.0f), + G6("G", "6", 1568.0f), + G6_SHARP("G", "6", "#", 1661.2f), + A6("A", "6", 1760.0f), + A6_SHARP("A", "6", "#", 1864.7f), + B6("B", "6", 1975.5f), + + C7("C", "7", 2093.0f), + C7_SHARP("C", "7", "#", 2217.5f), + D7("D", "7", 2349.3f), + D7_SHARP("D", "7", "#", 2489.0f), + E7("E", "7", 2637.0f), + F7("F", "7", 2793.8f), + F7_SHARP("F", "7", "#", 2960.0f), + G7("G", "7", 3136.0f), + G7_SHARP("G", "7", "#", 3322.4f), + A7("A", "7", 3520.0f), + A7_SHARP("A", "7", "#", 3729.3f), + B7("B", "7", 3951.1f), + + C8("C", "8", 4186.0f), + C8_SHARP("C", "8", "#", 4434.9f), + D8("D", "8", 4698.6f), + D8_SHARP("D", "8", "#", 4978.0f), + E8("E", "8", 5274.0f), + F8("F", "8", 5587.7f), + F8_SHARP("F", "8", "#", 5919.9f), + G8("G", "8", 6271.9f), + G8_SHARP("G", "8", "#", 6644.9f), + A8("A", "8", 7040.0f), + A8_SHARP("A", "8", "#", 7458.6f), + B8("B", "8", 7902.1f), + + C9("C", "9", 8372.0f), + C9_SHARP("C", "9", "#", 8869.8f), + D9("D", "9", 9397.3f), + D9_SHARP("D", "9", "#", 9956.1f), + E9("E", "9", 10548.1f), + F9("F", "9", 11175.3f), + F9_SHARP("F", "9", "#", 11839.8f), + G9("G", "9", 12543.9f); private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(String name, float frequency) { + Pitch(String name, String octave, String sign, float frequency) { this.name = name; + this.octave = octave; + this.sign = sign; + this.frequency = frequency; + } + + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } @@ -161,6 +172,16 @@ public class ChromaticTuning implements Tuning { public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/DropCGuitarTuning.java b/app/src/main/java/com/github/cythara/tuning/DropCGuitarTuning.java @@ -6,26 +6,42 @@ public class DropCGuitarTuning implements Tuning { private enum Pitch implements com.github.cythara.Note { - C2(65.406f), - G2(97.999f), - C3(130.813f), - F3(174.614f), - A3(220f), - D4(293.665f); - + C2("C", "2", 65.406f), + G2("G", "2", 97.999f), + C3("C", "3", 130.813f), + F3("F", "3", 174.614f), + A3("A", "3", 220f), + D4("D", "4", 293.665f); + + private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(float frequency) { + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } public String getName() { - return this.name(); + return name; } public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/DropCSharpGuitarTuning.java b/app/src/main/java/com/github/cythara/tuning/DropCSharpGuitarTuning.java @@ -6,18 +6,29 @@ public class DropCSharpGuitarTuning implements Tuning { private enum Pitch implements com.github.cythara.Note { - C2_SHARP("C2#", 69.30f), - A2("A2", 110f), - D3("D3", 146.832f), - G3("G3", 195.998f), - B3("B3", 246.942f), - E4("E4", 329.628f); + C2_SHARP("C", "2", "#", 69.30f), + A2("A", "2", 110f), + D3("D", "3", 146.832f), + G3("G", "3", 195.998f), + B3("B", "3", 246.942f), + E4("E", "4", 329.628f); private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(String name, float frequency) { + Pitch(String name, String octave, String sign, float frequency) { this.name = name; + this.octave = octave; + this.sign = sign; + this.frequency = frequency; + } + + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } @@ -28,6 +39,16 @@ public class DropCSharpGuitarTuning implements Tuning { public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/DropDGuitarTuning.java b/app/src/main/java/com/github/cythara/tuning/DropDGuitarTuning.java @@ -6,26 +6,42 @@ public class DropDGuitarTuning implements Tuning { private enum Pitch implements com.github.cythara.Note { - D2(73.416f), - A2(110f), - D3(146.832f), - G3(195.998f), - B3(246.942f), - E4(329.628f); - + D2("D", "2", 73.416f), + A2("A", "2", 110f), + D3("D", "3", 146.832f), + G3("G", "3", 195.998f), + B3("B", "3", 246.942f), + E4("E", "4", 329.628f); + + private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(float frequency) { + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } public String getName() { - return this.name(); + return name; } public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/GuitarTuning.java b/app/src/main/java/com/github/cythara/tuning/GuitarTuning.java @@ -6,26 +6,42 @@ public class GuitarTuning implements Tuning { public enum Pitch implements com.github.cythara.Note { - E2(82.407f), - A2(110f), - D3(146.832f), - G3(195.998f), - B3(246.942f), - E4(329.628f); - + E2("E", "2", 82.407f), + A2("A", "2", 110f), + D3("D", "3", 146.832f), + G3("G", "3", 195.998f), + B3("B", "3", 246.942f), + E4("E", "4", 329.628f); + + private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(float frequency) { + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } public String getName() { - return this.name(); + return name; } public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/OpenGGuitarTuning.java b/app/src/main/java/com/github/cythara/tuning/OpenGGuitarTuning.java @@ -6,26 +6,42 @@ public class OpenGGuitarTuning implements Tuning { private enum Pitch implements com.github.cythara.Note { - D2(73.416f), - G2(97.999f), - D3(146.832f), - G3(195.998f), - B3(246.942f), - D4(293.665f); - + D2("D", "2", 73.416f), + G2("G", "2", 97.999f), + D3("D", "3", 146.832f), + G3("G", "3", 195.998f), + B3("B", "3", 246.942f), + D4("D", "4", 293.665f); + + private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(float frequency) { + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } public String getName() { - return this.name(); + return name; } public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/UkuleleDTuning.java b/app/src/main/java/com/github/cythara/tuning/UkuleleDTuning.java @@ -7,16 +7,27 @@ public class UkuleleDTuning implements Tuning { private enum Pitch implements com.github.cythara.Note { - A4("A4", 440f), - D4("D4", 293.665f), - F3_SHARP("F3#", 369.99f), - B4("B4", 493.88f); + A4("A", "4", 440f), + D4("D", "4", 293.665f), + F3_SHARP("F", "3", "#", 369.99f), + B4("B", "4", 493.88f); private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(String name, float frequency) { + Pitch(String name, String octave, String sign, float frequency) { this.name = name; + this.octave = octave; + this.sign = sign; + this.frequency = frequency; + } + + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } @@ -27,6 +38,16 @@ public class UkuleleDTuning implements Tuning { public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/java/com/github/cythara/tuning/UkuleleTuning.java b/app/src/main/java/com/github/cythara/tuning/UkuleleTuning.java @@ -7,24 +7,40 @@ public class UkuleleTuning implements Tuning { private enum Pitch implements Note { - G4(391.995f), - C4(261.626f), - E4(329.628f), - A4(440f); - + G4("G", "4", 391.995f), + C4("C", "4", 261.626f), + E4("E", "4", 329.628f), + A4("A", "4", 440f); + + private String name; + private final String sign; + private final String octave; private final float frequency; - Pitch(float frequency) { + Pitch(String name, String octave, float frequency) { + this.name = name; + this.octave = octave; + this.sign = ""; this.frequency = frequency; } public String getName() { - return this.name(); + return name; } public float getFrequency() { return frequency; } + + @Override + public String getOctave() { + return octave; + } + + @Override + public String getSign() { + return sign; + } } @Override diff --git a/app/src/main/res/drawable/close.png b/app/src/main/res/drawable/close.png Binary files differ. diff --git a/app/src/main/res/drawable/exact.png b/app/src/main/res/drawable/exact.png Binary files differ. diff --git a/app/src/main/res/drawable/negative_10_cents.png b/app/src/main/res/drawable/negative_10_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/negative_20_cents.png b/app/src/main/res/drawable/negative_20_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/negative_27_32_cents.png b/app/src/main/res/drawable/negative_27_32_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/negative_30_cents.png b/app/src/main/res/drawable/negative_30_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/negative_6_4_cents.png b/app/src/main/res/drawable/negative_6_4_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_10_cents.png b/app/src/main/res/drawable/positive_10_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_15_41_cents.png b/app/src/main/res/drawable/positive_15_41_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_20_cents.png b/app/src/main/res/drawable/positive_20_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_29_5_cents.png b/app/src/main/res/drawable/positive_29_5_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_30_cents.png b/app/src/main/res/drawable/positive_30_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_4_7_cents.png b/app/src/main/res/drawable/positive_4_7_cents.png Binary files differ. diff --git a/app/src/main/res/drawable/positive_5_1_cents.png b/app/src/main/res/drawable/positive_5_1_cents.png Binary files differ.