Steam Controller

Steam Controller

View Stats:
Pila Dec 16, 2015 @ 2:55pm
Steam Controller Singer : Playing music with the Steam Controller
Hello !
I have been spending some time during theses days trying to understand how the communication between Steam and the Steam Controller works.
I was especially interested in driving the haptic actuators, so I could see their full potential.
I finally managed to get full control over the actuators, so I wrote a small piece of software to have fun with them, check this out :

https://www.youtube.com/watch?v=PUVga1mYhLY

https://www.youtube.com/watch?v=rBgMV1fqaKg

https://www.youtube.com/watch?v=Bwq2btaPio0

https://www.youtube.com/watch?v=9dIwXf30ZsU

You can try this by yourself, I made an archive with my software compiled for windows : https://sourceforge.net/projects/steam-controller-singer

You can check Peppy's quick start guide to get familiar with the software :
http://steamcommunity.com/sharedfiles/filedetails/?id=636019968

And here you can find all the source code : https://gitlab.com/Pilatomic/SteamControllerSinger

My software now supports wired & wireless mode, playback on both haptics and MIDI files as input
It will play MIDI channel 0 on the right haptic, and channel 1 on the left haptic
There should be only one active note per channel at the same time

You can use MidiEditor to edit your midi files

To start, simply drop a MIDI file on the Steam Controller Singer .exe
Last edited by Pila; Apr 3, 2016 @ 5:01am
< >
Showing 1-15 of 410 comments
roothorick Dec 16, 2015 @ 3:09pm 
I suppose that it only makes sense that the LRA, which traces its lineage back to literal speakers, could do something like this. Pretty neat.

The SC doesn't seem to have an actual speaker of any kind; the startup/shutdown/identify sounds appear to come from simply running the right touchpad actuator at high frequencies. You can actually feel the vibration in the pad.

Does your tool interfere with Steam itself? Have you noticed any issues with "bottoming out" at lower frequencies? I've got some ideas...
digital_trucker Dec 16, 2015 @ 4:24pm 
Methinks we have a long, long way to go to see the full potential of this thing. Just imagine what game devs can come up with when they start designing games from the ground up to take advantage of it.
Pila Dec 17, 2015 @ 12:03am 
Originally posted by roothorick:

The SC doesn't seem to have an actual speaker of any kind; the startup/shutdown/identify sounds appear to come from simply running the right touchpad actuator at high frequencies. You can actually feel the vibration in the pad.

Yep, that's how I got the idea to do this

Originally posted by roothorick:
Does your tool interfere with Steam itself? Have you noticed any issues with "bottoming out" at lower frequencies? I've got some ideas...

My tool "talks" directly with the steam controller, it would even work on a computer without steam.
What do you mean by "bottoming out" ?
[oRLY]Alia5💩 Dec 17, 2015 @ 6:00pm 
Dude that's awesome!
ZioYuri78 Dec 18, 2015 @ 2:31am 
Love it!

Hope we can share sounds in some future updates.
[oRLY]Alia5💩 Dec 18, 2015 @ 3:32am 
Official? I doubt it... since certain sounds cause problems with the controller... and inofficially it always will remain some kind of gimmick i'm afraid
Pila Dec 18, 2015 @ 11:03am 
I updated the video, this one has better quality, horizontal format and was shot with a steady camera
Patrick Jr. Dec 18, 2015 @ 11:37am 
Amazing work
roothorick Dec 18, 2015 @ 4:15pm 
Originally posted by bli Pila:
My tool "talks" directly with the steam controller, it would even work on a computer without steam.
What do you mean by "bottoming out" ?

I meant more along the lines of, will it interfere with Steam configuring controller mapping and sending inputs to the game while you're controlling the actuators?

Bottoming out, a more accurate term, I suppose, would come from the audio world: over-excursion. In layman's terms: a traditional design speaker is designed to only move a certain distance back and forth, but there's nothing preventing you from feeding it a signal that pushes the speaker past that amount of travel. This puts a great deal of stress on multiple components in the speaker; typically you melt the voice coil first. As volume increases, this is more likely to happen, but also as the lowest harmonic of the sound wave decreases, it becomes more likely to happen. So speakers are limited in how low of a tone they can produce without damage.

My question therefore is whether you saw signs of a similar phenomena. LRAs' theory of operation is nearly identical to speakers, just substituting a weight in place of the cone, so the lower the frequency of the vibration you want to achieve, the further the weight must travel to achieve it. Obviously there must be a limit to how far it can travel, and I'm curious how far we can go before hitting that wall.

Though, it occurs to me now, LRAs may have bumpers on each end, intended for the weight to hit when producing strong vibrations, transmitting the movement via physical contact instead of electromagnetic force. It'd definitely be a different feel (and louder!) when it hits that transition point, making the actuators more flexible still.
Pila Dec 19, 2015 @ 1:13am 
I did not try, but yeah, it might interfere, I would advise you not to try, for example, changing controller mapping in Big Picture while my tool is running. But to ba honest, my knowledge of how the Steam Controller works is too limited to be able to answer precisely this point.

Conerning the "bottoming out", now I see what you mean, I didn't know the engligh word for this. Not sure how LRA are mades, if there are bumpers, of if the drive signal was simply calculated to avoid this, but it does not seem to happen.
digital_trucker Dec 19, 2015 @ 4:10am 
We always called 'em 'blown speakers'.
ReeC Dec 20, 2015 @ 12:56pm 
At first I had some issue running your code under linux (i'm the guy who commented your video on youtube) but then it was fine.

Today I managed to play two different tracks on the two pads using threads
http://pastebin.com/nS2sdBnB
Pila Dec 20, 2015 @ 1:11pm 
I updated my code with support for the wireless dongle, so no more need to connect the steam controller through microUSB.

edit : another update to fix minor things

Just looked at your code. Good job ! You don't run into synchronisation problem between the 2 tracks ?
Last edited by Pila; Dec 20, 2015 @ 1:23pm
ReeC Dec 20, 2015 @ 1:33pm 
nope, it works pretty well. C time resolution is way finer than triplets at 120bpm! ... maybe some delay may cumulate for really long tracks
Last edited by ReeC; Dec 20, 2015 @ 1:33pm
KittyPause Dec 20, 2015 @ 1:37pm 
Originally posted by bli Pila:
I updated my code with support for the wireless dongle, so no more need to connect the steam controller through microUSB.

edit : another update to fix minor things

Just looked at your code. Good job ! You don't run into synchronisation problem between the 2 tracks ?
Question, how does this thing open?

So I got this thing working, then realized you just linked what you made, not how to reproduce it with different notes.

So close yet so far; anyone mind telling me how we're compiling, how I have to go about this? .3.
Last edited by KittyPause; Dec 20, 2015 @ 2:15pm
< >
Showing 1-15 of 410 comments
Per page: 15 30 50