Continue implementing sample playback mode

This commit is contained in:
Kay Thomas
2022-08-20 03:02:24 -07:00
parent 3c738925bc
commit 55851a4cd0
2 changed files with 46 additions and 6 deletions

View File

@@ -775,6 +775,7 @@
>
<v-radio-group
v-model="sample.playbackMode"
:disabled="playDisabled"
mandatory
>
<v-radio
@@ -799,8 +800,9 @@
type="number"
label="Sporadic Min"
class="mx-3"
:disabled="sample.playbackMode != 'sporadic'"
:rules="[rules.gt(0)]"
:disabled="sample.playbackMode != 'sporadic' || playDisabled"
:rules="[validateSporadicRange(sample)]"
@change="updateSporadicPlayNext"
/>
<v-text-field
@@ -808,8 +810,9 @@
type="number"
label="Sporadic Max"
class="mx-3"
:disabled="sample.playbackMode != 'sporadic'"
:rules="[rules.gt(0)]"
:disabled="sample.playbackMode != 'sporadic' || playDisabled"
:rules="[validateSporadicRange(sample)]"
@change="updateSporadicPlayNext"
/>
</v-row>
</v-form>

View File

@@ -217,9 +217,12 @@ export default {
this.loadedSamples.forEach(s => {
if (s.playbackMode === 'sporadic') {
const playNextTime = Math.floor(Math.random() * (s.sporadicMax - s.sporadicMin + 1) + s.sporadicMin)
this.sporadicInterval = setInterval(() => console.log('Test'), playNextTime)
s.playNextTime = Math.floor(Math.random() * (s.sporadicMax - s.sporadicMin + 1) + s.sporadicMin)
console.log('PLAY NEXT TIME: ', s.playNextTime)
this.players.player(s.id).loop = false
s.sporadicInterval = setInterval(() => this.playSporadicSample(), s.playNextTime * 1000)
} else {
this.players.player(s.id).loop = true
this.players.player(s.id).unsync().sync().start(0)
}
})
@@ -227,6 +230,17 @@ export default {
Tone.Transport.start('+0.1')
},
playSporadicSample () {
this.loadedSamples.forEach(s => {
if (s.playbackMode === 'sporadic') {
this.players.player(s.id).unsync().sync().start()
clearInterval(s.sporadicInterval)
s.playNextTime = Math.floor(Math.random() * (s.sporadicMax - s.sporadicMin + 1) + s.sporadicMin)
s.sporadicInterval = setInterval(() => this.playSporadicSample(), s.playNextTime * 1000)
console.log('PLAY NEXT TIME: ', s.playNextTime)
}
})
},
stop () {
clearInterval(this.transportInterval)
Tone.Transport.stop()
@@ -235,6 +249,12 @@ export default {
clearInterval(this.timeRemainingInterval)
this.timeRemaining = 0
this.duration = 0
this.loadedSamples.forEach(s => {
if (s.playbackMode === 'sporadic') {
clearInterval(s.sporadicInterval)
}
})
},
startTimer () {
this.timeRemaining -= 1
@@ -837,6 +857,23 @@ export default {
this.selectedProfile = this.profileItems.find(p => p.text === this.activeProfile.name)
this.updateProfile()
this.confirmSwitchProfileDialog = false
},
updateSporadicPlayNext () {
this.loadedSamples.forEach(s => {
if (s.playbackMode === 'sporadic') {
clearInterval(s.sporadicInterval)
s.playNextTime = Math.floor(Math.random() * (s.sporadicMax - s.sporadicMin + 1) + s.sporadicMin)
}
})
},
validateSporadicRange (sample) {
const min = parseInt(sample.sporadicMin, 10)
const max = parseInt(sample.sporadicMax, 10)
if (isNaN(min) || isNaN(max) || max <= min || min <= 0 || max <= 0) {
return 'Invalid'
} else {
return true
}
}
}
}