multi cards
This commit is contained in:
@@ -77,7 +77,7 @@ class Disc {
|
||||
private _inertiaFriction: number = 1 // Coefficient de frottement pour l'inertie (plus proche de 1 = plus long)
|
||||
private _lastDragVelocity: number = 0 // Dernière vitesse de drag
|
||||
private _lastDragTime: number = 0 // Dernier temps de drag
|
||||
private _inertiaAmplification: number = 45 // Facteur d'amplification de l'inertie
|
||||
private _inertiaAmplification: number = 25 // Facteur d'amplification de l'inertie
|
||||
private _previousDuration: number = 0 // Pour suivre les changements de durée
|
||||
|
||||
public isReversed: boolean = false
|
||||
@@ -131,7 +131,7 @@ class Disc {
|
||||
this._draggingSpeeds = limit(this._draggingSpeeds, 10)
|
||||
|
||||
this._playbackSpeed = average(this._draggingSpeeds)
|
||||
this._playbackSpeed = clamp(this._playbackSpeed, -4, 4)
|
||||
// this._playbackSpeed = clamp(this._playbackSpeed, -4, 4)
|
||||
}
|
||||
|
||||
get secondsPlayed() {
|
||||
@@ -354,11 +354,11 @@ class Disc {
|
||||
this._inertiaVelocity = 0
|
||||
this._isInertiaActive = false
|
||||
this._playbackSpeed = 0
|
||||
this._basePlaybackSpeed = 0
|
||||
this._basePlaybackSpeed = 1
|
||||
this.el.style.transform = 'rotate(0rad)'
|
||||
this.callbacks.onStop()
|
||||
this._isPoweredOn = false
|
||||
this.stop()
|
||||
// this.callbacks.onStop()
|
||||
// this._isPoweredOn = false
|
||||
// this.stop()
|
||||
return 0
|
||||
}
|
||||
// Arrêt à la fin (angle >= _maxAngle)
|
||||
|
||||
@@ -132,6 +132,24 @@ class Sampler {
|
||||
unmute() {
|
||||
this.gainNode.gain.value = 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Définit le taux de lecture (vitesse de lecture)
|
||||
* @param rate Taux de lecture (1.0 = vitesse normale, 0.5 = moitié de vitesse, 2.0 = double vitesse, etc.)
|
||||
*/
|
||||
setPlaybackRate(rate: number) {
|
||||
if (!this.audioSource) return
|
||||
|
||||
const currentTime = this.audioContext.currentTime
|
||||
this.audioSource.playbackRate.cancelScheduledValues(currentTime)
|
||||
this.audioSource.playbackRate.linearRampToValueAtTime(
|
||||
Math.max(0.001, Math.abs(rate)), // Éviter les valeurs négatives ou nulles
|
||||
currentTime + 0.05 // Petit délai pour éviter les clics
|
||||
)
|
||||
|
||||
// Mettre à jour la vitesse actuelle
|
||||
this.currentSpeed = rate
|
||||
}
|
||||
}
|
||||
|
||||
export default Sampler
|
||||
|
||||
Reference in New Issue
Block a user