minor player refactor/ delete wails logo image

This commit is contained in:
2025-03-28 15:23:27 -04:00
parent 2ca2b50e83
commit 653842117f
3 changed files with 26 additions and 12 deletions
+16 -12
View File
@@ -60,12 +60,16 @@ func (p *Player) Init(ctx context.Context) error {
} }
func (p *Player) updateStreamers(newBaseStreamer beep.Streamer, sr beep.SampleRate) error { func (p *Player) updateStreamers(newBaseStreamer beep.Streamer, sr beep.SampleRate) error {
// set base streamer
p.baseStreamer = newBaseStreamer p.baseStreamer = newBaseStreamer
// resample file stream to match speaker // resample file stream to match speaker
// TODO: variable resample quality // TODO: variable resample quality
p.resampled = beep.Resample(4, sr, speakerSampleRate, p.baseStreamer) p.resampled = beep.Resample(4, sr, speakerSampleRate, p.baseStreamer)
// wrap in ctrl streamer to allow play/pause // wrap in ctrl streamer to allow play/pause
p.control = &beep.Ctrl{Streamer: p.resampled} p.control = &beep.Ctrl{Streamer: p.resampled}
// wrap in volume streamer // wrap in volume streamer
p.volume = &effects.Volume{ p.volume = &effects.Volume{
Streamer: p.control, Streamer: p.control,
@@ -73,6 +77,8 @@ func (p *Player) updateStreamers(newBaseStreamer beep.Streamer, sr beep.SampleRa
Volume: 0, Volume: 0,
Silent: false, Silent: false,
} }
// set "final" streamer
p.speakerStreamer = p.volume p.speakerStreamer = p.volume
return nil return nil
@@ -83,13 +89,15 @@ func (p *Player) changeState(desiredState PlayerState) error {
return nil return nil
} }
// reads a file and creates a streamer resampled to match the speaker // reads a file and creates a streamer, also wraps necessary streamers
func (p *Player) LoadFile(filePath string) error { func (p *Player) LoadFile(filePath string) error {
// opening file
f, err := os.Open(filePath) f, err := os.Open(filePath)
if err != nil { if err != nil {
return fmt.Errorf("failed to open file %w", err) return fmt.Errorf("failed to open file %w", err)
} }
// attempt to decode mp3 file and create streamer and format data
streamer, format, err := mp3.Decode(f) streamer, format, err := mp3.Decode(f)
if err != nil { if err != nil {
return fmt.Errorf("failed to decode mp3 %w", err) return fmt.Errorf("failed to decode mp3 %w", err)
@@ -136,18 +144,14 @@ Volume = 0 means unchanged volume.
Positive Volume value means increasing volume Positive Volume value means increasing volume
Negative Volume value means decreasing volume Negative Volume value means decreasing volume
*/ */
// TODO: implement max/ min volume values
func (p *Player) SetVolume(desiredVolume UserVolume) error { func (p *Player) SetVolume(desiredVolume UserVolume) error {
if desiredVolume > MaxUserVol { // clamp value between 1 and 100
p.volume.Silent = false volume := clampVolume(desiredVolume)
p.volume.Volume = float64(MaxUserVol.ToPlayerVolume())
} else if desiredVolume < MinUserVol { // Apply the volume settings
p.volume.Volume = float64(MinUserVol.ToPlayerVolume()) p.volume.Volume = float64(volume.ToPlayerVolume())
p.volume.Silent = true p.volume.Silent = volume < MinUserVol
} else {
p.volume.Silent = false
p.volume.Volume = float64(desiredVolume.ToPlayerVolume())
}
return nil return nil
} }
func (p *Player) ChangeVolume(deltaVolume int) error { func (p *Player) ChangeVolume(deltaVolume int) error {
+10
View File
@@ -28,3 +28,13 @@ func (oldVolFloat PlayerVolume) ToUserVolume() UserVolume {
} }
return newVol return newVol
} }
func clampVolume(v UserVolume) UserVolume {
if v > MaxUserVol {
return MaxUserVol
}
if v < MinUserVol {
return MinUserVol
}
return v
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB