Finish up preloading logic

This commit is contained in:
Andy Smith
2025-09-26 11:33:29 -05:00
parent 88ef14ccd8
commit 5d72ae8e29
27 changed files with 36 additions and 30 deletions
@@ -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()
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.