как написать немую логику, когда отключение звука неизвестно - PullRequest
0 голосов
/ 27 декабря 2010

Я пишу клон indicator-sound для OSS4.Настройка громкости теперь работает нормально, но у меня проблемы с отключением звука в моей программе.

Несколько фактов о отключении звука в OSS4:

  • vmix не имеетОтключение звука (и мы используем vmix для регулировки громкости)
  • Кроме того, способ управления громкостью с помощью «медиа-клавиш» не устанавливает управление отключением звука, а скорее, громкость = 0

Проблема в том, что при чтении тома vmix и достижении нуля мы не знаем, действительно ли пользователь установил его на ноль или установил какое-то другое значение, но приглушил его.

Как мне написать логику отключения звука, когда в vmix OSS4 нет концепции центрального отключения звука, а другие контроллеры громкости обрабатывают отключение звука внутри?

git-код, если это помогает

1 Ответ

1 голос
/ 27 декабря 2010

Я не знаком с vmix или OSS, так что это может быть далеко ...

Вы можете добавить две переменные в свою собственную систему: флаг для поддержания состояния отключения звука и значение для сохранения самого последнего звука без звука.

OnMuteEvent
    if MuteFlag //we were muted, now unmuting
        MuteFlag = False
        vmix current volume = LastVolume
    else //we were unmuted, now muting
        MuteFlag = True
        LastVolume = vmix current volume
        vmix current volume = 0

Когда пользователь включает звук, вы устанавливаете флаг отключения звука, который вы можете отобразить в вашем пользовательском интерфейсе, и записываете значение громкости, затем устанавливаете громкость на 0. Когда пользователь выключает звук, установите громкость обратно на зарегистрированное значение и уберите флаг.

Если ваше приложение можно запустить, когда пользователь, возможно, уже установил состояние отключения звука, вы можете выполнить его инициализацию следующим образом:

if vmix.volume is 0 //might be mute!
    MuteFlag = True //assume it was due to being muted
    LastVolume = MaxVolume/2 //some sensible volume for when we unmute
...