Программа предотвращает засыпание цифровых аудиовыходов SPDIF и HDMI при отсутствии сигнала, и таким образом решает проблему обрезки начала звука при начале воспроизведения, которая вызвана тем, что звуковому тракту требуется небольшое время на пробуждение. Если у вас нет такой проблемы — значит драйвер аудиокарты не отправляет аудиотракт в сон при остановке воспроизведения. Если же проблема имеет место — Sound Keeper решит проблему непрерывным воспроизведением тишины.
Скачать: soundkeeper.7z (76КБ). Исходный код →
Особенности
Sound Keeper работает через WASAPI на Windows 7 и новее. Программа написана на C++, без использования тяжёлых фреймворков вроде .NET, поэтому она очень легковесна и расходует минимум памяти.
Sound Keeper внешне никак себя не проявляет и работает полностью автоматически: находит все цифровые выходы (SPDIF или HDMI) и предотвращает их засыпание. Если во время работы программы появится новый цифровой выход (например, если вы подключили компьютер по HDMI к телевизору) — это будет корректно обработано, перезапуск программы не требуется. Для отключения Sound Keeper вы должны либо выключить звук в микшере для этой программы (после чего Sound Keeper автоматически закроется), либо просто убить процесс soundkeeper.exe. Для автоматической загрузки программы вместе с системой просто скопируйте исполняемый файл soundkeeper.exe в каталог Автозагрузка (чтобы открыть его, нажмите Win+R, введите shell:startup и нажмите Enter).
Настройки
- Поведение по умолчанию может быть изменено добавлением опций к имени исполняемого файла.
- По умолчанию используется основной аудио выход. Добавьте All к имени исполняемого файла программы для включения Sound Keeper на всех аудио выходах.
- По умолчанию используется неслышимый сигнал. Добавьте Zero к имени исполняемого файла чтобы использовать поток нулей в качестве сигнала (как это было в Sound Keeper v1.0).
Если режим по умолчанию не помогает, попробуйте новый тип потока Sine. Он генерирует синусоиду, и может быть настроен. Имеется два параметра: F (частота) и A (амплитуда). Значение параметра идёт сразу за символом параметра. Например, добавьте SineF10A5 к имени исполняемого файла для генерации синусоиды 10Hz с амплитудой 5%. Низкие частоты (ниже 20Hz) и высокие частоты (выше 20000Hz) с низкой амплитудой (до 10%) являются неслышимыми.
Что нового в v1.3.4
- Доработан воркараунд для утечки памяти в WASAPI в эксклюзивном режиме на Windows 8-10.
- Билд для ARM64 Windows (со статически слинкованным рантаймом си, из-за чего больший размер файла).
Что нового в v1.3.3
- Исправлена ошибка разбора параметров: All или Analog после выбора типа сигнала приводило сбросу амплитуды в 0.
Что нового в v1.3.2
- Fluctuate учитывает, что WASAPI по какой-то причине репортит вывод аудио 24-bit PCM как 32-bit.
- Fluctuate генерирует 50 флуктуаций по умолчанию. Это помогает в гораздо большем числе случаев.
- Sound Keeper больше не закрывается когда он замьючен.
Что нового в v1.3.1
- Исправлена ошибка, которая могла приводить к зависанию программы при добавлении и удалении аудио устройств.
- Fluctuate воспринимает не-PCM форматы вывода (вроде Dolby Atmos) как 24-разрядные вместо 16-разрядных.
- Параметр частоты F ограничен половиной текущей частоты дискретизации, чтобы избежать генерацию неожиданного шума.
- Более детальные логи в отладочной версии. Отладочный вывод может быть перенаправлен в файл.
Что нового в v1.3.0
- Fluctuate делает одну флуктуацию в секунду по умолчанию. Частота может быть изменена параметром F.
- Возможность периодичного проигрывания сигнала (параметры L и W) с опциональным фейдингом (параметр T).
- Новые виды сигналов, генерирующих шум: White, Brown, и Pink.
- Новая команда для остановки уже запущенной копии программы: soundkeeper kill
- Новый режим Analog, который работает как противоположность Digital.
- Аудио-устройства Remote Desktop игнорируются (это может быть отключено параметром Remote).
- Новый режим OpenOnly, который просто открывает аудио-устройство, но не отправляет на него сигнал.
- Новый режим NoSleep, который отключает код определения автоматического ухода системы в сон (Windows 7-10).
- При отсутствии подходящих аудио-устройств, программа работает как заглушка в ожидании подходящих устройств.
- Sound Keeper не должен предотвращать Windows 10 от автоматического перехода в сон.
- Программа работает корректно, когда автоматический переход в сон в Windows 10 отключён.
- Код, позволяющий системе уснуть, пришлось отключить в Windows 11 из-за особенностей этой версии ОС.
Sound Keeper vs. SPDIF Keep Alive vs. SPDIF-KA
Sound Keeper v1.0 | SPDIF Keep Alive v1.2 | SPDIF-KA v1.4 | |
Полный автомат: | Да | Нет | Нет |
Поддержка нескольких выходов: | Да | Нет | Нет |
Графический интерфейс: | Нет | Есть | Есть |
Требует .NET: | Нет | Требует | Требует |
Объём EXE-файла: | 17КБ | 668КБ | 163КБ |
Расход CPU (на Intel Core i5 4460): | 0.004% | 0.06% | 0.06% |
Расход RAM (Private Working Set): | 1636КБ | 13704КБ | 10600КБ |
Также в отладочной и бета версиях появилась настройка NoSleep, которая отключает уход Sound Keeper в сон. Если вам не нужно, чтобы компьютер сам засыпал, можете воспользоваться этой настройкой.
У меня нет автоматического ухода в сон, по крайней мере в Control Panel\All Control Panel Items\Power Options\Edit Plan Settings\Put the computer to sleep: Never
Странно. Можете попробовать воспроизвести проблему с отладочной версией и показать что она выводит в консоль?
Готово. См. 10:21 (отошел о компа) и 10:43 (пошевелил мышкой)
Проверил, через сколько оно думает что нужен слип:
вот это, 10:50:47, написало рочно через 40с после последнего движения мышкой в 10:50:07.
Нда... У функции получения остатка времени до сна какое-то неадекватное поведение в Windows 10. Предсказуемо она работала походу только в Windows 7. Неудивительно, что эту функцию совсем отключили в Windows 11. Судя по всему, когда система возвращает отрицательное время, заканчивающееся на единицу, это значит, что сон выключен.
Наверное, стоит убрать автодетект сна вообще. Но пока что попробую всё же исправить её хотя бы для Windows 10. Обновил отладочную и бета версии. Должно теперь не отключаться при таких странных показаниях системы.
Спасибо! Теперь пишет так, так и задумано?
19:14:16.464 [ 4644] Rendering loop started.
19:15:16.552 [ 6436] Remaining time to sleeping: -31 seconds.
19:15:46.604 [ 6436] Remaining time to sleeping: -61 seconds.
19:16:16.648 [ 6436] Remaining time to sleeping: -1 seconds.
Сам слип не проверял, работает ли, позже проверю, и погоняю.
Вроде бы все хорошо. Комп в слип уходит по запросу, при этом пишет такое.
По таймеру не знаю, уйдет ли, не пользовался никогда автослипом.
Спасибо!
Шнипер, оно выводит те же значения что и раньше (так как их сообщает система), просто теперь они интерпретируются иначе и Sound Keeper не уходит в сон. Можете дописать NoSleep, чтобы он не проверял сколько до сна осталось.
Сообщения про изменение устройств по умолчанию — это просто то что WASAPI сообщает о работе аудиоподсистемы. Sound Keeper по этим событиям определяет, нужно ли ему перезапуститься. Если он как-то на это отреагировал (кроме вывода информации в лог) — вы увидели бы это в логе следом.
Sound Keeper v1.3.0
Спасибо AnaLogiC76 за идеи и код для OpenOnly и NoSleep.
Спасибо! Год искал решение проблемы.
Sound Keeper v1.3.1
Sound Keeper v1.3.2
Sound Keeper v1.3.3
Добрый день!
Система microlab A-H500D и более новая H-500D "проглатывает" начала аудиотреков, и проглатывает все, что следует после непродолжительной паузы: https://fcenter.ru/online/hardarticles/multimedia/15305-Microlab_A_H500D_akusticheskaya_sistema_dlya_domashnego_kinoteatra
Пробовал Sound Keeper 30.01.2022 - не помогло(
Была запущена и висела в процессах. Мне по аудиосвязи говорят "двадцать три", а слышно только "цать три".
По индикации на выносном блоке управления (который подключен по оптике к компу) видно что сигнал пропадает.
В новой версии Sound Keeper есть изменения для такой системы microlab H-500D?
Последняя версия почти наверняка решит вашу проблему, но вам возможно надо будет немного поиграться с настройками для подбора подходящего режима. Попробуйте сразу стандартный режим, и если он не поможет, можете выбрать, например, SineF1A5 или SineF10A5 или что-то подобное. Подробности про настройку расписаны на английской версии этой страницы и в файле readme.
Все работает) крутая вещь)
На дисплее теперь всегда горит надпись ProLogic II что логично, значит сигнал всегда есть. Пока никаких тормозов не заметил, система и комп работают как и раньше
Алексей, вы используете стандартный режим, или какой-то другой настроили? Будет полезно указать для других обладателей такой же акустической системы.
Купил обычный китайский саундбар для компа. Подключил через Bluetooth. Щелчки через секунду после прекращения аудиопотока и щелчек при запуске с проглатыванием первых звуков. Перепробовал много чего, ничего не помогает. Попробовал вашу прогу.
Стандартный режим не помог - сначала вроде все ок, но через 30 - 40 секунд опять начинает щелкать. Параметр Zero тоже не сработал - то же самое поведение. В итоге помогли параметры синусоиды. Сначала ввёл из примера - SineF10A5. Всё ок, лишних звуков нет, но напрягло немного, что в настройках в уровне сигнала у колонки постоянно чуть заполнена полоса громкости - слишком явный видимо сигнал, система его видит.
В итоге, конечное решение было таким: SineF10A1SoundKeeper64. Вместо 5% поставил 1. Всё хорошо, звук не слышен, шкала громкости не заполняется. Вопрос только, не портит ли это раньше времени технику. С другой стороны, регулярные щелчки по любому портят её больше.
Большое спасибо автору!
Sound Keeper v1.3.4
Спасибо разработчику за программу. К сожалению в windows 11 не работает сон :( Очень жду решения проблемы. На зарубежных форумах вычитывал танцы с бубном в прописывании для винды команд на старт и килл программы и прочих манипуляций...слишком заморочено, но видимо придётся вникнуть. https://www.avsforum.com/threads/fixing-the-audio-delay-silent-stream-bug-on-win-11-intel-12th-gen.3248845/
Проще просто систему вручную отправлять в сон когда вам нужно ;)