Pegel auch für Ausgabe und Mikrofon
Die Programmzeilen hatten ihren mitlaufenden Ausschlag, die beiden Systemregler nicht. Jetzt beide, in derselben Form: der Pegel läuft im Regler mit, nicht daneben. Der Ausgangspegel kommt über einen globalen Tap — denselben Weg wie der Mixer, nur ohne Stummschalten und ohne Ausgabe. Ausgenommen werden die Programme, die der Mixer bereits abgreift: ein Tap sieht das Signal vor dem Stummschalten, sie zählten sonst doppelt — einmal als Original, das niemand hört, und einmal als das, was Onyx daraus macht. Ändert sich diese Liste, wird der Tap neu aufgebaut. Der Mikrofonpegel geht nur mit echter Aufnahme. Es gibt keine Eigenschaft am Gerät, die den Ausschlag verrät — einen Pegel bekommt nur, wer das Signal liest, und genau das meldet macOS mit dem orangen Punkt. Das ist richtig so, also läuft die Messung nur, solange die Ansicht offen ist, und hört beim Schließen sofort auf. Ein Zähler statt eines Schalters, weil Panel und Popover gleichzeitig offen sein können. Geräte, die keine Fließkommawerte liefern, bleiben ohne Pegel: als Fließkomma gelesene Ganzzahlen ergeben keinen falschen Ausschlag, sondern Unsinn. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -40,6 +40,8 @@
|
||||
<string>Onyx zeigt das Wetter an deinem aktuellen Standort. Du kannst stattdessen auch einen festen Ort wählen.</string>
|
||||
<key>NSAppleEventsUsageDescription</key>
|
||||
<string>Onyx steuert Spotify und Musik, wenn die universelle Medienschnittstelle nicht verfügbar ist.</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>Onyx zeigt im Mixer an, wie stark dein Mikrofon gerade ausschlägt. Gemessen wird nur, solange die Ansicht offen ist — aufgezeichnet wird nichts.</string>
|
||||
<key>NSAudioCaptureUsageDescription</key>
|
||||
<string>Onyx braucht Zugriff auf die Audioausgabe, um die Lautstärke einzelner Programme zu regeln. Es wird nichts aufgezeichnet.</string>
|
||||
|
||||
|
||||
@@ -105,6 +105,12 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
menuBar.register(NetworkMenuBarModule(model: networkModel),
|
||||
settings: model.menuBarSettings(for: "network"))
|
||||
}
|
||||
// Der Ausgangspegel muss die Programme auslassen, die der Mixer bereits
|
||||
// abgreift — nur der Mixer weiß, welche das sind.
|
||||
systemAudio.levels.mutedProcesses = { [weak audioMixer] in
|
||||
audioMixer?.tappedProcessIDs ?? []
|
||||
}
|
||||
|
||||
// Mixer und Lüfter gehören genauso in die Leiste wie die Messwerte:
|
||||
// beides regelt man mitten in etwas anderem, und dafür ist der Weg
|
||||
// über ein Fenster zu weit.
|
||||
|
||||
Reference in New Issue
Block a user