forked from external-repos/noisedash
Continue implementing sample playback mode
This commit is contained in:
@@ -775,6 +775,7 @@
|
|||||||
>
|
>
|
||||||
<v-radio-group
|
<v-radio-group
|
||||||
v-model="sample.playbackMode"
|
v-model="sample.playbackMode"
|
||||||
|
:disabled="playDisabled"
|
||||||
mandatory
|
mandatory
|
||||||
>
|
>
|
||||||
<v-radio
|
<v-radio
|
||||||
@@ -799,8 +800,9 @@
|
|||||||
type="number"
|
type="number"
|
||||||
label="Sporadic Min"
|
label="Sporadic Min"
|
||||||
class="mx-3"
|
class="mx-3"
|
||||||
:disabled="sample.playbackMode != 'sporadic'"
|
:disabled="sample.playbackMode != 'sporadic' || playDisabled"
|
||||||
:rules="[rules.gt(0)]"
|
:rules="[validateSporadicRange(sample)]"
|
||||||
|
@change="updateSporadicPlayNext"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<v-text-field
|
<v-text-field
|
||||||
@@ -808,8 +810,9 @@
|
|||||||
type="number"
|
type="number"
|
||||||
label="Sporadic Max"
|
label="Sporadic Max"
|
||||||
class="mx-3"
|
class="mx-3"
|
||||||
:disabled="sample.playbackMode != 'sporadic'"
|
:disabled="sample.playbackMode != 'sporadic' || playDisabled"
|
||||||
:rules="[rules.gt(0)]"
|
:rules="[validateSporadicRange(sample)]"
|
||||||
|
@change="updateSporadicPlayNext"
|
||||||
/>
|
/>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-form>
|
</v-form>
|
||||||
|
|||||||
@@ -217,9 +217,12 @@ export default {
|
|||||||
|
|
||||||
this.loadedSamples.forEach(s => {
|
this.loadedSamples.forEach(s => {
|
||||||
if (s.playbackMode === 'sporadic') {
|
if (s.playbackMode === 'sporadic') {
|
||||||
const playNextTime = Math.floor(Math.random() * (s.sporadicMax - s.sporadicMin + 1) + s.sporadicMin)
|
s.playNextTime = Math.floor(Math.random() * (s.sporadicMax - s.sporadicMin + 1) + s.sporadicMin)
|
||||||
this.sporadicInterval = setInterval(() => console.log('Test'), playNextTime)
|
console.log('PLAY NEXT TIME: ', s.playNextTime)
|
||||||
|
this.players.player(s.id).loop = false
|
||||||
|
s.sporadicInterval = setInterval(() => this.playSporadicSample(), s.playNextTime * 1000)
|
||||||
} else {
|
} else {
|
||||||
|
this.players.player(s.id).loop = true
|
||||||
this.players.player(s.id).unsync().sync().start(0)
|
this.players.player(s.id).unsync().sync().start(0)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -227,6 +230,17 @@ export default {
|
|||||||
|
|
||||||
Tone.Transport.start('+0.1')
|
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 () {
|
stop () {
|
||||||
clearInterval(this.transportInterval)
|
clearInterval(this.transportInterval)
|
||||||
Tone.Transport.stop()
|
Tone.Transport.stop()
|
||||||
@@ -235,6 +249,12 @@ export default {
|
|||||||
clearInterval(this.timeRemainingInterval)
|
clearInterval(this.timeRemainingInterval)
|
||||||
this.timeRemaining = 0
|
this.timeRemaining = 0
|
||||||
this.duration = 0
|
this.duration = 0
|
||||||
|
|
||||||
|
this.loadedSamples.forEach(s => {
|
||||||
|
if (s.playbackMode === 'sporadic') {
|
||||||
|
clearInterval(s.sporadicInterval)
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
startTimer () {
|
startTimer () {
|
||||||
this.timeRemaining -= 1
|
this.timeRemaining -= 1
|
||||||
@@ -837,6 +857,23 @@ export default {
|
|||||||
this.selectedProfile = this.profileItems.find(p => p.text === this.activeProfile.name)
|
this.selectedProfile = this.profileItems.find(p => p.text === this.activeProfile.name)
|
||||||
this.updateProfile()
|
this.updateProfile()
|
||||||
this.confirmSwitchProfileDialog = false
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user