ios: Liquid Glass mini player, adjustable karaoke softness (1.0.7)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e98d595365
commit
d52a3e257f
6 files changed
+163
-56
No files matched your search
@@ -30,6 +30,32 @@ private struct ToggleCell: View {
|
||||
}
|
||||
}
|
||||
|
||||
/// How quiet karaoke's Soft vocals are.
|
||||
private struct SoftVocalsCell: View {
|
||||
@Environment(\.palette) private var p
|
||||
private var g: AppGraph { .shared }
|
||||
var body: some View {
|
||||
let db = g.settings.karaokeSoftDb
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack(spacing: 14) {
|
||||
SettingsIcon(symbol: "music.mic", bg: 0xFA2D48)
|
||||
Text("Karaoke Soft Vocals").foregroundStyle(p.label)
|
||||
Spacer()
|
||||
Text("\(db) dB").monospacedDigit().foregroundStyle(p.label2)
|
||||
}
|
||||
Slider(value: Binding(get: { Double(db) }, set: { g.playback.setKaraokeSoftDb(Int($0.rounded())) }), in: -30...(-3), step: 1) {
|
||||
Text("Karaoke Soft Vocals")
|
||||
} minimumValueLabel: {
|
||||
Text("Quieter").font(.caption).foregroundStyle(p.label2)
|
||||
} maximumValueLabel: {
|
||||
Text("Louder").font(.caption).foregroundStyle(p.label2)
|
||||
}
|
||||
}
|
||||
.padding(.vertical, 4)
|
||||
.themedRow()
|
||||
}
|
||||
}
|
||||
|
||||
/// A tappable row in the accent (or red), optionally centred.
|
||||
private struct ActionCell: View {
|
||||
let title: String
|
||||
@@ -115,6 +141,7 @@ struct SettingsScreen: View {
|
||||
NavCell(title: "Equalizer", value: !g.eq.state.enabled ? "Off" : g.eq.active?.name ?? "On", icon: "slider.vertical.3", iconBg: 0x34C759, route: .Eq)
|
||||
NavCell(title: "Stem Quality", value: s.stemQuality.label, icon: "gauge.with.dots.needle.67percent", iconBg: 0xFF2D55, route: .Quality)
|
||||
ToggleCell(title: "Keep Stem Mix Between Songs", icon: "speaker.wave.2.fill", iconBg: 0x5856D6, isOn: $s.keepStemMix)
|
||||
SoftVocalsCell()
|
||||
} header: { Header(text: "Sound") }
|
||||
Section {
|
||||
NavCell(title: "Cache & Downloads", value: gb(g.cache.usage.cachedBytes), icon: "externaldrive.fill", iconBg: 0x8E8E93, route: .Storage)
|
||||
|
||||
Reference in new issue
Block a user