#sound #audio-devices #output #parameters #blaster #switching #switch

bin+lib sbz-switch

Windows 上更改 Sound Blaster 参数的工具

8 个稳定版本 (4 个主要版本)

4.1.0 2022 年 5 月 15 日
4.0.0 2020 年 5 月 16 日
3.1.1 2019 年 5 月 25 日
3.1.0 2019 年 2 月 18 日
0.1.0 2017 年 10 月 30 日

#303 in 音频

每月 33 次下载

MIT/Apache

120KB
2.5K SLoC

sbz-switch

Windows 上切换 Sound Blaster 输出的工具

Crates.io License Build Status Docs.rs

Sound Blaster 驱动程序(至少对于 Sound Blaster Z 而言)将扬声器和耳机输出暴露为一个单一的音频设备给 Windows,这意味着正常切换声音输出设备的方法将不起作用。Creative 提供了一个图形化工具,但它不支持热键或类似功能,并且它不保留耳机与扬声器的独立音量级别。

这是一个简单的工具,可以执行以下操作

  1. 静音声音输出。

  2. 更改 Sound Blaster 配置。

  3. 可选调整音量。

  4. 取消静音。

它被设计成可以轻松通过热键或其他方式触发。

这可能有错误。自行承担风险,特别是如果你以可能会在切换过程中因最大音量声音输出而损坏耳机/扬声器的配置方式配置了耳机/扬声器。

使用方法

USAGE:
    sbz-switch.exe [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    apply           Applies a saved configuration
    dump            Prints out the current configuration
    help            Prints this message or the help of the given subcommand(s)
    list-devices    Prints out the names and IDs of available devices
    set             Sets specific parameters
    watch           Watches for events

列出设备

找到要控制的设备

USAGE:
    sbz-switch.exe list-devices

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -f <FORMAT>        Select the output format [default: toml]  [possible values: toml, json, yaml]

如果 Sound Blaster 不是默认音频输出,请执行 list-devices 获取设备 ID。

[[]]
id = '{0.0.0.00000000}.{cba07706-3492-4789-bb31-0717e228bd14}'
interface = 'Sound Blaster Z'
description = 'Speakers'

[[]]
id = '{0.0.0.00000000}.{baeaa072-e026-44e1-942e-c466170d9d6f}'
interface = 'Steam Streaming Microphone'
description = 'Speakers'

[[]]
id = '{0.0.0.00000000}.{57e7b4bc-c860-4987-aed3-3ee8dd3617b9}'
interface = 'Steam Streaming Speakers'
description = 'Speakers'

[[]]
id = '{0.0.0.00000000}.{128e193d-e35f-40dd-b414-16105e5ec32d}'
interface = '2- USB Audio Device'
description = 'Speakers'

将设备 ID 传递给其他命令:dump -d "{0.0.0.00000000}.{cba07706-3492-4789-bb31-0717e228bd14}"

设置

设置少量参数

USAGE:
    sbz-switch.exe set [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -b <FEATURE> <PARAMETER> <true|false>        Sets a boolean value
    -d, --device <DEVICE_ID>                     Specify the device to act on (get id from list-devices)
    -f <FEATURE> <PARAMETER> <VALUE>             Sets a floating-point value
    -i <FEATURE> <PARAMETER> <VALUE>             Sets an integer value
    -m <true|false>                              Temporarily mutes while changing parameters [default: true]
    -v, --volume <VOLUME>                        Sets the volume, in percent

以 60% 音量切换到扬声器并开启效果

sbz-switch set -i "Device Control" SelectOutput 1 -b EfxMasterControl "THXEfx Master OnOff" true -v 60

以 10% 音量切换到耳机并关闭效果

sbz-switch set -i "Device Control" SelectOutput 0 -b EfxMasterControl "THXEfx Master OnOff" false -v 10

转储

查看或保存当前参数

USAGE:
    sbz-switch.exe dump [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -d, --device <DEVICE_ID>    Specify the device to act on (get id from list-devices)
    -f <FORMAT>                 Select the output format [default: toml]  [possible values: toml, json, yaml]
    -o, --output <FILE>         Saves the current settings to a file

查看当前设置

sbz-switch dump

将当前设置保存到 headphones.toml

sbz-switch dump -o headphones.toml

注意:以这种方式保存参数将包括许多参数,其中一些在使用 apply 命令时可能实际上不可设置。建议删除不必要的设置以加快转换并避免错误。

应用

一次性设置许多参数

USAGE:
    sbz-switch.exe apply [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -d, --device <DEVICE_ID>    Specify the device to act on (get id from list-devices)
    -i <FILE>                   Reads the settings from a file instead of stdin
    -f <FORMAT>                 Select the input format [default: toml]  [possible values: toml, json, yaml]
    -m <true|false>             Temporarily mutes while changing parameters [default: true]

应用之前保存的 headphones.toml 文件

sbz-switch apply -i headphones.toml

省略 -i 参数将导致 sbz-switch 从 stdin 读取设置。

部分转储对于apply命令来说是可接受的(也是推荐的)输入,在这种情况下,其他参数保持不变。这意味着可以使用像这些小TOML文件

headphones.toml

[creative."Device Control"]
SelectOutput = 0

[creative.EfxMasterControl]
"THXEfx Master OnOff" = false

[endpoint]
volume = 0.1

speakers.toml

[creative."Device Control"]
SelectOutput = 1

[creative.EfxMasterControl]
"THXEfx Master OnOff" = true

[endpoint]
volume = 0.6

监视

监视参数更改等事件

USAGE:
    sbz-switch.exe watch [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -d, --device <DEVICE_ID>    Specify the device to act on (get id from list-devices)

已知问题

在切换过程中可能会出现爆音,或者输出音频的应用可能会变得混乱。这似乎是Creative方面的问题,即使使用官方软件进行切换,我也会遇到这种情况。

有些参数仅在另一个参数已经设置或者使用某些硬件时才有效,例如7.1环绕声扬声器配置。不幸的是,这些参数将包含在完整的参数转储中,并在稍后重新应用设置时可能导致错误。通常可以安全地忽略这些错误,但可以通过从转储文件中删除有问题的设置来避免这些错误。

设置参数时,顺序很重要。这个程序本身不会尝试正确地排序参数。此外,TOML文件是用toml 0.4读取的,它不会保留参数的顺序。

依赖项

~10–20MB
~263K SLoC