+ `);
+ GameConfigurationManager.setupGameModeOptionsStateAndValue([document.querySelector('#mic-sensitivity-option')]);
+ }
+ }
+
+ static removeMicSensitivityOption() {
+ document.getElementById('mic-sensitivity-option-title')?.remove();
+ document.getElementById('mic-sensitivity-option')?.remove();
+ }
+}
\ No newline at end of file
diff --git a/src/components/game-core/ui/note-displayer.js b/src/components/game-core/ui/note-displayer.js
index c2704ef..e473b29 100644
--- a/src/components/game-core/ui/note-displayer.js
+++ b/src/components/game-core/ui/note-displayer.js
@@ -1,4 +1,4 @@
-import {TrebleClefVisualizer} from "../../../features/treble-clef/treble-clef-visualizer.js?v=2.1.1";
+import {TrebleClefVisualizer} from "../../../features/treble-clef/treble-clef-visualizer.js?v=2.1.3";
export class NoteDisplayer {
@@ -95,7 +95,7 @@ export class NoteDisplayer {
* @param color
*/
static updateFrequencyBarsFillStyle(color) {
- const event = new CustomEvent('updateFrequencyBarsFillStyle', {detail: color});
+ const event = new CustomEvent('update-frequency-bars-fill-style', {detail: color});
document.dispatchEvent(event);
}
diff --git a/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js b/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js
index 787e00c..37db7a5 100644
--- a/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js
+++ b/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js
@@ -1,7 +1,7 @@
-import {DualRangeSlider} from "./dual-range-slider.js?v=2.1.1";
-import {NoteInKeyGenerator} from "../../../../features/game-modes/note-in-key/note-in-key-generator.js?v=2.1.1";
-import {availableNotesOnStrings} from "../../../configuration/config-data.js?v=2.1.1";
-import {ModalHandler} from "../../../game-core/ui/modal-handler.js?v=2.1.1";
+import {DualRangeSlider} from "./dual-range-slider.js?v=2.1.3";
+import {NoteInKeyGenerator} from "../../../../features/game-modes/note-in-key/note-in-key-generator.js?v=2.1.3";
+import {availableNotesOnStrings} from "../../../configuration/config-data.js?v=2.1.3";
+import {ModalHandler} from "../../../game-core/ui/modal-handler.js?v=2.1.3";
export class FretShapeSelector {
diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js
index 215bead..c3dd1b1 100644
--- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js
+++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js
@@ -1,5 +1,5 @@
-import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.1";
-import {NoteOnFretboardShuffler} from "./note-on-fretboard-shuffler.js?v=2.1.1";
+import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.3";
+import {NoteOnFretboardShuffler} from "./note-on-fretboard-shuffler.js?v=2.1.3";
export class NoteOnFretboardGenerator {
constructor() {
diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js
index 04fdc0c..0fc1b8b 100644
--- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js
+++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js
@@ -1,8 +1,8 @@
-import {DetectedNoteVerifier} from "../../../features/detected-note/detected-note-verifier.js?v=2.1.1";
-import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.1";
-import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.1";
-import {NoteOnFretboardGenerator} from "./note-on-fretboard-generator.js?v=2.1.1";
-import {NoteOnFretboardProgressUpdater} from "./note-on-fretboard-progress-updater.js?v=2.1.1";
+import {DetectedNoteVerifier} from "../../../features/detected-note/detected-note-verifier.js?v=2.1.3";
+import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.3";
+import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.3";
+import {NoteOnFretboardGenerator} from "./note-on-fretboard-generator.js?v=2.1.3";
+import {NoteOnFretboardProgressUpdater} from "./note-on-fretboard-progress-updater.js?v=2.1.3";
/**
* Note display coordinator when playing the "game" which
diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js
index 855d266..d571aa7 100644
--- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js
+++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js
@@ -1,4 +1,4 @@
-import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.1";
+import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.3";
/**
* Progress update for games that use the metronome and have challenging
diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js
index ea7cb62..45f9e23 100644
--- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js
+++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js
@@ -18,7 +18,6 @@ export class NoteOnFretboardShuffler {
shuffleNotesList(notesOnStrings) {
// Generate all possible note combinations for each string
this.noteCombinationsToBeShuffled = this.getNoteCombinationsFromSelectedRange(notesOnStrings);
-
return this.shuffleNotes();
}
@@ -33,16 +32,13 @@ export class NoteOnFretboardShuffler {
// If a fretboard range is set, only add the notes within the range
const selectedRange = JSON.parse(localStorage.getItem(`note-on-fretboard-range`));
- if (!selectedRange) {
- return notesOnStrings;
- }
let notesInsideSelectedRange = [];
for (let string in notesOnStrings) {
for (const noteIndex in notesOnStrings[string]) {
// Note index is the fret position
- if (parseInt(noteIndex) >= parseInt(selectedRange.lowerLimit)
- && parseInt(noteIndex) <= parseInt(selectedRange.upperLimit)) {
+ if (!selectedRange || (parseInt(noteIndex) >= parseInt(selectedRange.lowerLimit)
+ && parseInt(noteIndex) <= parseInt(selectedRange.upperLimit))) {
// Create a note combination by concatenating the string and note
const noteCombination = `${string}|${notesOnStrings[string][noteIndex]}`;
notesInsideSelectedRange.push(noteCombination); // Add the note combination to the notesList
diff --git a/src/components/game-modes/note-on-fretboard/range-selector.js b/src/components/game-modes/note-on-fretboard/range-selector.js
index ec40f63..663ed4e 100644
--- a/src/components/game-modes/note-on-fretboard/range-selector.js
+++ b/src/components/game-modes/note-on-fretboard/range-selector.js
@@ -1,6 +1,6 @@
-import {DualRangeSlider} from "../note-in-key/roadmap-selector/dual-range-slider.js?v=2.1.1";
-import {ModalHandler} from "../../game-core/ui/modal-handler.js?v=2.1.1";
-import {availableNotesOnStrings} from "../../configuration/config-data.js?v=2.1.1";
+import {DualRangeSlider} from "../note-in-key/roadmap-selector/dual-range-slider.js?v=2.1.3";
+import {ModalHandler} from "../../game-core/ui/modal-handler.js?v=2.1.3";
+import {availableNotesOnStrings} from "../../configuration/config-data.js?v=2.1.3";
export class RangeSelector {
diff --git a/src/features/detected-note/detected-note-verifier.js b/src/features/detected-note/detected-note-verifier.js
index 0c6bf3a..0963b37 100644
--- a/src/features/detected-note/detected-note-verifier.js
+++ b/src/features/detected-note/detected-note-verifier.js
@@ -1,5 +1,5 @@
-import {DetectedNoteVisualizer} from "./detected-note-visualizer.js?v=2.1.1";
-import {NoteDisplayer} from "../../components/game-core/ui/note-displayer.js?v=2.1.1";
+import {DetectedNoteVisualizer} from "./detected-note-visualizer.js?v=2.1.3";
+import {NoteDisplayer} from "../../components/game-core/ui/note-displayer.js?v=2.1.3";
export class DetectedNoteVerifier {
// Variable is set in note-combination-coordinator each time new note is displayed
diff --git a/src/features/game-core/frequency-bars/frequency-bars-controller.js b/src/features/game-core/frequency-bars/frequency-bars-controller.js
index 03db028..2015963 100644
--- a/src/features/game-core/frequency-bars/frequency-bars-controller.js
+++ b/src/features/game-core/frequency-bars/frequency-bars-controller.js
@@ -1,4 +1,4 @@
-import {FrequencyBarsVisualizer} from "./frequency-bars-visualizer.js?v=2.1.1";
+import {FrequencyBarsVisualizer} from "./frequency-bars-visualizer.js?v=2.1.3";
export class FrequencyBarsController {
frequencyData = null;
@@ -6,12 +6,14 @@ export class FrequencyBarsController {
frequencyBarsVisualizer = null;
constructor() {
- // Listen for the updateFrequencyBarsFillStyle event
- document.addEventListener('updateFrequencyBarsFillStyle', (event) => {
- this.frequencyBarsVisualizer.canvasContext.fillStyle = event.detail;
- });
+ this.frequencyBarsFillStyleEventHandlerVar = this.frequencyBarsFillStyleEventHandler.bind(this);
}
+ frequencyBarsFillStyleEventHandler(event) {
+ this.frequencyBarsVisualizer.canvasContext.fillStyle = event.detail;
+ }
+
+
updateFrequencyBars(tuneOperator) {
// requestAnimationFrame calls the function on the next frame but shouldn't if the game is paused
if (!this.frequencyBarsVisualizer) {
@@ -33,11 +35,13 @@ export class FrequencyBarsController {
`);
this.frequencyBarsVisualizer = new FrequencyBarsVisualizer();
+ document.addEventListener('update-frequency-bars-fill-style', this.frequencyBarsFillStyleEventHandlerVar);
}
removeFrequencyBarsAndDetectedNoteFromDom() {
document.querySelector('#frequency-bars')?.remove();
document.querySelector('#detected-note-div')?.remove();
this.frequencyBarsVisualizer = null;
+ document.removeEventListener('update-frequency-bars-fill-style', this.frequencyBarsFillStyleEventHandlerVar);
}
}
\ No newline at end of file
diff --git a/src/features/game-core/game-initialization/core-game-coordination-initializer.js b/src/features/game-core/game-initialization/core-game-coordination-initializer.js
index 67b2b96..20294c2 100644
--- a/src/features/game-core/game-initialization/core-game-coordination-initializer.js
+++ b/src/features/game-core/game-initialization/core-game-coordination-initializer.js
@@ -1,10 +1,11 @@
-import {CoreGameCoordinator} from "../game-start/core-game-coordinator.js?v=2.1.1";
+import {CoreGameCoordinator} from "../game-start/core-game-coordinator.js?v=2.1.3";
import {
FretboardNoteGameCoordinator
-} from "../../game-modes/note-on-fretboard/fretboard-note-game-coordinator.js?v=2.1.1";
-import {NoteInKeyGameCoordinator} from "../../game-modes/note-in-key/note-in-key-game-coordinator.js?v=2.1.1";
-import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.1";
-import {MetronomePracticeCoordinator} from "../../game-modes/metronome/metronome-practice-coordinator.js?v=2.1.1";
+} from "../../game-modes/note-on-fretboard/fretboard-note-game-coordinator.js?v=2.1.3";
+import {NoteInKeyGameCoordinator} from "../../game-modes/note-in-key/note-in-key-game-coordinator.js?v=2.1.3";
+import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.3";
+import {MetronomePracticeCoordinator} from "../../game-modes/metronome/metronome-practice-coordinator.js?v=2.1.3";
+import {MicSensitivityOption} from "../../../components/configuration/mic-sensitivity-option.js?v=2.1.3";
export class CoreGameCoordinationInitializer {
@@ -42,6 +43,14 @@ export class CoreGameCoordinationInitializer {
}
// All game coordinators MUST implement a play() and stop() method
+ // Add mic sensitivity option if note detector is enabled
+ console.log(this.coreGameCoordinator.noteDetectorEnabled);
+ if (this.coreGameCoordinator.noteDetectorEnabled) {
+ MicSensitivityOption.addMicSensitivityOption();
+ }else{
+ MicSensitivityOption.removeMicSensitivityOption();
+ }
+
// Init game mode options after they have been added via instantiation of the correct gameModeCoordinator above
GameConfigurationManager.initGameModeOptions();
}
diff --git a/src/features/game-core/game-initialization/game-configuration-manager.js b/src/features/game-core/game-initialization/game-configuration-manager.js
index cd9337a..1ea8c3c 100644
--- a/src/features/game-core/game-initialization/game-configuration-manager.js
+++ b/src/features/game-core/game-initialization/game-configuration-manager.js
@@ -1,4 +1,4 @@
-import {GameProgressVisualizer} from "../game-progress/game-progress-visualizer.js?v=2.1.1";
+import {GameProgressVisualizer} from "../game-progress/game-progress-visualizer.js?v=2.1.3";
export class GameConfigurationManager {
diff --git a/src/features/game-core/game-initialization/game-initializer.js b/src/features/game-core/game-initialization/game-initializer.js
index f906109..67a0d87 100644
--- a/src/features/game-core/game-initialization/game-initializer.js
+++ b/src/features/game-core/game-initialization/game-initializer.js
@@ -1,7 +1,7 @@
-import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.1";
-import {CoreGameCoordinationInitializer} from "./core-game-coordination-initializer.js?v=2.1.1";
-import {VisibilityChangeHandler} from "./visibility-change-handler.js?v=2.1.1";
-import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.1";
+import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.3";
+import {CoreGameCoordinationInitializer} from "./core-game-coordination-initializer.js?v=2.1.3";
+import {VisibilityChangeHandler} from "./visibility-change-handler.js?v=2.1.3";
+import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.3";
export class GameInitializer {
constructor() {
diff --git a/src/features/game-core/game-loader.js b/src/features/game-core/game-loader.js
index 18bffb2..43a6c41 100644
--- a/src/features/game-core/game-loader.js
+++ b/src/features/game-core/game-loader.js
@@ -1,4 +1,4 @@
-import {GameInitializer} from "./game-initialization/game-initializer.js?v=2.1.1";
+import {GameInitializer} from "./game-initialization/game-initializer.js?v=2.1.3";
export class GameLoader {
constructor() {
diff --git a/src/features/game-core/game-progress/game-progress-updater.js b/src/features/game-core/game-progress/game-progress-updater.js
index 65b8355..554b9ef 100644
--- a/src/features/game-core/game-progress/game-progress-updater.js
+++ b/src/features/game-core/game-progress/game-progress-updater.js
@@ -1,4 +1,4 @@
-import {GameProgressVisualizer} from "./game-progress-visualizer.js?v=2.1.1";
+import {GameProgressVisualizer} from "./game-progress-visualizer.js?v=2.1.3";
/**
* Progress update for games that use the metronome and have challenging
diff --git a/src/features/game-core/game-start/core-game-coordinator.js b/src/features/game-core/game-start/core-game-coordinator.js
index 3379672..0e85f32 100644
--- a/src/features/game-core/game-start/core-game-coordinator.js
+++ b/src/features/game-core/game-start/core-game-coordinator.js
@@ -1,8 +1,8 @@
-import {MetronomeOperator} from "../metronome/metronome-operator.js?v=2.1.1";
-import {TuneOperator} from "../tuner/tune-operator.js?v=2.1.1";
-import {FrequencyBarsController} from "../frequency-bars/frequency-bars-controller.js?v=2.1.1";
-import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.1";
-import {ScreenWakeLocker} from "../wake-lock/screen-wake-locker.js?v=2.1.1";
+import {MetronomeOperator} from "../metronome/metronome-operator.js?v=2.1.3";
+import {TuneOperator} from "../tuner/tune-operator.js?v=2.1.3";
+import {FrequencyBarsController} from "../frequency-bars/frequency-bars-controller.js?v=2.1.3";
+import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.3";
+import {ScreenWakeLocker} from "../wake-lock/screen-wake-locker.js?v=2.1.3";
export class CoreGameCoordinator {
metronomeOperator = new MetronomeOperator();
diff --git a/src/features/game-core/game-ui/game-elements-visualizer.js b/src/features/game-core/game-ui/game-elements-visualizer.js
index 9001db4..27cfba4 100644
--- a/src/features/game-core/game-ui/game-elements-visualizer.js
+++ b/src/features/game-core/game-ui/game-elements-visualizer.js
@@ -1,4 +1,4 @@
-import {GameLevelTracker} from "../game-progress/game-level-tracker.js?v=2.1.1";
+import {GameLevelTracker} from "../game-progress/game-level-tracker.js?v=2.1.3";
export class GameElementsVisualizer {
static hideGameElementsAndDisplayInstructions() {
diff --git a/src/features/game-core/game-ui/level-up-visualizer.js b/src/features/game-core/game-ui/level-up-visualizer.js
index 40d7dd9..5e68fcf 100644
--- a/src/features/game-core/game-ui/level-up-visualizer.js
+++ b/src/features/game-core/game-ui/level-up-visualizer.js
@@ -1,4 +1,4 @@
-import {ModalHandler} from "../../../components/game-core/ui/modal-handler.js?v=2.1.1";
+import {ModalHandler} from "../../../components/game-core/ui/modal-handler.js?v=2.1.3";
export class LevelUpVisualizer {
/**
diff --git a/src/features/game-core/tuner/tune-operator.js b/src/features/game-core/tuner/tune-operator.js
index 56f160b..3b9725f 100644
--- a/src/features/game-core/tuner/tune-operator.js
+++ b/src/features/game-core/tuner/tune-operator.js
@@ -22,8 +22,6 @@ export class TuneOperator {
"A♯ | B♭",
"B",
];
- // Check if user is on mobile as sensitivity must be set to a higher value
- this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
/**
@@ -96,8 +94,12 @@ export class TuneOperator {
const frequency = self.pitchDetector.do(audioData);
amplitude /= audioData.length;
+ let amplitudeSetting = localStorage.getItem('mic-sensitivity-option');
+ // Mic sensitivity value divided by 1000 is the min amplitude. If value 50 -> 0.05
+ amplitudeSetting = amplitudeSetting ? parseInt(amplitudeSetting) / 1000 : 0.1;
+
// If amplitude is not high enough, not trying to figure out note as its probably only background noise
- if (frequency && amplitude > (this.isMobile ? 0.01 : 0.05)) {
+ if (frequency && amplitude > amplitudeSetting) {
const note = self.getNote(frequency);
diff --git a/src/features/game-modes/metronome/metronome-practice-coordinator.js b/src/features/game-modes/metronome/metronome-practice-coordinator.js
index 3fc4171..9e75638 100644
--- a/src/features/game-modes/metronome/metronome-practice-coordinator.js
+++ b/src/features/game-modes/metronome/metronome-practice-coordinator.js
@@ -1,5 +1,5 @@
-import {MetronomePracticeInitializer} from "./metronome-practice-initializer.js?v=2.1.1";
-import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.1";
+import {MetronomePracticeInitializer} from "./metronome-practice-initializer.js?v=2.1.3";
+import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.3";
export class MetronomePracticeCoordinator {
diff --git a/src/features/game-modes/metronome/metronome-practice-initializer.js b/src/features/game-modes/metronome/metronome-practice-initializer.js
index 4ae799a..7a4c72b 100644
--- a/src/features/game-modes/metronome/metronome-practice-initializer.js
+++ b/src/features/game-modes/metronome/metronome-practice-initializer.js
@@ -1,6 +1,6 @@
-import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.1";
-import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.1";
-import {BpmInput} from "../../../components/configuration/bpm-input.js?v=2.1.1";
+import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.3";
+import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.3";
+import {BpmInput} from "../../../components/configuration/bpm-input.js?v=2.1.3";
export class MetronomePracticeInitializer {
// Changed in metronome-practice-coordinator
diff --git a/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js b/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js
index 7aff6ce..9369427 100644
--- a/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js
+++ b/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js
@@ -1,5 +1,5 @@
-import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.1";
-import {NoteInKeyGameInitializer} from "./note-in-key-game-initializer.js?v=2.1.1";
+import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.3";
+import {NoteInKeyGameInitializer} from "./note-in-key-game-initializer.js?v=2.1.3";
export class NoteInKeyGameCoordinator {
string;
diff --git a/src/features/game-modes/note-in-key/note-in-key-game-initializer.js b/src/features/game-modes/note-in-key/note-in-key-game-initializer.js
index 3b9972b..5df20e6 100644
--- a/src/features/game-modes/note-in-key/note-in-key-game-initializer.js
+++ b/src/features/game-modes/note-in-key/note-in-key-game-initializer.js
@@ -1,14 +1,14 @@
-import {NoteInKeyGameCoordinator} from "./note-in-key-game-coordinator.js?v=2.1.1";
-import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.1";
-import {GameConfigurationManager} from "../../game-core/game-initialization/game-configuration-manager.js?v=2.1.1";
-import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.1";
-import {NoteInKeyGenerator} from "./note-in-key-generator.js?v=2.1.1";
-import {NoteInKeyNoteHandler} from "../../practice-note-combination/note-in-key-note-handler.js?v=2.1.1";
-import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.1";
-import {GameElementsVisualizer} from "../../game-core/game-ui/game-elements-visualizer.js?v=2.1.1";
+import {NoteInKeyGameCoordinator} from "./note-in-key-game-coordinator.js?v=2.1.3";
+import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.3";
+import {GameConfigurationManager} from "../../game-core/game-initialization/game-configuration-manager.js?v=2.1.3";
+import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.3";
+import {NoteInKeyGenerator} from "./note-in-key-generator.js?v=2.1.3";
+import {NoteInKeyNoteHandler} from "../../practice-note-combination/note-in-key-note-handler.js?v=2.1.3";
+import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.3";
+import {GameElementsVisualizer} from "../../game-core/game-ui/game-elements-visualizer.js?v=2.1.3";
import {
FretShapeSelector
-} from "../../../components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js?v=2.1.1";
+} from "../../../components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js?v=2.1.3";
export class NoteInKeyGameInitializer {
@@ -126,11 +126,11 @@ export class NoteInKeyGameInitializer {
document.removeEventListener('reload-key-and-string', this.reloadKeyAndStringEventHandlerVar);
// Remove string options
- document.querySelector('#note-in-key-game-strings-div').remove();
- document.querySelector('#string-option-title').remove();
- document.querySelector('#scale-roadmaps').remove();
+ document.querySelector('#note-in-key-game-strings-div')?.remove();
+ document.querySelector('#string-option-title')?.remove();
+ document.querySelector('#scale-roadmaps')?.remove();
- document.querySelector('#note-and-string-container').remove();
+ document.querySelector('#note-and-string-container')?.remove();
// Event listeners that were tied to html components that are not removed or replaced on game mode change
// don't need to be removed as that removes the event listeners from the html components as well
@@ -238,19 +238,19 @@ export class NoteInKeyGameInitializer {
A
diff --git a/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js b/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js
index beab1a0..3952fb5 100644
--- a/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js
+++ b/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js
@@ -1,4 +1,4 @@
-import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.1";
+import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.3";
export class NoteInKeyGameNoGuitar {
static diatonicNotesOnStrings;
diff --git a/src/features/game-modes/note-in-key/note-in-key-generator.js b/src/features/game-modes/note-in-key/note-in-key-generator.js
index 03ecc6c..6a46364 100644
--- a/src/features/game-modes/note-in-key/note-in-key-generator.js
+++ b/src/features/game-modes/note-in-key/note-in-key-generator.js
@@ -1,9 +1,9 @@
-import {ArrayShuffler} from "../../../components/shuffler/array-shuffler.js?v=2.1.1";
+import {ArrayShuffler} from "../../../components/shuffler/array-shuffler.js?v=2.1.3";
import {
availableNotesOnStrings,
shape1keyNote,
shape2keyNote
-} from "../../../components/configuration/config-data.js?v=2.1.1";
+} from "../../../components/configuration/config-data.js?v=2.1.3";
export class NoteInKeyGenerator {
diatonicNotesOnStrings;
diff --git a/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js b/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js
index 003cf82..9358283 100644
--- a/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js
+++ b/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js
@@ -1,7 +1,7 @@
import {
NoteOnFretboardNoteHandler
-} from "../../../components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js?v=2.1.1";
-import {NoteOnFretboardGameInitializer} from "./initialization/note-on-fretboard-game-initializer.js?v=2.1.1";
+} from "../../../components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js?v=2.1.3";
+import {NoteOnFretboardGameInitializer} from "./initialization/note-on-fretboard-game-initializer.js?v=2.1.3";
/**
* Game mode "note-on-fretboard" core logic
@@ -30,11 +30,11 @@ export class FretboardNoteGameCoordinator {
*/
play() {
// Add challenging combinations (if checkbox checked)
- if (document.querySelector('#challenging-notes-preset input').checked) {
- const getTrebleClefChallengingNotes = document.querySelector('#fretboard-note-game-treble-clef input').checked;
+ // if (document.querySelector('#challenging-notes-preset input').checked) {
+ // const getTrebleClefChallengingNotes = document.querySelector('#fretboard-note-game-treble-clef input').checked;
// this.noteDisplayer.challengingCombinations =
// FretboardGameChallengingNotesProvider.getChallengingNotes(getTrebleClefChallengingNotes);
- }
+ // }
this.noteOnFretboardNoteHandler.beingGame();
this.noteOnFretboardNoteHandler.displayNotes(true);
diff --git a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js
index 1ed72ea..6fec9b4 100644
--- a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js
+++ b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js
@@ -1,6 +1,6 @@
-import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.1";
-import {GameElementsVisualizer} from "../../../game-core/game-ui/game-elements-visualizer.js?v=2.1.1";
-import {LevelUpVisualizer} from "../../../game-core/game-ui/level-up-visualizer.js?v=2.1.1";
+import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.3";
+import {GameElementsVisualizer} from "../../../game-core/game-ui/game-elements-visualizer.js?v=2.1.3";
+import {LevelUpVisualizer} from "../../../game-core/game-ui/level-up-visualizer.js?v=2.1.3";
export class NoteOnFretboardEventHandler{
diff --git a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js
index aee874f..fba16b6 100644
--- a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js
+++ b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js
@@ -1,6 +1,6 @@
-import {GameProgressVisualizer} from "../../../game-core/game-progress/game-progress-visualizer.js?v=2.1.1";
-import {NoteOnFretboardEventHandler} from "./note-on-fretboard-event-handler.js?v=2.1.1";
-import {RangeSelector} from "../../../../components/game-modes/note-on-fretboard/range-selector.js?v=2.1.1";
+import {GameProgressVisualizer} from "../../../game-core/game-progress/game-progress-visualizer.js?v=2.1.3";
+import {NoteOnFretboardEventHandler} from "./note-on-fretboard-event-handler.js?v=2.1.3";
+import {RangeSelector} from "../../../../components/game-modes/note-on-fretboard/range-selector.js?v=2.1.3";
export class NoteOnFretboardEventListenerAdder {
diff --git a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js
index 49e4409..d6102da 100644
--- a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js
+++ b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js
@@ -1,8 +1,8 @@
-import {BpmInput} from "../../../../components/configuration/bpm-input.js?v=2.1.1";
-import {GameConfigurationManager} from "../../../game-core/game-initialization/game-configuration-manager.js?v=2.1.1";
-import {availableNotesOnStrings} from "../../../../components/configuration/config-data.js?v=2.1.1";
-import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.1";
-import {NoteOnFretboardEventListenerAdder} from "./note-on-fretboard-event-listener-adder.js?v=2.1.1";
+import {BpmInput} from "../../../../components/configuration/bpm-input.js?v=2.1.3";
+import {GameConfigurationManager} from "../../../game-core/game-initialization/game-configuration-manager.js?v=2.1.3";
+import {availableNotesOnStrings} from "../../../../components/configuration/config-data.js?v=2.1.3";
+import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.3";
+import {NoteOnFretboardEventListenerAdder} from "./note-on-fretboard-event-listener-adder.js?v=2.1.3";
export class NoteOnFretboardGameInitializer {
@@ -102,27 +102,23 @@ export class NoteOnFretboardGameInitializer {
+ name
-
diff --git a/src/features/practice-note-combination/note-in-key-note-handler.js b/src/features/practice-note-combination/note-in-key-note-handler.js
index 82a39a9..6f01733 100644
--- a/src/features/practice-note-combination/note-in-key-note-handler.js
+++ b/src/features/practice-note-combination/note-in-key-note-handler.js
@@ -1,6 +1,6 @@
-import {DetectedNoteVerifier} from "../detected-note/detected-note-verifier.js?v=2.1.1";
-import {GameProgressVisualizer} from "../game-core/game-progress/game-progress-visualizer.js?v=2.1.1";
-import {NoteDisplayer} from "../../components/game-core/ui/note-displayer.js?v=2.1.1";
+import {DetectedNoteVerifier} from "../detected-note/detected-note-verifier.js?v=2.1.3";
+import {GameProgressVisualizer} from "../game-core/game-progress/game-progress-visualizer.js?v=2.1.3";
+import {NoteDisplayer} from "../../components/game-core/ui/note-displayer.js?v=2.1.3";
/**
* Note displayer for "practice" mode, which means