Introduction
If you are like me, you have a treadmill that sits in your garage collecting dust while you sit in front of your computer all day. Well, it's time to drag that 350-pound waste of metal within reach of your computer so you can wire-up some bleeding-edge technology to it! Yes, we are going to control your treadmill with Silverlight. Off to the side, you will see a picture of my treadmill (at least it looked that way when I bought it). This is the IMAGE 15.0Q Treadmill. It's your average treadmill with speed and incline settings and a magnetic safety button to help prevent you from accidentally doing stuff like this.

Controlling your Treadmill
Some treadmills, like this one, have some type of interface that allow computers to interact with them. Usually this is done so the vendor can sell you on some additional fitness software or a subscription to some online service. But why do that when you can write your own?
I'm sure the higher-end treadmill models have better interfaces, but this one in particular uses a standard audio jack which uses encoded sounds to control the various speed and incline settings found on the treadmill. For example, playing the sound encoded for speed-3, incline-7 will set the treadmill accordingly. As you can imagine there are quite a few of these sounds. I was able to acquire these sounds after a little prying into the JavaScript for the treadmill application provided by the vendor.
The User Interface
After acquiring the sounds, we just need to come up with a cool interface that can control how the sounds are played. Using Blend, I was able to come up with a decent looking interface without too much effort:
The speed and incline can be controlled through the plus and minus buttons. As you press the speed buttons, the visualizations for speed and incline adjust accordingly.
Workout Graph
There is also a program feature which loads a workout in XML format. The graph at the bottom is a visualization of your workout. The green bars represent the speed and the gray bars represent the incline. The width of each bar is determined as a percentage of time for the total workout. In other words, the wider the bar, the longer you will be running at that speed and incline. It's worth noting that the workout in the graph is not a very realistic workout, it was just done that way to demonstrate the functionality. If you look closely at the left side of the graph, you will see a yellow rectangle around one of the bars. This rectangle indicates your current workout location.
Video Demonstration
I haven't made the code available yet, but I plan to very soon. In the meantime, you can check out a short video of the application in action:
User Scenarios
Obviously, this isn't very useful unless you could control the application from the treadmill. However, you could probably run it well from a tablet PC. One exciting possibility for this will be when Silverlight for Windows Mobile becomes available. You could simply run the application from a mobile device. That will most certainly be a project for later!
Coming Soon
This project is mainly a proof-of-concept to satisfy my curiosity. In my next post, I'll go into a little more detail about how the application works. I have a few more features I would like to add before making the code available. As always, I'm interested in your feedback!