diff --git a/app/javascript/controllers/drag_and_strum_controller.js b/app/javascript/controllers/drag_and_strum_controller.js index 5e3a948f4..8beccd062 100644 --- a/app/javascript/controllers/drag_and_strum_controller.js +++ b/app/javascript/controllers/drag_and_strum_controller.js @@ -2,21 +2,33 @@ import { Controller } from "@hotwired/stimulus" const INSTRUMENTS = [ [ - "/audio/mandolin/B3.mp3", - "/audio/mandolin/C3.mp3", - "/audio/mandolin/D4.mp3", - "/audio/mandolin/E3.mp3", - "/audio/mandolin/Fsharp4.mp3", - "/audio/mandolin/G3.mp3" + "/audio/banjo/A.mp3", + "/audio/banjo/B.mp3", + "/audio/banjo/C.mp3", + "/audio/banjo/D.mp3", + "/audio/banjo/E.mp3" ], [ - "/audio/synth/B3.mp3", - "/audio/synth/C3.mp3", - "/audio/synth/D4.mp3", - "/audio/synth/E3.mp3", - "/audio/synth/Fsharp4.mp3", - "/audio/synth/G3.mp3" - ] + "/audio/harpsichord/A.mp3", + "/audio/harpsichord/B.mp3", + "/audio/harpsichord/C.mp3", + "/audio/harpsichord/D.mp3", + "/audio/harpsichord/E.mp3" + ], + [ + "/audio/piano/A.mp3", + "/audio/piano/B.mp3", + "/audio/piano/C.mp3", + "/audio/piano/D.mp3", + "/audio/piano/E.mp3" + ], + [ + "/audio/vibes/A.mp3", + "/audio/vibes/B.mp3", + "/audio/vibes/C.mp3", + "/audio/vibes/D.mp3", + "/audio/vibes/E.mp3" + ], ] export default class extends Controller { @@ -27,11 +39,6 @@ export default class extends Controller { this.preloadedAudioFiles = [] document.addEventListener("keydown", this.handleKeyDown.bind(this)); - // this.preloadedAudioFiles = INSTRUMENTS[0].map(file => { - // const audio = new Audio(file) - // audio.load() - // return audio - // }); } disconnect() { @@ -39,11 +46,12 @@ export default class extends Controller { } handleKeyDown(event) { - this.#setInstrumentIndex(event) + if (event.shiftKey) { + this.instrumentIndex = this.#getInstrumentIndex(event) - if (this.instrumentIndex < INSTRUMENTS.length) { - this.#preloadAudioFiles(this.instrumentIndex) - console.log(this.preloadedAudioFiles) + if (this.instrumentIndex < INSTRUMENTS.length) { + this.#preloadAudioFiles(this.instrumentIndex) + } } } @@ -58,9 +66,9 @@ export default class extends Controller { } } - #setInstrumentIndex(event) { + #getInstrumentIndex(event) { const number = Number(event.code.replace("Digit", "")) - this.instrumentIndex = isNaN(number) ? 0 : number + return isNaN(number) ? 0 : number } #preloadAudioFiles(instrumentIndex) { @@ -81,12 +89,10 @@ export default class extends Controller { } #playSound() { - // At this stage, the preloaded audio files should be ready + const randomIndex = Math.floor(Math.random() * this.preloadedAudioFiles.length) + const audio = this.preloadedAudioFiles[randomIndex] + const audioInstance = new Audio(audio.src) - // const randomIndex = Math.floor(Math.random() * this.preloadedAudioFiles.length) - // const audio = this.preloadedAudioFiles[randomIndex] - // const audioInstance = new Audio(audio.src) - // - // audioInstance.play() + audioInstance.play() } } diff --git a/public/audio/banjo/A.mp3 b/public/audio/banjo/A.mp3 new file mode 100644 index 000000000..0ebcaa4f7 Binary files /dev/null and b/public/audio/banjo/A.mp3 differ diff --git a/public/audio/banjo/B.mp3 b/public/audio/banjo/B.mp3 new file mode 100644 index 000000000..21c7f8e4e Binary files /dev/null and b/public/audio/banjo/B.mp3 differ diff --git a/public/audio/banjo/C.mp3 b/public/audio/banjo/C.mp3 new file mode 100644 index 000000000..5f987893c Binary files /dev/null and b/public/audio/banjo/C.mp3 differ diff --git a/public/audio/banjo/D.mp3 b/public/audio/banjo/D.mp3 new file mode 100644 index 000000000..4d0fd48a1 Binary files /dev/null and b/public/audio/banjo/D.mp3 differ diff --git a/public/audio/banjo/E.mp3 b/public/audio/banjo/E.mp3 new file mode 100644 index 000000000..3bb9d4246 Binary files /dev/null and b/public/audio/banjo/E.mp3 differ diff --git a/public/audio/harpsichord/A.mp3 b/public/audio/harpsichord/A.mp3 new file mode 100644 index 000000000..a47957191 Binary files /dev/null and b/public/audio/harpsichord/A.mp3 differ diff --git a/public/audio/harpsichord/B.mp3 b/public/audio/harpsichord/B.mp3 new file mode 100644 index 000000000..4c3bd4678 Binary files /dev/null and b/public/audio/harpsichord/B.mp3 differ diff --git a/public/audio/harpsichord/C.mp3 b/public/audio/harpsichord/C.mp3 new file mode 100644 index 000000000..ca11a9825 Binary files /dev/null and b/public/audio/harpsichord/C.mp3 differ diff --git a/public/audio/harpsichord/D.mp3 b/public/audio/harpsichord/D.mp3 new file mode 100644 index 000000000..5d7dcf3c0 Binary files /dev/null and b/public/audio/harpsichord/D.mp3 differ diff --git a/public/audio/harpsichord/E.mp3 b/public/audio/harpsichord/E.mp3 new file mode 100644 index 000000000..51f440085 Binary files /dev/null and b/public/audio/harpsichord/E.mp3 differ diff --git a/public/audio/piano/A.mp3 b/public/audio/piano/A.mp3 new file mode 100644 index 000000000..160d215b2 Binary files /dev/null and b/public/audio/piano/A.mp3 differ diff --git a/public/audio/piano/B.mp3 b/public/audio/piano/B.mp3 new file mode 100644 index 000000000..7fe89c3a2 Binary files /dev/null and b/public/audio/piano/B.mp3 differ diff --git a/public/audio/piano/C.mp3 b/public/audio/piano/C.mp3 new file mode 100644 index 000000000..ce9f99da6 Binary files /dev/null and b/public/audio/piano/C.mp3 differ diff --git a/public/audio/piano/D.mp3 b/public/audio/piano/D.mp3 new file mode 100644 index 000000000..f4198da80 Binary files /dev/null and b/public/audio/piano/D.mp3 differ diff --git a/public/audio/piano/E.mp3 b/public/audio/piano/E.mp3 new file mode 100644 index 000000000..e6886ebec Binary files /dev/null and b/public/audio/piano/E.mp3 differ diff --git a/public/audio/synth/B3.mp3 b/public/audio/synth/B3.mp3 deleted file mode 100644 index e4cd2026a..000000000 Binary files a/public/audio/synth/B3.mp3 and /dev/null differ diff --git a/public/audio/synth/C3.mp3 b/public/audio/synth/C3.mp3 deleted file mode 100644 index e4c061247..000000000 Binary files a/public/audio/synth/C3.mp3 and /dev/null differ diff --git a/public/audio/synth/D4.mp3 b/public/audio/synth/D4.mp3 deleted file mode 100644 index a4a40eaf0..000000000 Binary files a/public/audio/synth/D4.mp3 and /dev/null differ diff --git a/public/audio/synth/E3.mp3 b/public/audio/synth/E3.mp3 deleted file mode 100644 index f24c5f97e..000000000 Binary files a/public/audio/synth/E3.mp3 and /dev/null differ diff --git a/public/audio/synth/Fsharp4.mp3 b/public/audio/synth/Fsharp4.mp3 deleted file mode 100644 index 7d2469c21..000000000 Binary files a/public/audio/synth/Fsharp4.mp3 and /dev/null differ diff --git a/public/audio/synth/G3.mp3 b/public/audio/synth/G3.mp3 deleted file mode 100644 index 3342880a6..000000000 Binary files a/public/audio/synth/G3.mp3 and /dev/null differ diff --git a/public/audio/vibes/A.mp3 b/public/audio/vibes/A.mp3 new file mode 100644 index 000000000..73577ff99 Binary files /dev/null and b/public/audio/vibes/A.mp3 differ diff --git a/public/audio/vibes/B.mp3 b/public/audio/vibes/B.mp3 new file mode 100644 index 000000000..10521ba35 Binary files /dev/null and b/public/audio/vibes/B.mp3 differ diff --git a/public/audio/vibes/C.mp3 b/public/audio/vibes/C.mp3 new file mode 100644 index 000000000..422f6cc22 Binary files /dev/null and b/public/audio/vibes/C.mp3 differ diff --git a/public/audio/vibes/D.mp3 b/public/audio/vibes/D.mp3 new file mode 100644 index 000000000..22191ddb3 Binary files /dev/null and b/public/audio/vibes/D.mp3 differ diff --git a/public/audio/vibes/E.mp3 b/public/audio/vibes/E.mp3 new file mode 100644 index 000000000..ba8f2560a Binary files /dev/null and b/public/audio/vibes/E.mp3 differ