Программист, реверс-инженер
0,1
рейтинг
7 января 2015 в 16:09

Sound Keeper — предотвращает «засыпание» цифровых аудио-выходов SPDIF или HDMI

Если вы когда-нибудь пользовались цифровыми аудио-выходами (SPDIF или HDMI), наверняка вы сталкивались с проблемой, когда во время тишины акустика «засыпала», после чего начало следующего звука обрезалось из-за того, что акустике нужно время на «пробуждение» и инициализацию после сна. Это сильно раздражает. Если у вас никогда не было такой проблемы — значит вам повезло с драйвером. Если же проблема имеет место — она решается непрерывным воспроизведением абсолютной тишины. Костыль, но это единственный доступный способ заставить драйвер не выключать цифровой аудио-выход.

Ранее для этих целей существовала одна программа с названием SPDIF Keep Alive. Но на мой взгляд она слишком тяжёлая для решения такой простой задачи: требует наличия фреймворка .NET, расходует слишком много памяти и процессорного времени. Поэтому я написал на C++ новую программу для решения проблемы.

Представляю Sound Keeper v1.0


Программа использует современную звуковую подсистему WASAPI, поэтому будет работать только на Windows 7 и новее. Sound Keeper внешне никак себя не проявляет и работает полностью автоматически: находит все цифровые выходы (SPDIF или HDMI) и предотвращает их засыпание. Если во время работы программы появится новый цифровой выход (например, если вы подключили компьютер по HDMI к телевизору) — это будет корректно обработано, перезапуск программы не требуется. Для отключения Sound Keeper вы должны либо выключить звук в микшере для этой программы (после чего Sound Keeper автоматически закроется), либо просто убить процесс soundkeeper.exe. Для автоматической загрузки программы вместе с системой просто скопируйте исполняемый файл soundkeeper.exe в каталог Автозагрузка в меню Пуск. В будущих версиях, возможно, будет добавлена иконка в область уведомлений с возможностью ручного управления и функцией закрытия приложения из простого меню.

Скачать: SoundKeeper-v1.0.zip (11КБ).

Sound Keeper vs. SPDIF Keep Alive

Sound Keeper v1.0 SPDIF Keep Alive v1.2
Полный автомат: Да Нет
Поддержка нескольких выходов: Да Нет
Графический интерфейс: Нет Есть
Требует .NET: Нет Требует
Объём EXE-файла: 17КБ 668КБ
Расход CPU (на Intel Core i5 4460): 0.004% 0.06%
Расход RAM (Private Working Set): 1636КБ 13704КБ

Спасибо за внимание


Надеюсь, эта программа пригодится кому-то ещё. Буду рад вашим отзывам.
Евгений Врублевский @VEG
карма
292,0
рейтинг 0,1
Программист, реверс-инженер
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (25)

  • 0
    Эхъ, ещё бы и для аналоговых радионаушников кто-нибудь такое написал… Увидел сабж, обрадовался, содержимое радость поубавило ;(
    • 0
      Программа намеренно игнорирует аналоговые выходы, поскольку я никогда не слышал, что с ними могут быть какие-то проблемы. Расскажите подробнее о проблеме. Если вы проигрываете тишину в плеере — наушники не засыпают? Каким образом наушники по аналогу определяют, что звука нет? Смотрят по какому-то пороговому значению?
      • 0
        тишина разумеется не помогает
        видимо да, пороговое значение не достигнуто за минуту или две — засыпают. в играх бесит нереально.

        я вижу решение в программе, которая мониторит наличие звука сама, и если его нет, раз в минуту пикает тихонько =)
        • +2
          Попробуйте поиграться с Generatosaur, будут ли ваши наушники засыпать при очень тихом звуке низкой или высокой частоты.
          • +1
            20 кгц на минимальной громкости оказались достаточным, попробую так, спасибо )
            • +2
              В принципе добавить поддержку вывода какого-то сигнала вместо тишины на аналоговые выходы несложно. Но автоматически это делать точно нельзя — мало кто из любителей музыки оценит пускай и неслышимый, но шум. Может быть в будущей версии сделаю опциональную возможность подачи какого-то сигнала на аналоговые выходы.
      • +1
        Про наушники ничего не скажу, но кроме них есть еще и колонки, который засыпают через некоторое время (10-15 мин.). Как говорит инструкция к ним — для соответствия директиве/рекомендации ЕС.
        • +1
          Очень бесит, когда такие вещи делают неотключаемыми и ненастраиваемыми…
  • 0
    Помню давно была такая проблема с обыкновенным старым телевизором «Horizont», постоянно во время пауз в фильме\сериале чувствовался резкий переход, думал что я один это замечаю.

    Определённо плюс программе, жаль не могу их ставить. Оптимизация и «рефакторинг» всегда хорошо.
  • 0
    Никогда не замечал таких шумов на настольном компьютере, но недавно услышал их на ноутбуке, причём совпало это с покупкой наушников. Ваша статья оказалась крайне своевременной и уберегла меня от прогулки до магазина.
    Под Linux аналог вашей программы не подскажете? То ли я ищу не по тем словам, то ли их нет.
    Спасибо за статью и программу.
    • 0
      Судя по всему, вы что-то не так поняли. Эта программа предотвращает отключение цифровых аудио-выходов при отсутствии звука. Шумы в таком случае могут появляться разве что при инициализации акустики или её засыпании. Если у вас используется аналоговый выход или присутствуют шумы во время простого воспроизведения при использовании цифрового выхода — у вас какая-то другая проблема.
    • +1
      Для Pulseaudio нужно выключить модуль module-suspend-on-idle в настройках или командой:
      pactl unload-module module-suspend-on-idle
      
      • 0
        Спасибо, помогло.
  • 0
    Действительно, чтение по диагонали — зло, извините за невнимательность. Проблема действительно схожая, но не та.
  • 0
    Подобная же проблема есть с блютусными наушниками. Я обычно, через речевые движки, слушаю текст и между двумя сформированными фреймами наушники успевают «засыпать» — это выражается в виде слабого щелчка, но раздражает сильно. Нашел решение в виде запуска KMplayer с любым файлом звуковым или видео. Даже не требуется делать воспроизведение, достаточно поставить на паузу.
    • 0
      Интересно, а каким типом устройства представляются Bluetooth-наушники. Там ведь наверняка цифровой выход. Попробуйте, пожалуйста, Sound Keeper — активируется ли он на аудио-выходе Bluetooth-наушников. Если нет, надо будет проверить, какой тип аудио-выхода сообщает WASAPI программе.
  • +2
    Несколько неожиданно было в архиве с программой не обнаружить её исходный код.
    • +1
      Кроме того, при запуске программы из архива, антивирус ругнулся довольно неприятными словами.
      Хотя обычно такого не бывает.
      Скрины
      image image

      Для себя проблему засыпания spdif-устройств решил с помощью Virtual Audio Cable.
      • 0
        Что интересно, на virustotal.com у Bitdefender тишина.

        Что уж поделаешь, что некоторые антивирусные продукты считают подозрительными почти любой исполняемый файл маленького объёма. Во времена, когда я пользовался Avira Antivir, натерпелся регулярных ошибочных срабатываний. Например, она могла легко отреагировать на нетипичный набор секций или нестандартные атрибуты у них. Анализом кода, похоже, антивирус вообще не занимался в таких случаях :) Сейчас пользуюсь стандартным антивирусом от Microsoft — судя по всему, оно более-менее адекватное. Bitdefender может быть не понравилась иконка изображениями в PNG :)
        • 0
          Ошибочных срабатываний обычно не бывало.
          Однако, рекомендую, что-то предпринять, дабы исключить подобные вещи в дальнейшем :)
          А за про программку спасибо, людям пригодится.
      • +1
        Видел как-то раз как Аваст при приближении конца лицензии начинал внезапно «находить» много вирусов, показывая свою бесполезность, естественно, вирусов там не было.
    • 0
      Я потому и выложил на GeekTimes, поскольку без исходного кода и подробного описания «как это сделано». Но если интересно, то как появится свободное время, постараюсь залить исходный код на bitbucket.org.
  • 0
    Symantec EP с упорным постоянством прибивает exe. Можно как-то пофиксить?
    • 0
      Возможно, поможет добавление в исключения.
  • 0
    К сожалению не решает другую важную проблему HDMI — выключение звука при включенном энергосбережение и гашении монитора.
    Из-за этого для приходится к ресиверу тянуть и SPDIF просто для звука и многоканальный HDMI для фильмов, и переключаться между ними.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.