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 = [ const INSTRUMENTS = [
[ [
"/audio/mandolin/B3.mp3", "/audio/banjo/A.mp3",
"/audio/mandolin/C3.mp3", "/audio/banjo/B.mp3",
"/audio/mandolin/D4.mp3", "/audio/banjo/C.mp3",
"/audio/mandolin/E3.mp3", "/audio/banjo/D.mp3",
"/audio/mandolin/Fsharp4.mp3", "/audio/banjo/E.mp3"
"/audio/mandolin/G3.mp3"
], ],
[ [
"/audio/synth/B3.mp3", "/audio/harpsichord/A.mp3",
"/audio/synth/C3.mp3", "/audio/harpsichord/B.mp3",
"/audio/synth/D4.mp3", "/audio/harpsichord/C.mp3",
"/audio/synth/E3.mp3", "/audio/harpsichord/D.mp3",
"/audio/synth/Fsharp4.mp3", "/audio/harpsichord/E.mp3"
"/audio/synth/G3.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 { export default class extends Controller {
@@ -27,11 +39,6 @@ export default class extends Controller {
this.preloadedAudioFiles = [] this.preloadedAudioFiles = []
document.addEventListener("keydown", this.handleKeyDown.bind(this)); document.addEventListener("keydown", this.handleKeyDown.bind(this));
// this.preloadedAudioFiles = INSTRUMENTS[0].map(file => {
// const audio = new Audio(file)
// audio.load()
// return audio
// });
} }
disconnect() { disconnect() {
@@ -39,11 +46,12 @@ export default class extends Controller {
} }
handleKeyDown(event) { handleKeyDown(event) {
this.#setInstrumentIndex(event) if (event.shiftKey) {
this.instrumentIndex = this.#getInstrumentIndex(event)
if (this.instrumentIndex < INSTRUMENTS.length) { if (this.instrumentIndex < INSTRUMENTS.length) {
this.#preloadAudioFiles(this.instrumentIndex) this.#preloadAudioFiles(this.instrumentIndex)
console.log(this.preloadedAudioFiles) }
} }
} }
@@ -58,9 +66,9 @@ export default class extends Controller {
} }
} }
#setInstrumentIndex(event) { #getInstrumentIndex(event) {
const number = Number(event.code.replace("Digit", "")) const number = Number(event.code.replace("Digit", ""))
this.instrumentIndex = isNaN(number) ? 0 : number return isNaN(number) ? 0 : number
} }
#preloadAudioFiles(instrumentIndex) { #preloadAudioFiles(instrumentIndex) {
@@ -81,12 +89,10 @@ export default class extends Controller {
} }
#playSound() { #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) audioInstance.play()
// const audio = this.preloadedAudioFiles[randomIndex]
// const audioInstance = new Audio(audio.src)
//
// 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.