Valve второй раз покорила сообщество своим открытым подходом к аппаратному обеспечению Steam Controller. Моддеры уже использовали тактильные моторы внутри контроллера, чтобы перемещать его по столу и заряжать автоматически, а другие создали собственные открытые “шайбы”. Теперь новый проект от Pixel1011, названный “Steam Haptics Player“, способен превратить эти моторы в стереодинамик, воспроизводящий музыку как по проводу, так и по беспроводной связи.
Для контекста: у Steam Controller нет динамика; под каждой сенсорной панелью находятся два линейных актуатора, которые вибрируют, обеспечивая тактильную обратную связь. Предыдущие проекты использовали эти компоненты, чтобы заставить контроллер вибрировать определенным образом. Поскольку вибрации являются основой звука, сама Valve встроила в контроллер секретную пасхалку, которая случайным образом воспроизводит крик Вильгельма при падении с определенной высоты.
Pixel1011 обнаружил, что тактильные моторы внутри можно адресовать с помощью низкоуровневых команд HID (Human Interface Device) через HIDAPI. Таким образом, Steam Haptics Player берет аудиофайл, понижает его частоту дискретизации через FFmpeg, разбивает на фрагменты PCM-потока и отправляет эти пакеты напрямую контроллеру, минуя высокоуровневое программное обеспечение, такое как Steam Input. Затем прошивка контроллера передает эти необработанные данные моторам, которые вибрируют, воспроизводя звук.
Из-за DIY-характера этого процесса пропускная способность является проблемой, особенно при беспроводном соединении, так как “шайба” не предназначена для передачи аудиоданных по радиосигналу. Это означает, что аудио приходится сжимать, и существует ограничение на общее качество, которое могут передать моторы: 8-бит 8 кГц (μ-law) через “шайбу” и 16-бит 8 кГц PCM по проводу.
Тем не менее, 16-битного аудио достаточно, чтобы получить удивительно громкий и сбалансированный результат, который может обмануть вас, будто звук исходит из динамика. В видео в начале Pixel1011 играет песню “Want You Gone” из титров Portal 2, и вы можете оценить качество сами. Здесь есть настоящие низкие частоты, которых вы никогда не ожидали бы от такой кустарной установки, даже если она стоит на полотенце на ровной поверхности, чтобы дать ей наилучший шанс.
Качество беспроводного аудио по сравнению с этим грубое: оно трещит, потрескивает и даже прерывается из-за ограничений пропускной способности. Pixel1011 использует здесь 8-битное μ-law компандирование, которое на самом деле обеспечивает динамический диапазон, аналогичный 14-битному аудио, сохраняя при этом размер байта 8-битного потока. Даже с таким сжатием “шайба” с трудом справляется, но сам факт, что это вообще возможно, все еще впечатляет, и, возможно, в будущем есть место для улучшений.
Вы можете попробовать Steam Haptics Player самостоятельно на своем Steam Controller второго поколения с практически любым аудиофайлом в любом формате. Просто скачайте архив из репозитория GitHub, установите FFmpeg (для транскодирования, если у вас его еще нет) и запустите программу через окно PowerShell в исходном каталоге. Подробные шаги приведены на связанной странице GitHub, но мы не знаем, как это влияет на время автономной работы контроллера. Просто не увлекайтесь своим плейлистом Spotify на этих тактильных моторах.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Hassam Nasir




