mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-31 12:35:51 +00:00
A title can open AudioOut2 ports of type 0x3 (the controller's speaker) and 0x6 (its two voice-coil actuators) next to its bed and object ports. Both were folded into the TV mix, so the haptics came out of the PC speakers as low thumps and the controller got nothing. A USB DualSense is also a 4-channel 48 kHz sound card: channels 1-2 feed the speaker and headset jack, channels 3-4 the left and right actuators. When SDL lists such a card, a context with these ports opens it and queues a grain on it with every push: the speaker port on channels 1-2 (a mono port duplicated) and the vibration port's left and right channels on 3-4, at the port volumes and clamped. Both ports then leave the main mix. The card's queue gets the main queue's silence cushion when it runs dry and drops grains that run more than two grains beyond the main queue, so the controller keeps pace with the TV. An unplugged card is released (its ports return to the main mix) and looked for again every 2 s. Without a card nothing changes, and other port types and channel counts keep their routing. SDL2's PulseAudio backend labels a 4-channel stream FL FR FC LFE instead of quad, and the sound server then folds channels 3-4 into the speaker. Under that backend the card is opened as 5.1 with FC and LFE silent and the actuators on the back pair, which lands on the card's RL/RR.