in charts/shared/sonic.js [786:876]
async playPause() {
// This needs to be here to make Safari work because of its strict autoplay policies
Tone.context.resume()
let self = this
console.log("isPlaying", self.isPlaying, "inProgress", self.inProgress, "usedCursor", self.usedCursor, "furniturePlayer", self.furniturePlaying, "furniturePaused", self.furniturePaused)
// Audio has not played through, so start with the furniture
if (!self.runOnce && !self.inProgress && !self.furniturePlaying) {
console.log("playing furniture")
Tone.start()
self.synth.context.resume();
self.runOnce = true
// self.inProgress = true
await self.playFurniture()
}
// Furniture is playing, so clear speech on second press
else if (self.furniturePlaying && !self.furniturePaused) {
console.log("pausing furniture")
self.speech.pause()
self.furniturePaused = true
}
else if (self.furniturePlaying && self.furniturePaused) {
self.speech.resume()
self.furniturePaused = false
}
// it's not playing, and not paused so play it from the start
if (!self.isPlaying && !self.inProgress && !self.usedCursor && !self.furniturePlaying) {
console.log("playing")
// self.isPlaying = true
// self.inProgress = true
for await (const key of this.dataKeys) {
console.log(key)
// setTimeout(async () => {
let speakKey = await self.speaker(`${key}`)
await self.playAudio(key)
// },100)
}
}
// Function to resume after using the cursor here
else if (!self.isPlaying && self.inProgress && self.usedCursor) {
console.log("playing from cursor")
// self.isPlaying = true
// self.inProgress = true
console.log("yeh")
let currentKeyIndex = self.dataKeys.indexOf(self.currentKey)
for (let i = currentKeyIndex; i < self.dataKeys.length; i++) {
self.currentKey = self.dataKeys[i]
let speakKey = await self.speaker(`${self.currentKey}`)
await self.playAudio(self.currentKey)
}
}
// it is playing so pause
else if (self.isPlaying && self.inProgress) {
console.log("pause")
self.isPlaying = false
Tone.Transport.pause();
}
// it has been paused, so restart
else if (!self.isPlaying && self.inProgress) {
console.log("restart")
self.isPlaying = true
Tone.Transport.start();
}
}