Update player to support both 10-band and 15-band equalizers
This commit is contained in:
+42
-15
@@ -43,17 +43,19 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type App struct {
|
type App struct {
|
||||||
Config *Config
|
Config *Config
|
||||||
ServerManager *ServerManager
|
ServerManager *ServerManager
|
||||||
LyricsManager *LyricsManager
|
LyricsManager *LyricsManager
|
||||||
ImageManager *ImageManager
|
ImageManager *ImageManager
|
||||||
AudioCache *AudioCache
|
AudioCache *AudioCache
|
||||||
PlaybackManager *PlaybackManager
|
AutoEQManager *AutoEQManager
|
||||||
LocalPlayer *mpv.Player
|
EQPresetManager *EQPresetManager
|
||||||
UpdateChecker UpdateChecker
|
PlaybackManager *PlaybackManager
|
||||||
MPRISHandler *MPRISHandler
|
LocalPlayer *mpv.Player
|
||||||
WinSMTC *windows.SMTC
|
UpdateChecker UpdateChecker
|
||||||
ipcServer ipc.IPCServer
|
MPRISHandler *MPRISHandler
|
||||||
|
WinSMTC *windows.SMTC
|
||||||
|
ipcServer ipc.IPCServer
|
||||||
|
|
||||||
// UI callbacks to be set in main
|
// UI callbacks to be set in main
|
||||||
OnReactivate func()
|
OnReactivate func()
|
||||||
@@ -165,6 +167,11 @@ func StartupApp(appName, displayAppName, appVersion, appVersionTag, latestReleas
|
|||||||
fetch = NewLrcLibFetcher(a.cacheDir, a.Config.Application.CustomLrcLibUrl, timeout)
|
fetch = NewLrcLibFetcher(a.cacheDir, a.Config.Application.CustomLrcLibUrl, timeout)
|
||||||
}
|
}
|
||||||
a.LyricsManager = NewLyricsManager(a.ServerManager, fetch)
|
a.LyricsManager = NewLyricsManager(a.ServerManager, fetch)
|
||||||
|
a.EQPresetManager = NewEQPresetManager(confDir)
|
||||||
|
|
||||||
|
// Initialize AutoEQ manager
|
||||||
|
autoEQTimeout := time.Duration(a.Config.Application.RequestTimeoutSeconds) * time.Second
|
||||||
|
a.AutoEQManager = NewAutoEQManager(filepath.Join(cacheDir, "autoeq"), autoEQTimeout)
|
||||||
|
|
||||||
// Periodically scan for remote players
|
// Periodically scan for remote players
|
||||||
go a.PlaybackManager.ScanRemotePlayers(a.bgrndCtx, true /*fastScan*/)
|
go a.PlaybackManager.ScanRemotePlayers(a.bgrndCtx, true /*fastScan*/)
|
||||||
@@ -386,11 +393,31 @@ func (a *App) setupMPV() error {
|
|||||||
a.LocalPlayer.SetAudioExclusive(a.Config.LocalPlayback.AudioExclusive)
|
a.LocalPlayer.SetAudioExclusive(a.Config.LocalPlayback.AudioExclusive)
|
||||||
a.LocalPlayer.SetPauseFade(a.Config.LocalPlayback.PauseFade)
|
a.LocalPlayer.SetPauseFade(a.Config.LocalPlayback.PauseFade)
|
||||||
|
|
||||||
eq := &mpv.ISO15BandEqualizer{
|
// Initialize the appropriate equalizer type based on config
|
||||||
EQPreamp: a.Config.LocalPlayback.EqualizerPreamp,
|
var eq mpv.Equalizer
|
||||||
Disabled: !a.Config.LocalPlayback.EqualizerEnabled,
|
if a.Config.LocalPlayback.EqualizerType == "ISO10Band" {
|
||||||
|
eq10 := &mpv.ISO10BandEqualizer{
|
||||||
|
EQPreamp: a.Config.LocalPlayback.EqualizerPreamp,
|
||||||
|
Disabled: !a.Config.LocalPlayback.EqualizerEnabled,
|
||||||
|
}
|
||||||
|
// Copy up to 10 bands
|
||||||
|
numBands := min(len(a.Config.LocalPlayback.GraphicEqualizerBands), 10)
|
||||||
|
for i := 0; i < numBands; i++ {
|
||||||
|
eq10.BandGains[i] = a.Config.LocalPlayback.GraphicEqualizerBands[i]
|
||||||
|
}
|
||||||
|
eq = eq10
|
||||||
|
} else {
|
||||||
|
eq15 := &mpv.ISO15BandEqualizer{
|
||||||
|
EQPreamp: a.Config.LocalPlayback.EqualizerPreamp,
|
||||||
|
Disabled: !a.Config.LocalPlayback.EqualizerEnabled,
|
||||||
|
}
|
||||||
|
// Copy up to 15 bands
|
||||||
|
numBands := min(len(a.Config.LocalPlayback.GraphicEqualizerBands), 15)
|
||||||
|
for i := 0; i < numBands; i++ {
|
||||||
|
eq15.BandGains[i] = a.Config.LocalPlayback.GraphicEqualizerBands[i]
|
||||||
|
}
|
||||||
|
eq = eq15
|
||||||
}
|
}
|
||||||
copy(eq.BandGains[:], a.Config.LocalPlayback.GraphicEqualizerBands)
|
|
||||||
a.LocalPlayer.SetEqualizer(eq)
|
a.LocalPlayer.SetEqualizer(eq)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -327,7 +327,10 @@ func (c *Controller) ShowSettingsDialog(themeUpdateCallbk func(), themeFiles map
|
|||||||
devs, themeFiles, bands,
|
devs, themeFiles, bands,
|
||||||
c.App.ServerManager.Server.ClientDecidesScrobble(),
|
c.App.ServerManager.Server.ClientDecidesScrobble(),
|
||||||
isLocalPlayer, isReplayGainPlayer, isEqualizerPlayer, canSavePlayQueue,
|
isLocalPlayer, isReplayGainPlayer, isEqualizerPlayer, canSavePlayQueue,
|
||||||
c.MainWindow)
|
c.App.EQPresetManager,
|
||||||
|
c.MainWindow,
|
||||||
|
c.App.AutoEQManager,
|
||||||
|
c.App.ImageManager)
|
||||||
dlg.OnReplayGainSettingsChanged = func() {
|
dlg.OnReplayGainSettingsChanged = func() {
|
||||||
c.App.PlaybackManager.SetReplayGainOptions(c.App.Config.ReplayGain)
|
c.App.PlaybackManager.SetReplayGainOptions(c.App.Config.ReplayGain)
|
||||||
}
|
}
|
||||||
@@ -342,11 +345,31 @@ func (c *Controller) ShowSettingsDialog(themeUpdateCallbk func(), themeFiles map
|
|||||||
}
|
}
|
||||||
dlg.OnThemeSettingChanged = themeUpdateCallbk
|
dlg.OnThemeSettingChanged = themeUpdateCallbk
|
||||||
dlg.OnEqualizerSettingsChanged = func() {
|
dlg.OnEqualizerSettingsChanged = func() {
|
||||||
// currently we only have one equalizer type
|
// Create the appropriate equalizer type based on config
|
||||||
eq := c.App.LocalPlayer.Equalizer().(*mpv.ISO15BandEqualizer)
|
var eq mpv.Equalizer
|
||||||
eq.Disabled = !c.App.Config.LocalPlayback.EqualizerEnabled
|
if c.App.Config.LocalPlayback.EqualizerType == "ISO10Band" {
|
||||||
eq.EQPreamp = c.App.Config.LocalPlayback.EqualizerPreamp
|
eq10 := &mpv.ISO10BandEqualizer{
|
||||||
copy(eq.BandGains[:], c.App.Config.LocalPlayback.GraphicEqualizerBands)
|
Disabled: !c.App.Config.LocalPlayback.EqualizerEnabled,
|
||||||
|
EQPreamp: c.App.Config.LocalPlayback.EqualizerPreamp,
|
||||||
|
}
|
||||||
|
// Copy up to 10 bands
|
||||||
|
numBands := min(len(c.App.Config.LocalPlayback.GraphicEqualizerBands), 10)
|
||||||
|
for i := 0; i < numBands; i++ {
|
||||||
|
eq10.BandGains[i] = c.App.Config.LocalPlayback.GraphicEqualizerBands[i]
|
||||||
|
}
|
||||||
|
eq = eq10
|
||||||
|
} else {
|
||||||
|
eq15 := &mpv.ISO15BandEqualizer{
|
||||||
|
Disabled: !c.App.Config.LocalPlayback.EqualizerEnabled,
|
||||||
|
EQPreamp: c.App.Config.LocalPlayback.EqualizerPreamp,
|
||||||
|
}
|
||||||
|
// Copy up to 15 bands
|
||||||
|
numBands := min(len(c.App.Config.LocalPlayback.GraphicEqualizerBands), 15)
|
||||||
|
for i := 0; i < numBands; i++ {
|
||||||
|
eq15.BandGains[i] = c.App.Config.LocalPlayback.GraphicEqualizerBands[i]
|
||||||
|
}
|
||||||
|
eq = eq15
|
||||||
|
}
|
||||||
c.App.LocalPlayer.SetEqualizer(eq)
|
c.App.LocalPlayer.SetEqualizer(eq)
|
||||||
}
|
}
|
||||||
dlg.OnPageNeedsRefresh = c.RefreshPageFunc
|
dlg.OnPageNeedsRefresh = c.RefreshPageFunc
|
||||||
|
|||||||
Reference in New Issue
Block a user