如何在静音状态未知时编写静音逻辑

时间:2010-12-27 12:43:19

标签: c mute open-source

我正在为OSS4编写一个indicator-sound克隆。设置音量现在工作正常,但我的程序静音方面有问题。

关于在OSS4中静音的几个事实:

  • vmix没有静音(我们使用vmix进行音量控制)
  • 另外,'媒体键'控制音量的方式不设置静音控制,而是音量= 0

这个问题是,当读取vmix音量并遇到零时,我们不知道用户是否实际将其设置为零,或者是否将其设置为其他值,但是已静音。

当OSS4的vmix中没有中央静音概念并且其他音量控制器在内部处理静音时,我应该如何编写静音逻辑?

git code, if that helps

1 个答案:

答案 0 :(得分:1)

我不熟悉vmixOSS所以这可能会有所不同......

您可以向自己的系统添加两个变量:一个用于维持静音状态的标志,以及一个用于维护最近一次取消静音音量的值。

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

当用户打开静音时,您可以设置静音标记(可以在UI上反映)并记录音量值,然后将音量设置为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