Roboron3042 / SteamControllerSinger

This project is a fork of Pila's Steam Controller Singer, including a dirty fix to make the Steam Controller sing again.
BSD 3-Clause "New" or "Revised" License
32 stars 7 forks source link

Steam Deck range is repeats notes over D3 and clicks at a low frequency when the note is "off" #6

Open thatonedoseiai opened 2 years ago

thatonedoseiai commented 2 years ago

This seems to be an all-around issue with SteamControllerSinger and another fork (that doesn't allow submitting issues) that made SteamControllerSinger compatible with the Steam Deck. When a note gets to D#3, it will repeat D3, and this continues in bigger and bigger steps, until the pitch of the notes that notes are repeated decline at C7. I'm not sure what exactly is causing this, but saying that the Steam Deck seems to have some way of controlling strength of vibrations while a note is playing, like in the default boot sequence, there is likely some new way to access the Steam Deck's haptics. The clicking when the note is "off" could likely be another symptom of the Steam Deck having a slight difference in how it's controlled. I think that it could possibly have a legacy mode meant for Steam Controller compatibility, but could be not implemented correctly. I don't know a lot about how the controller handles the output of the program, but I have read through the code and that's my best guess to what it is.

Roboron3042 commented 1 year ago

Pinging @coolbho3k since he implemented support for Steam Deck and I don't own one.

CrazyCritic89 commented 1 year ago

I think the last part is correct. The Steam Deck and Steam Controller seem to have slightly different haptic motors and I imagine different data would need to be sent.

Also, were you talking about my fork, SteamHapticsSinger? I'm new to GitHub so didn't think much about adding an issues tab, my bad.

CrazyCritic89 commented 1 year ago

Also: on SteamOS, it seems the timing is a little worse, while on Windows, it seems it was better. I have a Still Alive MIDI I made and it has little clicks for the drums, which for some reason get drowned out on SteamOS but are still audible on Windows. I don't think this is just because of the reclaiming.

thatonedoseiai commented 1 year ago

Sorry for responding so late, but yes, I was talking about your fork. I tried again with v1.8, and it does the same stuff. Oddly though, I can set my reclaim time to really long periods of time (longest I've tested is 280 seconds) and both on SteamOS and Ubuntu 20.04, there's no issue whatsoever. No dropouts, no lag, just absolutely perfect SteamControllerSinger, when I'm using my Steam Controller. The pitch and clicking problem still persists on the Steam Deck, though.

CrazyCritic89 commented 6 months ago

So a while ago, I figured out the cause of this issue. It has to deal with the USB packets being sent to the controller. The Steam Deck introduced its own "command" for playing notes. 0xEA instead of 0x8F. The issues with the notes are just caused by the old command not being implemented fully, and only there for legacy reasons.

If you're wondering where I got this from, it's from the validation tools which can be found here.

My fork does implement this as a separate function, but I have no plants to commit to this original project as I'm working on mine as more of a successor.