Tom 7 Entertainment System Hero (show and demo reel)
(16 Apr 2009 at 20:14)
Hey, okay. Finally I have the videos ready to reveal secret project 7H, which is called Tom 7 Entertainment System Hero.
This is part video game and part performance art piece. The video game is essentially an implementation of Guitar Hero, where the songs are Tom 7 Entertainment System tunes. Some of these are ridiculously intricate and most have weird time signatures, which makes for advanced play. It supports keyboard on Mac, Windows, and linux or real USB guitar controllers (like the XBox 360 ones) on Mac and Windows. That includes accelerometers and whammy bar. The best introduction is to watch the demo reel:
This video has a bunch of clips in it, mostly from the Show at Belvedere's. You'll see a bunch of things. One is that I actually mess up a lot when playing. I'm better than this but two things contributed to my mistakes: (1) I was kinda drunk since the show started like 3.5 hours late and I got free beer for being a "musician" and (2) in the last week before the show I was sprinting to get all the software and hardware working, so I actually didn't practice hardly any of these songs more than the one time it took me to decide to put them in the setlist. Once it's available publicly I will challenge you to high-score battle to prove it. Hardware you ask? I didn't build the guitar or drums of course, but I did build the Laser Suspension Womb, which to be more pithy I sometimes call my "USB laser hat." It's a hardhat with a bunch of very bright LEDs and actual laser diodes embedded in it, powered by 1.5A, worn on the head, and connected to the computer via USB implemented on a custom circuit board with a PIC microcontroller. The in-game music and events ("drums were kidnapped!") trigger the lights and lasers to play along. I have a clever hack so that it doesn't need special drivers on any platform, though that's not helping penetration much because there's only one of them. This was my first real hardware project in my adult life, but now that I know how to do it I hope to do more (especially input devices, i.e., "instruments"). It's much better in 2009 than I recall from sticking paperclips and resistors in the parallel port in 1993.
Rock Band drums are supported too. Unlike the guitar, which has a goal pattern for you to match, these are totally freeform. Commodore 64 samples are played in response to drumhits. I wish the controller supported some kind of velocity sensitivity, because that is kind of important for drum expressiveness, but too bad so sad.
Techno details: The implementation is almost all in Standard ML using SDL, except for the low-level sound synthesis thread and the interface to the USB laser hat. That stuff's in C. It's easy to mix them. The code has some shortcuts in it for sure and deserves to be cleaned up (lots of them introduced in that last week sprint) but it also has some really nice parts, like the algorithm that matches your input to the score. The matching is ambiguous, so there's an on-line dynamic programming algorithm to be maximally generous to your playing. (I don't think Guitar Hero II had this maximally generous algorithm, which was one of the reasons I started working it out like a year and a half ago, but I do think that GH III and on do it right.) The finger patterns you're supposed to match with the guitar, which I call the "score", is generated automatically from MIDI files. To turn a T7ES MIDI file into a T7ES Hero game file, I have to assign instruments to each of the tracks, and then pick which tracks or track parts are supposed to be played on the guitar. The rest is automatic, save some tuning parameters. "genscore" has a model for how closely a candidate score matches the original MIDI (for example, if consecutive MIDI notes are rising in pitch, then it's better for the fingers to also be rising on the fretboard) and then it solves for the optimal assignment, measure-by-measure. I thought that I would need to modify the score after this to get good quality, but it actually works amazingly well. Some of the stuff it comes up with is super fun, like I would assume was created by a human with a good sense of fun. No. Only cyber-brain.
Here's the last two songs of the regular set in full. In this you see that you can actually play drums and guitar at the same time if you're good enough (I am not). 2 player mode? Maybe soon:
I don't know if I'll ever get the opportunity to perform this again (befriend T7ES Band Page on Facebook for guaranteed notification), but maybe. Either way, I'm looking forward to sharing the software with you guys, which I will do as soon as I finish the auto-update and high score table, so that we can compete with each other and I can release song packs.
SIGBOVIK 2009 has come and gone, and was a great success. This is a real simulated conference that we've been holding at CMU for the past few years. It's hard to really describe the vibe, but it's a bunch of academics getting together to make fun of the academic conference and publication system by putting loads of work into making very sophisticated and polished papers and presentations about nonsense ideas, or to put together disturbingly real implementations of things that pretty much should not exist, just for fun. This year was great, I think better than last year's. My contributions were as follows:
(2) The "LFMan" game and associated ephemera. If you have never seen the old TV Show "Square One" then you should watch this video of Mathman to understand the referent. It is a paper and talk and sort of an actual game: LFMan. (Use the arrow keys and '1' or '2' to select between SERVER OK and ABORT). The talk and demo went well even though I think there were a lot of people that are too young to have seen Square One.
The award is itself an unplayable Arkanoid clone. This was playing on the screen during the awards presentation, and had just one dot left (you'll see it takes like 10 minutes for it to get that last one) for a long time, with people continuously going "awwwww" when the ball just barely missed the last dot. For the "people's choice award" we used the Clap-O-Meter to determine the favorite paper from a short list, but while we were using applause to determine that, the final dot was struck in the Arkanoid award, which was met with the clearly most enthusiastic cheering of the Clap-O-Meter phase. So the People's Choice award ended up being given for my own Award drawing, which I think we are pretty happy about the way that turned out.
If you like this kind of thing, do check out the full proceedings. There's lots of good stuff in there. Long live SIGBOVIK!
Spoiler alert! This emacs mode contains spoilers for the TV show Lost (Season 2). (I always wanted to say that, heh heh.) It will also make no sense to anyone who hasn't seen the show or used emacs.
Now that Lost Season 4 is over, I know you need something to tide you over for 9 months or whatever until it comes back. Therefore please enjoy this emacs mode simulating the Swan station computer from Lost. The modeline countdown timer will follow you in every buffer, ticking down the seconds.
When reaching the 4 minute mark, you can use the Swan computer and do what you gotta do:
If you don't do what you gotta do, then you might get some System Failure:
System Failure used to kill emacs without saving your buffers, but I decided this was a bit too cruel. Now you can live with System Failure indefinitely, meaning that you can safely run lost-mode as part of your regular day-to-day emacs use. If you have emacs I recommend trying it yourself so you can see the animations (particularly the timer reset animation). Put
Well, the faux/real SIGBOVIK conference on April 1 was a staggering success. Basically, Harry Q. Bovik is a fake graduate student that the Computer Science Department uses for various purposes and in-jokes. His 64th birthday was this Sunday so we had a conference filled with joke papers and presentations in his honor.
The website has a full draft proceedings, and I think soon you'll be able to get a bound printed copy to enhance your office's gravitas or to place with randomly generated call numbers into your university's engineering and science library.
If you hate reading you can watch the totally pre-recorded version of "Generalized Super Mario Bros. is NP-Complete" (make sure your sound is on, and wait for the whole thing to load before starting it) (warning: this is very immature) or look at the talk for Wikiplia (but this mostly consists of words). Both need the newest Flash player. Since I really implemented the latter (I think the only SIGBOVIK paper that comes even close to being real) you could also just use it, at least until I eventually shut it down for taking up too much of my office machine's resources.
Suddenly, impulse strikes in the computer science lounge -- people want to make games in SML! Here's a totally ridiculous screenshot of a short project to make Sokoban using xlib. We've got some nicer stuff coming, I promise... ;)
NEW: Classic Video Game Characters Wuss Scale
(30 Dec 2001 at 18:29)
I have been working on snoot.org a lot this break. Today I have created a new wuss scale (where various contestants do battle to rank them based on their fighting prowess, sort of like a text-based Quake 3 Arena), for Classic Video Game Characters. Who would win in a fight, the Fat Guy from Ice Hockey or the L-shape from Tetris?
I finally put up the code I wrote a very long time to generate random text from a grammar description. This is used for the news flashes on UNTITLEDGIF.ORG and used to make haikus on snoot. You can download this sloppy, undocumented C++ program (and example data) here. (Forgive me, I was young!)