// Copyright (c) 2026 Storm Dragon // Authors: Storm Dragon, Angus Kola // SPDX-License-Identifier: GPL-3.0-or-later package config // EffectiveVoice resolves a sparse voice over Default. Uppercase retains the // established pitch of 7 unless the user explicitly chooses another pitch. func EffectiveVoice(settings Settings, kind string) Voice { voice := cloneVoice(settings.DefaultVoice) var override Voice switch kind { case "uppercase": pitch := 7.0 if voice.AveragePitch != nil { pitch = min(9, max(pitch, *voice.AveragePitch+2)) } voice.AveragePitch = &pitch override = settings.UppercaseVoice case "hyperlink": override = settings.HyperlinkVoice case "system": override = settings.SystemVoice } mergeVoice(&voice, cloneVoice(override)) return voice }