New Projects

Fresh from the Labs

John Knight

Issue #202, February 2011

downtimed—System Downtime Monitor (dist.epipe.com/downtimed)

The following statement appears at the top of the downtimed Web site: “Why is it so easy to find out the server uptime, but so difficult to figure out the downtime?” And, it all seems so obvious in hindsight. According to the Web site:

downtimed is a program for monitoring operating system downtime, uptime, shutdowns and crashes and for keeping record of such events.

...downtimes is a command-line tool, which can be used to inspect previous downtime records recorded in the downtime database file.

A program that should have existed years ago, downtimed is a very simple tool for recording computer downtimes.

Installation

Source tarballs in both tar.gz and tar.xz format are available at the Web site. As far as library requirements go, I didn't run into any hiccups during installation, and I couldn't find anything about needed libraries, so the requirements seemed very minimalist. As for the actual installation, at least the first part is an easy process.

Grab the latest tarball from the Web site, extract it, and open a terminal in the folder. From there, it's the usual:

$ ./configure
$ make

If your distro uses sudo:

$ sudo make install

If your distro uses root:

$ su
# make install

From here, things aren't so easy, and you should consult the documentation for further instructions, so I'll leave the next steps to you at this stage. If you're lucky, someone will have made a binary for your system, and in the case of Ubuntu, I found a custom package at the Ubuntu Personal Package Archives at launchpad.net.

Assuming you were able to finish installing downtimed, you'll obviously need to reset to complete the process.

Usage

Actually using downtimed is probably the easiest part, and it's possibly the easiest program I've ever reviewed.

Open a terminal and enter:

$ downtimes 

If everything went properly during the installation, you should have a record of your first shutdown, with a likely downtime of something under a minute on modern distributions. downtimed is clever enough to distinguish between a crash and a proper shutdown, which I tested (after saving all of my work) by pressing the computer's reset switch. The following night we had a power blackout of just a few seconds, and that also registered as a crash. If you look at the screenshot included, you can see that clean shutdowns are annotated to the left with a “down”, while others are marked with a “crash”.

That's pretty much all there is to it really. Of course, the program can be extended in certain ways, such as specifying another database file instead of the default and viewing uptimes, but I'll let you explore those for yourself in the program's man pages.

In the end, this is one of those programs you can't help feel should have existed already, but has come along only recently. I love the program's simplicity, which in particular makes me think this will become a mainstream tool. Distro makers take note: this should be in your deployed systems by default, especially on server-style distributions.

Performous (performous.org)

Describing this game is difficult. Under the heading of “What is it?”, the Web site gives this simple statement: “Performous is a free cross-platform music and rhythm game.” But, that doesn't even begin to describe this project.

After several days, all I can come up with is that Performous is a cross between Karaoke, Guitar Hero, Rock Band, Frets On Fire, SingStar, StepMania and Dance Dance Revolution.

Here's the feature list from the Web site, which should sum things up nicely:

  • Should work on almost any platform.

  • Very accurate singing pitch detection. Noisy environments are not an issue. Multiple simultaneous tones can be detected and separated properly.

  • Intelligent gameplay with guitar and bass. The engine determines what was intended rather than simply picking the nearest chord. Hammer-ons and pull-offs are undone when the player accidentally does them and then picks the note in the regular way.

  • Drums.

  • Dance pads.

  • Device autodetection: Guitar Hero and Rock Band instruments, generic dance pads, SingStar and Rock Band microphones, and fallback to other audio devices when no SS/RB mics are detected.

  • Top-notch visuals: fully OpenGL-based rendering, music videos as backgrounds, smooth UI animations and other eye candy.

  • Solid C++ engine: performs well on slower machines too. Rapid but still safe development, thanks to advanced C++ features. Plenty of threaded stuff like background loading of songs and videos.

  • Free software, licensed under GNU GPL version 2 or later.

In one of the most bizarre experiences of my life, here's a DDR-style dance track to German metallers Rammstein! Only with OSS.

The open nature of Performous means alternative bands are as popular as the mainstream. Here I'm drumming to Finnish band Nightwish.

From the promo shots: karaoke, guitar and drums all at once!

Installation

If you're chasing a binary package, there are all sorts available for Ubuntu (I recommend the cutting-edge packages from PPA at Launchpad), as well as Debian, openSUSE, Arch Linux and Mandriva. If you can get a package, do so. A source tarball is available, but it's a long process of chasing down dependencies. Nevertheless, in the interest of distro-neutrality, I'm running with the source as usual. But strap yourself in: we're in for a long one!

Luckily for me, the Performous documentation is quite thorough. As for library requirements, the docs say you need the following:

  • OpenGL: graphics.

  • Boost: threads, parsers/conversions, pointer containers.

  • SDL: window management and input.

  • FFmpeg (avcodec, avformat and swscale): A/V decoding.

  • Cairo >= 1.2: scalable graphical support.

  • librsvg: SVG rendering (themes).

  • libxml++: XML parser, used for themes, etc.

  • PortAudio v19: audio capture and playback.

  • Gettext (optional): for internationalization.

  • PortMidi (optional): for MIDI drum support.

  • OpenCV (optional): for Webcam support.

However, I needed to install a lot of development packages, as well as some dependencies I didn't see listed before I could continue. As for my own system (Kubuntu), I had to install the following: libboost-all-dev, libglew1.5-dev, libavutil-dev, libavcodec-dev, libavformat-dev, libswscale-dev and libportaudio-dev.

Once you have the needed dependencies, download the latest tarball, extract it, and open a terminal in the folder. Now, enter the following commands:

$ mkdir build
$ cd build
$ cmake ../
$ make

If your distro uses sudo:

$ sudo make install

If your distro uses root:

$ su
# make install

Whether you're running from source or not, I highly recommend installing Frets On Fire's song files, as this gives the game a selection of songs to choose from immediately. I also found an Ultrastar song package at the PPA site, and if you can find similar packages, I recommend installing them.

To run the game, enter:

$ performous

Usage

As the feature list suggests, the game should autodetect any of the devices from these popular rhythm/karaoke games. I don't have any of these devices, so I can't verify its efficacy, but perhaps a PlayStation-ist out there with all the equipment can tell me how it went.

If you're using the karaoke features, you'll want to test out your sound levels in the Practice section before moving on to the game itself. If you have only the basic Frets On Fire songs installed, for now you will have only guitar songs, so I'll cover those first.

The five frets you'll be using are controlled with the number keys 1–5, with either R-Shift or Enter as the picking button. However, given that you can use either button or both, I found that for super-fast sections it helps to thrash between both buttons with two fingers.

This may sound sacrilegious, but instead of picking up the keyboard, I found it easier to leave it in place on the desk, and just play it flat, like a piano. I know, I know, you're meant to pick it up to simulate a guitar or bass, but as someone who owns both a bass and a guitar, trust me, it doesn't feel anything like either (not even with a GH controller).

However, you'll soon want to move on to other songs with other instruments (you won't even be able to do karaoke with that selection), so I recommend having a look around on the community boards for Frets On Fire, SingStar and StepMania. The Performous documentation says it looks for songs in several directories, but I had limited success. In the end, I just copied my new songs into /usr/share/games/performous/songs, and they worked without a hitch.

If you want to play a drum track, for instance, you need a song that's had a drum track programmed with it. Assuming the song files are all where they should be, it'll appear in your song menu the next time you start Performous. If a song has multiple tracks and you want to play only the drums, when the song is loaded, press one of the drum pads/buttons to enable the drum mode (or a dance pad button for dance mode and so on). As for bass, because it uses the same buttons as guitar mode, you need to change from the default guitar mode to bass mode at the start of the song.

On Performous, I was able to play along to my favorite (and rarest) tracks, and from a drummer's perspective, the user-made tracks are actually a lot more realistic than the commercial ones.

Ultimately, Performous is both an ambitious and a pragmatic concept. People are playing the same selection of games anyway, so why not combine them? And, given that Performous can use the real controllers, it means I also can skip getting a PlayStation (I'd rather eat my own shins than be a console player). Yay for PCs!

John Knight is a 26-year-old, drumming- and climbing-obsessed maniac from the world's most isolated city—Perth, Western Australia. He can usually be found either buried in an Audacity screen or thrashing a kick-drum beyond recognition.