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


