minor player refactor/ delete wails logo image
This commit is contained in:
+16
-12
@@ -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 {
|
||||||
|
|||||||
@@ -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 |
Reference in New Issue
Block a user