Skip to content

Commit 4a25417

Browse files
committed
Add key signature & note name display
1 parent ad10d1f commit 4a25417

12 files changed

Lines changed: 457 additions & 102 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
88
loader_version=0.12.12
99

1010
# Mod Properties
11-
mod_version = 0.7.0
11+
mod_version = 1.0.0-rc1
1212
maven_group = cool.xwj
1313
archives_base_name = blocktuner-fabric
1414

src/main/java/cool/xwj/blocktuner/BlockTunerClient.java

Lines changed: 145 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@
3333
@Environment(EnvType.CLIENT)
3434
public class BlockTunerClient implements ClientModInitializer {
3535

36-
private static boolean keyToPiano = false;
37-
private static boolean playMode = false;
38-
3936
public static final Vector<MidiDevice> transmitters = new Vector<>(0, 1);
4037
private static int deviceIndex = 0;
4138

@@ -57,22 +54,6 @@ public void onInitializeClient() {
5754

5855
}
5956

60-
public static boolean isPlayMode() {
61-
return playMode;
62-
}
63-
64-
public static void togglePlayMode() {
65-
playMode = !playMode;
66-
}
67-
68-
public static boolean isKeyToPiano() {
69-
return keyToPiano;
70-
}
71-
72-
public static void toggleKeyToPiano() {
73-
keyToPiano = !keyToPiano;
74-
}
75-
7657
public static int getDeviceIndex() {
7758
return deviceIndex;
7859
}
@@ -95,7 +76,7 @@ public static MidiDevice getCurrentDevice(){
9576
return transmitters.get(deviceIndex);
9677
}
9778

98-
public static void refreshMidiDevice(){
79+
public static void refreshMidiDevice() {
9980
MidiDevice device;
10081
transmitters.clear();
10182
transmitters.add(null);
@@ -124,4 +105,148 @@ public static void refreshMidiDevice(){
124105

125106
}
126107

108+
public static String getNoteName(int note) {
109+
int keySignature = BlockTunerConfig.getKeySignature();
110+
String noteName = "";
111+
switch (note) {
112+
case 0, 12, 24 -> {
113+
if (keySignature >= -1) {
114+
noteName = "F\u266f";
115+
} else if (keySignature <= -3) {
116+
noteName = "G\u266d";
117+
} else {
118+
noteName = "F\u266f | G\u266d";
119+
}
120+
}
121+
case 1, 13 -> {
122+
if (keySignature >= 6) {
123+
noteName = "F\ud834\udd2a";
124+
} else if (keySignature <= 4 && keySignature >= -6) {
125+
noteName = "G";
126+
if (keySignature >= 3 || keySignature <= -5) {
127+
noteName = "G\u266e";
128+
}
129+
} else if (keySignature == 5){
130+
noteName = "F\ud834\udd2a | G\u266e";
131+
} else {
132+
noteName = "G\u266e | A\ud834\udd2b";
133+
}
134+
}
135+
case 2, 14 -> {
136+
if (keySignature >= 1) {
137+
noteName = "G\u266f";
138+
} else if (keySignature <= -1) {
139+
noteName = "A\u266d";
140+
} else {
141+
noteName = "G\u266f | A\u266d";
142+
}
143+
}
144+
case 3, 15 -> {
145+
if (keySignature >= 7) {
146+
noteName = "G\ud834\udd2a | A\u266e";
147+
} else if (keySignature >= -4) {
148+
noteName = "A";
149+
if (keySignature <= -3 || keySignature >= 5) {
150+
noteName = "A\u266e";
151+
}
152+
} else if (keySignature <= -6) {
153+
noteName = "B\ud834\udd2b";
154+
} else {
155+
noteName = "A\u266e | B\ud834\udd2b";
156+
}
157+
}
158+
case 4, 16 -> {
159+
if (keySignature >= 3) {
160+
noteName = "A\u266f";
161+
} else if (keySignature <= 1) {
162+
noteName = "B\u266d";
163+
} else {
164+
noteName = "A\u266f | B\u266d";
165+
}
166+
}
167+
case 5, 17 -> {
168+
if (keySignature >= -2) {
169+
noteName = "B";
170+
if (keySignature <= -1 || keySignature >= 7) {
171+
noteName = "B\u266e";
172+
}
173+
} else if (keySignature <= -4) {
174+
noteName = "C\u266d";
175+
} else {
176+
noteName = "B\u266e | C\u266d";
177+
}
178+
}
179+
case 6, 18 -> {
180+
if (keySignature >= 5) {
181+
noteName = "B\u266f";
182+
} else if (keySignature <= 3) {
183+
noteName = "C";
184+
if (keySignature >= 2 || keySignature <= -6) {
185+
noteName = "C\u266e";
186+
}
187+
} else {
188+
noteName = "B\u266f | C\u266e";
189+
}
190+
}
191+
case 7, 19 -> {
192+
if (keySignature >= 0) {
193+
noteName = "C\u266f";
194+
} else if (keySignature <= -2) {
195+
noteName = "D\u266d";
196+
} else {
197+
noteName = "C\u266f | D\u266d";
198+
}
199+
}
200+
case 8, 20 -> {
201+
if (keySignature >= 7) {
202+
noteName = "C\ud834\udd2a";
203+
} else if (keySignature >= -5 && keySignature <= 5) {
204+
noteName = "D";
205+
if (keySignature <= -4 || keySignature >= 4) {
206+
noteName = "D\u266e";
207+
}
208+
} else if (keySignature <= -7) {
209+
noteName = "E\ud834\udd2b";
210+
} else if (keySignature == -6) {
211+
noteName = "C\ud834\udd2a | D\u266e";
212+
} else {
213+
noteName = "D\u266e | E\ud834\udd2b";
214+
}
215+
}
216+
case 9, 21 -> {
217+
if (keySignature >= 2) {
218+
noteName = "D\u266f";
219+
} else if (keySignature <= 0) {
220+
noteName = "E\u266d";
221+
} else {
222+
noteName = "D\u266f | E\u266d";
223+
}
224+
}
225+
case 10, 22 -> {
226+
if (keySignature >= -3) {
227+
noteName = "E";
228+
if (keySignature <= -2 || keySignature >= 6) {
229+
noteName = "E\u266e";
230+
}
231+
} else if (keySignature <= -5) {
232+
noteName = "F\u266d";
233+
} else {
234+
noteName = "E\u266e | F\u266d";
235+
}
236+
}
237+
case 11, 23 -> {
238+
if (keySignature >= 4) {
239+
noteName = "E\u266f";
240+
} else if (keySignature <= 2) {
241+
noteName = "F";
242+
if (keySignature >= 1 || keySignature <= -7) {
243+
noteName = "F\u266e";
244+
}
245+
} else {
246+
noteName = "E\u266f | F\u266e";
247+
}
248+
}
249+
}
250+
return noteName;
251+
}
127252
}

src/main/java/cool/xwj/blocktuner/BlockTunerConfig.java

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,14 @@ public class BlockTunerConfig {
3232
private static final Properties properties = new Properties();
3333

3434
// configurables
35+
private static final String PLAY_MODE = "play-mode";
36+
private static final String KEY_TO_PIANO = "key-to-piano";
3537
private static final String MIDI_DEVICE = "midi-device";
38+
private static final String KEY_SIGNATURE = "key-signature";
3639
private static String midiDeviceName = "";
40+
private static boolean keyToPiano = false;
41+
private static boolean playMode = false;
42+
static int keySignature = 0;
3743

3844
public static void save(){
3945

@@ -51,7 +57,6 @@ public static void save(){
5157
} catch (IOException e) {
5258
e.printStackTrace();
5359
}
54-
5560
}
5661

5762
public static void load(){
@@ -63,19 +68,25 @@ public static void load(){
6368
} catch (IOException e) {
6469
e.printStackTrace();
6570
}
66-
6771
}
6872

6973
try (InputStream inputStream = Files.newInputStream(CONFIG_PATH)) {
7074
properties.load(inputStream);
7175

7276
//
77+
playMode = Boolean.parseBoolean(properties.getProperty(PLAY_MODE));
78+
keyToPiano = Boolean.parseBoolean(properties.getProperty(KEY_TO_PIANO));
7379
midiDeviceName = properties.getProperty(MIDI_DEVICE, "");
74-
80+
try {
81+
keySignature = Integer.parseInt(properties.getProperty(KEY_SIGNATURE));
82+
} catch (NumberFormatException e) {
83+
keySignature = 0;
84+
properties.setProperty(KEY_SIGNATURE, keySignature + "");
85+
save();
86+
}
7587
} catch (IOException e) {
7688
e.printStackTrace();
7789
}
78-
7990
}
8091

8192
public static String getMidiDeviceName() {
@@ -87,4 +98,52 @@ public static void setMidiDeviceName(String midiDeviceName) {
8798
properties.setProperty(MIDI_DEVICE, midiDeviceName);
8899
}
89100

101+
public static boolean isPlayMode() {
102+
return playMode;
103+
}
104+
105+
public static void togglePlayMode() {
106+
playMode = !playMode;
107+
properties.setProperty(PLAY_MODE, playMode + "");
108+
}
109+
110+
public static boolean isKeyToPiano() {
111+
return keyToPiano;
112+
}
113+
114+
public static void toggleKeyToPiano() {
115+
keyToPiano = !keyToPiano;
116+
properties.setProperty(KEY_TO_PIANO, keyToPiano + "");
117+
}
118+
119+
public static int getKeySignature() {
120+
return keySignature;
121+
}
122+
123+
public static void setKeySignature(int keySignature) {
124+
if (keySignature >= -7 && keySignature <= 7){
125+
BlockTunerConfig.keySignature = keySignature;
126+
} else {
127+
BlockTunerConfig.keySignature = 0;
128+
}
129+
properties.setProperty(KEY_SIGNATURE, BlockTunerConfig.keySignature + "");
130+
}
131+
132+
public static void keyAddSharp() {
133+
if (keySignature < 7) {
134+
keySignature += 1;
135+
} else {
136+
keySignature = -7;
137+
}
138+
properties.setProperty(KEY_SIGNATURE, keySignature + "");
139+
}
140+
141+
public static void keyAddFlat() {
142+
if (keySignature > -7) {
143+
keySignature -= 1;
144+
} else {
145+
keySignature = 7;
146+
}
147+
properties.setProperty(KEY_SIGNATURE, keySignature + "");
148+
}
90149
}

0 commit comments

Comments
 (0)