Files
yellowjacket/backend/player/volume.go
T
logan 30b2480df4 fix: resolve all lint errors and make linting a required CI check (#62)
- Fix 10 err113 violations: extract dynamic errors to package-level sentinels
- Fix 12 errcheck violations: handle unchecked error returns in player,
  metadata, and config packages
- Fix 4 revive stutter warnings: rename player.PlayerState to player.State,
  player.PlayerVolume to player.Volume, queue.QueueTrack to queue.Track,
  queue.QueueState to queue.State
- Fix 2 staticcheck SA4001: simplify *&x to x in assets handler
- Fix 5 unused constants: remove dead AudioFileType iota block in models
- Fix gci/gofumpt/wsl formatting issues across multiple files
- Add gofumpt module-path setting to .golangci.yml for correct import grouping
- Fix player test: gate integration test behind YELLOWJACKET_INTEGRATION env var
  instead of only skipping in CI, and replace t.Errorf+t.Failed with t.Fatalf
- Remove continue-on-error from golangci-lint CI step so linting is now required
2026-02-14 01:52:27 -06:00

56 lines
1.1 KiB
Go

package player
// UserVolume represents volume on a user-facing scale (0-100).
type UserVolume int
// Volume represents volume on an internal scale (-4 to 0).
type Volume float64
// User volume range bounds.
const (
MinUserVol UserVolume = 0
MaxUserVol UserVolume = 100
)
// Internal volume range bounds.
const (
MinVol Volume = -4
MaxVol Volume = 0
)
// ToVolume converts user volume to internal player volume.
func (oldVol UserVolume) ToVolume() Volume {
var newVol Volume
if oldVol >= MinUserVol && oldVol <= MaxUserVol {
ratio := Volume(oldVol-MinUserVol) / Volume(MaxUserVol-MinUserVol)
newVol = ratio*(MaxVol-MinVol) + MinVol
}
return newVol
}
// ToUserVolume converts internal player volume to user volume.
func (oldVolFloat Volume) ToUserVolume() UserVolume {
var newVol UserVolume
if oldVolFloat >= MinVol && oldVolFloat <= MaxVol {
ratio := (oldVolFloat - MinVol) / (MaxVol - MinVol)
newVol = UserVolume(ratio*Volume(MaxUserVol-MinUserVol)) + MinUserVol
}
return newVol
}
func clampVolume(v UserVolume) UserVolume {
if v > MaxUserVol {
return MaxUserVol
}
if v < MinUserVol {
return MinUserVol
}
return v
}