diff --git a/backend/app.go b/backend/app.go index fe9de0e..c72a609 100644 --- a/backend/app.go +++ b/backend/app.go @@ -56,9 +56,12 @@ func StartupApp(appName, appVersionTag, configFile, latestReleaseURL string) (*A if err := a.initMPV(); err != nil { return nil, err } + a.Config.LocalPlayback.Volume = clamp(a.Config.LocalPlayback.Volume, 0, 100) a.Player.SetVolume(a.Config.LocalPlayback.Volume) + a.Player.SetAudioDevice(a.Config.LocalPlayback.AudioDeviceName) + rgainOpts := []string{ReplayGainNone, ReplayGainAlbum, ReplayGainTrack} if !sharedutil.StringSliceContains(rgainOpts, a.Config.ReplayGain.Mode) { a.Config.ReplayGain.Mode = ReplayGainNone diff --git a/backend/config.go b/backend/config.go index c9a29ea..3ef76ca 100644 --- a/backend/config.go +++ b/backend/config.go @@ -49,6 +49,7 @@ type PlaylistPageConfig struct { } type LocalPlaybackConfig struct { + AudioDeviceName string AudioExclusive bool InMemoryCacheSizeMB int Volume int @@ -108,6 +109,8 @@ func DefaultConfig(appVersionTag string) *Config { TracklistColumns: []string{"Artist", "Album", "Time", "Plays"}, }, LocalPlayback: LocalPlaybackConfig{ + // "auto" is the name to pass to MPV for autoselecting the output device + AudioDeviceName: "auto", AudioExclusive: false, InMemoryCacheSizeMB: 30, Volume: 100, diff --git a/player/player.go b/player/player.go index d7f82c1..36ecfde 100644 --- a/player/player.go +++ b/player/player.go @@ -406,6 +406,10 @@ func (p *Player) ListAudioDevices() ([]AudioDevice, error) { return devices, nil } +func (p *Player) SetAudioDevice(deviceName string) error { + return p.mpv.SetPropertyString("audio-device", deviceName) +} + func (p *Player) getInt64Property(propName string) (int64, error) { playpos, err := p.mpv.GetProperty(propName, mpv.FORMAT_INT64) if err != nil {