Энтузиаст превратил вибромоторы Steam Controller в стереодинамики с помощью самодельного HID-инструмента
Второе поколение Steam Controller от Valve завоевало популярность в сообществе благодаря открытому подходу компании к своему железу. Моддеры уже использовали внутренние вибромоторы для того, чтобы двигать контроллер по столу и заряжать его автоматически, а другие собирали собственные открытые беспроводные адаптеры.
Теперь новый проект от Pixel1011 под названием Steam Haptics Player способен превратить эти моторы в стереодинамик, воспроизводящий музыку как по проводу, так и без него.
Стоит отметить, что у Steam Controller нет динамика. Под каждым тачпадом расположены два линейных актуатора, которые вибрируют для тактильной отдачи. Предыдущие проекты задействовали эти компоненты, чтобы заставить контроллер вибрировать определённым образом.
Так как вибрации лежат в основе звука, сама 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 Controller второго поколения практически с любым аудиофайлом в любом формате. Достаточно скачать архив из репозитория на GitHub, установить FFmpeg для перекодирования, если его ещё нет, и запустить программу через окно PowerShell в исходной директории.
Подробные шаги приведены на странице GitHub, однако неизвестно, как это влияет на время работы аккумулятора контроллера. Не стоит запускать на этих вибромоторах весь свой плейлист из Spotify.
- Valve не ожидала, что Steam Controller раскупят так быстро – уже готовит новую партию
- Steam Controller раскупили за полчаса, а в России продают втрое дороже рекомендуемой цены
- Valve признала, что Steam Controller за $99 стоит дороже изначальных планов – релиз 4 мая