Archive for the ‘Media’ Category

Sonic 4: First Impression

Tuesday, October 12th, 2010

To say that I’ve been looking forward to this game has been an understatement. I’ve never taken to the 3D Sonic titles, and although I’ve flirted with trying the handheld games, they never quite clicked for me. So after all the talk about how this game is supposed to be the spiritual successor to Sonic 3 or Sonic & Knuckles, I was quite excited. I counted down the days, I got up bright and early today, and I waited until the afternoon to download it. I’m not sure when it finally was available, but I finally got it a little while ago. I had to sign up for a full PlayStation Network account just to buy the game, but that’s a tale for another day.

The graphics are amazing, eye-popping, and just what I’d expect. Part of the reason why I waited until today (and waited most of today as well, as it turned out) was to get the PlayStation 3 version. The sound interestingly is more of a throwback to the older games’ soundtracks. I like it. The Genesis Sonic the Hedgehog music is some of my video game music; probably because I would hear it for hours on end back when I was in grade school.

Unfortunately, the best graphics and sound can’t save a bad game. I’m not ready to declare Sonic 4 a bad game just yet, as I’ve only played through the first zone. But so far I haven’t liked what I’ve seen.

First, the play control is bad. This game is supposed to be a direct throwback to the older Genesis games. Too bad they didn’t spend enough time replicating the controls. I noticed this almost immediately as my mind and motor controls went into a ‘retro Sonic’ mode. But the behaviors of Sonic after each button press, which are ingrained into my gray matter, didn’t work as expected. The most jarring example is Sonic’s momentum. In earlier Genesis games, Sonic had momentum in the air if you run and jump off the right side of a cliff, then let go of the right D-pad button, the blue hedgehog would still continue to go to the right. Not so in this game. In fact, it’s quite unrealistic no matter what type of game it is. When you jump into the air and let go of the D-Pad, Sonic immediately stops moving horizontally. In previous games, you had to jump at a small platform, then press the D-pad in the opposite direction, to compensate for over-shooting. Not so in this game: just jump until you’re over the small platform, release the D-pad, and you fall onto. Whether or not this is better is irrelevent. It’s different. That’s what counts. From the very beginning, I had to re-train my brain. For a game that’s supposed to pick up right where the last Genesis title started, how could this have gotten by all the quality control?

The other major fault I’ve noticed with the game is a problem I’ve noticed with the other recent Sonic 2-D platformers. In Sonic the Hedgehog games, you’re supposed to go fast, right? That’s kind of the point of the whole thing. Unfortunately, in this game if you go fast the developers punish you. There are enemies and obstacles in the way that hurt you. Unless you know the layout of a level beforehand, you don’t dare go fast (unless you want to lose all your rings). A video game should not be about rote memorization. You should get fair warning before getting hurt; a clever player should be able to go pretty far before losing his rings. This has been true for the last few Sonic 2-D games (Sonic Rush comes to mind). Who is behind this? Why are they still allowed to make Sonic levels?

It could be that this is a fluke, since I’ve only played the first levels. There’s one more infuriating thing about the first zone, and that’s the little chameleons that pop out of the walls and shoot you. The problem is that you’re given zero time to react after one pops out. Every single one I came across zapped me. So maybe the first level was designed by a sadistic jerk, and they kicked him off the project before he could ruin any more levels.

I’ll play through the whole game before passing judgement, because I still hold a hope that this game will be just as good as the classic Sonic games. Please fulfill my hope, Sonic Team.

Coming Soon: New Album From The Suckers

Wednesday, July 28th, 2010

I’ve been working on this album for a long time (since my last year of school, if you can believe it). It started out with direct-input guitars but I decided I didn’t like the sound and re-recorded with real, live guitar running through an amp into a microphone — something I hadn’t done since Misanthropomorphic. I also went back and re-sequenced the drums because I didn’t like their sound. I had started on vocals in early summer of 2008 (before Carrie came back from Europe when I had the house all to myself), but stopped for a long time with only about a third of the songs complete. I finally got started with the vocal re-recording around late January (starting from scratch), right before we decided to move. So I got over half the vocals laid down in Montana, and have started work on the remainder. I also considered re-doing the bass lines with my new bass (as my old one had started developing tuning problems), but decided to keep those in the interest of ever finishing the record.

The Suckers are a pop-punk band. When I say pop-punk, I mean in the traditional sense: three chords and simple melodies. Influences include The Ramones, Screeching Weasel, The Queers, Teenage Bottlerocket, Teen Idols, and other bands like that. Since I’ve been mixing as I go, I can post a few preview tracks:

  • Bumper Sticker Warrior — A fast, snotty song about people who outwardly appear to care about an issue, but don’t do anything about it.
  • 4 a.m. — A short little song about being unable to sleep.
  • Not Buying In — A song about trying not to be defined by what you don’t have.

I’m actually going to announce a release date ahead of time, in the effort of giving myself some sort of pressure to finish the album and not endlessly tinker with it. Look for it on August 24, 2010.

NooBrews Episode 1 – Now Available for Viewing

Thursday, January 14th, 2010

The first episode of NooBrews is available for viewing now. Andy and Nico show you how the first steps toward making some delicious (well, I’m only guessing here, but it looked like they enjoyed their sample) hard apple cider.

As I’ve mentioned before, I made the intro music for the show. I’m going to start working on some other cues — incidental music mostly — and of course an ending theme. Should be lots of fun!

Home Theater Without Breaking the Bank – Part 2

Wednesday, January 13th, 2010

One Remote to Rule Them All

This is part two of a multi-part story on upgrading my home stereo. Part 1 was about finding the right solution for video playback.

After getting video sorted out, the next step was to find some way to reduce the jumble of remote controls I was currently using. At this point, I had all sorts of crap to remotely control the devices: a wireless keyboard for the HTPC; remotes for the cable box / DVR, the receiver, and the TV, Playstation 3 em Playstation 2 remotes, and Wii remotes. Surely, I could do something to reduce this remote madness?

My first idea was to use the remote that came with my receiver. It could control up to nine devices, and from reading the manual I gathered that it could control many different types. The litmus test would be whether or not my receiver’s remote could control my cable box / DVR. It’s a Pace box, which is one brand I’d never heard of before. I was quite pleased to see the company name even listed in my remote’s manual. It was worth a shot.

One neat thing my receiver does (it’s an Onkyo HT-RC160) is on-screen configuration of remote codes for controlling other devices. That means it displays instructions and the codes themselves right on the TV. It sure beats the heck out of flipping the remote over (to read the instructions) for the first few codes, or (even worse) digging out the manual and looking up the codes. This made it easier to try the codes — there were about ten of them — but it turned out to be for nought, because none of the codes worked. Back to the drawing board.

A couple of years ago I got my dad a Logitech Harmony 659 remote for Christmas. The Harmony series allows you to define ‘activities’ that are essentially macros for the devices it controls. You can define one called “Watch a Movie” that turns on your receiver, TV, and DVD player, and switches everything to the right inputs. This was a great gift because it was something he could tinker with and it would make things a lot easier for my mom, who doesn’t want to deal with all the devices, inputs, and buttons. I thought this might be the perfect solution for my problem.

So I went to Target and made the most impulsive purchase of my home theater-upgrading spree. Luckily, they had one Harmony 620, which is precisely the remote I needed. I could have ordered it online (that’s how I got most of the equipment I needed for this upgrade), but didn’t want to have to wait. It was a Saturday, which meant that the earliest I would have gotten the thing would have been Wednesday. Logitech also sells other Harmony remote models, but anything below the 620 was too little for what I needed and anything above is, frankly, overkill. The Harmony One, for example, costs almost twice as much and all it adds are a touch screen with color and a rechargeable battery. I like the idea of being able to recharge my remote, but it’s not worth the extra $79. I think the color touch screen is essentially a throwaway feature. I like my remote controls to have tactile feedback, and usually touch screens that small are terribly inaccurate. There’s also another model, the Harmony 1100, which is roughly the size of a sheet of paper and is almost entirely touchscreen-based, which means it would be even less useful to me than the Harmony One. I honestly don’t understand why somebody would purchase an accessory for their home theater that potentially costs more than the components themselves!

It was a snap to enter in the codes for all my devices, but I ran into a few snags:

  • My HTPC didn’t have an IR receiver, so I couldn’t control the Harmony with it.
  • The PlayStation 3 uses BlueTooth for its wireless devices, and doesn’t have an IR port, either.
  • The Wii doesn’t support IR.

The Wii turned out to be a moot point. You pretty much have to get up to get a Wiimote. If you turn on the Wii, you’re going to want to play a game, not watch a movie (Netflix rumors notwithstanding). So I added an activity (‘Play Wii’), and all it can do is turn on the TV and the receiver.

The PS3 presented more of a challenge. There are two items that could have worked here. Nyko makes a PS3 Remote, and Logitech sells a Blutooth->IR adapter. The Nyko device plugs into the PS3 via a USB port, which means it takes up on of the ports and can’t turn the unit on (because it draws its power from USB). The Logitech Harmony adapter actually translates IR commands to BlueTooth (meaning it can turn on the PS3), but it costs almost four times as much as the Nyko remote.

I finally decided to go with the Logitech one, because I wanted to keep a USB port free and for some reason the ability to turn the PS3 off and on was really, really important to me. Sometimes I’m obsessive about this sort of thing, and I decided I wanted as much control over my devices as possible. In hindsight, this purchase may have been the most impulsive one in my home theater-upgrading spree. Nevertheless, I ordered the thing and it worked right away. The most complicated thing I had to do was register it with the PlayStation 3’s OS.

With that problem solved, I turned to the matter of my HTPC. The bulk of my home theater viewing is done on this. I had search for something like this before, but couldn’t really find anything that matched what I wanted to do. Part of the problem is that my playback software of choice is MediaPortal, and lots of remotes didn’t work with it. Ideally, I wanted an IR receiver that could process remote commands and turn them into arbitrary keystrokes.

I don’t know if there’s anything that does precisely that, but I found something that’s close. It’s a PC remote that’s interpreted as a USB keyboard by your computer. I wasn’t 100% sure of what keystrokes the remote buttons translated into, but I saw enough (after doing some Google image searches) to realize that it included the four arrow keys, escape, and enter. These were the necessary keys for navigating the MediaPortal menus. The rest would be window dressing. And — bonus — somebody posted the remote’s codes to the Logitech database, which meant I would only have to do minimal tweaking to get it to work with MediaPortal. Another thing worth mentioning is that the PC remote itself has the ability to control the mouse. Unfortunately, it has its own pad for this and there’s no direct equivalent on the Harmony remote, but I still managed to get it programmed in, thanks to the customizable menus available on the Logitech remote.

Mapping the remote took some effort and a bit of ingenuity on my part. First I had to figure out what keys each of the PC remote’s buttons corresponded to. One approach would have been to open Notepad, press the remote buttons, and see what gets typed. I decided to do it another wayL I used another (unrelated) Logitech program. I sometimes use my HTPC to play emulators for old video game consoles, and had bought a couple of Logitech USB gamepads a while back. They came with a program that allows you to configure them. This program has a ‘record keystroke’ feature which tells you exactly which buttons are being pressed. So I can push each button on the PC remote in turn, and see on screen exactly what keystrokes are sent to the computer. This allowed me to easily map those same commands to the Harmony Remote’s buttons.

Interestingly, the commands I had the most trouble with were the transport buttons: play, pause, and stop. MediaPortal uses the space bar (in line with other media programs like VLC and QuickTime) to pause or play a video. This was not triggered directly by any button on the PC remote. The closest that remote came to pressing spacebar was via a clumsy numlock button, which turned the 0-9 digits into letters (kind of like a telephone pad). It was even worse for the stop functionality, which is triggered in MediaPortal by the ‘b’ key. As far as I could tell, I couldn’t reconfigure MediaPortal’s default controls to match one of the keycodes triggered by the PC remote.

But the remote did have four commands reserved for macros or program launching. It had A, B, C, and D buttons that triggered alt+shift+a, alt+shift+b,… and so on. So I downloaded AutoHotKey onto my HTPC. This is an open-source macro program that allows you to create scripts to control your PC automatically. I created a script that simply presses ‘B’, compiled it to an application (AutoHotKey can do that), created a shortcut to said application, and gave it the trigger alt+shift+a. Now the ‘A’ button on the PC remote (or its equivalent on the Harmony Remote) triggered this macro, which pressed ‘b’ and stopped whatever was playing via MediaPortal. Awesome!

I programmed the other hotkeys to do other things. ‘B’ presses the spacebar, which I assigned to the Harmony Remote’s play and pause buttons. ‘C’ opens MediaPortal itself (in case I boot the PC or otherwise need to run MediaPortal).

The most fun I had was programming the ‘D’ hotkey. I ran into a problem that I still haven’t been able to solve, but have developed a band-aid workaround. Sometimes, when I turn on the HTPC, it ‘forgets’ that it’s plugged into my TV via HDMI and no signal is sent. Luckily, I have another output from the HTPC to the TV via a VGA (or D-Sub) connector, and this one is never forgotten. So if I turn on the HTPC and for some reason it doesn’t know about the DVI port connected to the TV, I can use the VGA port and switch the monitors. But boy, what a pain! I wound up creating another AutoHotKey script that switches to the desktop, right-click it, chooses ‘Display Properties’, and tabs/toggles its way through the display dialog, changing over to the DVI output and applying the changes. It works like magic! If I turn on the HTPC and don’t get any video, I simply press the ‘D’ hotkey on the Harmony remote (which has been programmed into the customizable menu as ‘Fix Displays’), and everything is fixed!

I also programmed some other stuff into the Harmony remote’s custom menus. There are mouse control command, ctrl+esc for showing the start menu, Windows Key-D for showing the desktop, alt-tab for switching programs, and tab for configuring dialog boxes. The remote also had commands for my laptop (which came with an IR remote control) and a digital photo frame my parents had given my wife and me for our wedding. True, I don’t do much to control the frame, but it’s reassuring to know that I have the power.

This was the last step, and now I’m in complete control. Every command is at my fingertips. I had a total of nine devices and eight activities. I have One Remote to Rule Them All. I’m almost drunk off my own power. Too bad I can’t convince my wife to use the remote to control the PC (getting that to work I viewed as my crowning achievement) — she still uses the wireless keyboard.

Home Theater Without Breaking the Bank – Part 1

Monday, January 11th, 2010

A few months ago my home theater suffered a nearly-fatal blow: my receiver died. I was obligated to remove it and put in an old friend to hold down the fort until I could replace my fallen soldier. A couple of weeks ago I finally got a replacement, and started the process of planning, configuring, and upgrading my home theater. This weekend I put in the final piece of the puzzle, and can now say that I have a home theater to be proud of. And the best part is that I didn’t have to pay through the nose to get something I’m proud of. Until very recently, I worried I would have to build a whole new HTPC. Thankfully, a solution arose in the most unlikely of places.

With all of that work (some might even call it fun) out of the way, I can around to describing the thing, and hopefully sharing some tips so that others attempting something similar to what I did can get it done without quite as much hassle. This subject is kind of hard for me to write about, for two opposing reasons. The reason I am apt to write this all down is because I love technical things, and I especially love stereo (and home theater setup). However, I’m wary about writing about it because when I see others do so it often feels to me almost like bragging, as in, “look at how much neat stuff I have!” I realize that the fault probably lies with me and the way I perceive people talking about this stuff, but at the same time it makes me want to avoid that sort of thing, so I’ll try. I want to make this about the technology, not how much it costs. That’s why I’m focusing on the “without breaking the bank” part.

I’m going to divide this up into several articles, because I could write quite a lot about it. This first part will be about the solution I went with on my HTPC, and my search for a video player. I will also cover my remote control configuration and receiver setup later.

Part 1: Finding a Video Player

One of my chief goals was to find a way to play HD video without having to go too far out of my way. I knew this was likely to be a tough nut to crack. None of my computers are what you would call cutting-edge. I’m a web programmer, so I don’t really have to have a beefy CPU for compiling, and I’m not some knee-jerk gamer who dumps cash on the biggest, meanest graphics card. That means I’m never on the cutting edge of hardware: I wouldn’t utilize the bleeding edge anyway. At the same time, I realize that HD video is permeating many parts of our lives and it’s just going to become more prevalent, so I wanted to focus on future-proofing (or at least future-preparing) my setup.

My home theater is a modest Compaq box I got when I was in college and switched majors to Computer Science about five years ago. It has an AMD Athalon x64 processor, 2GB of RAM, and a decent video card I got a couple of years later (I think it’s an nVidia GeForce 7000 series card, and I know it has 128 MB RAM). I’ve got it hooked up to my receiver via a DVI-to-HDMI adapter and digital coaxial output. It can show 1080p (and that’s the way it runs), but I knew that it would take a miracle to get actual 1080p video running on it.

About a year and a half ago, I decided to use MediaPortal as the media library/playback app. I also looked at XBMC, but at the time it was too buggy to consider. There are yet other options, but MediaPortal is the one I settled on because of how configurable it is, and how suited it is to what I need (playback of video on Windows shares, and occasional music, too). I could have gone with a whole different Operating System, but settled on Windows XP as it is stable and lean compared to Vista. I considered Linux briefly, but decided that my hardware requirements would make getting it to work into a chore instead of a hobby. Things may have changed in the last eighteen months, but I’ve kind of settled upon Windows for now.

720p video worked right out the door via MediaPortal. I’m not 100% certain, but I’m confident that it wouldn’t play smoothly on this box without a little something called DVXA. DXVA is a Microsoft API that uses your graphics card to help decode demanding video (like H.264-encoded stuff, which is primarily what HD video uses these days). My confirmation of this is that the 720p video doesn’t run smoothly on this box in VLC, which as far as I know doesn’t use hardware acceleration at all.

1080p video flat out didn’t work. I figured it wouldn’t on this box. Betting on a long shot, I gave it a try anyway using both MediaPortal (which crashed) and Media Player Classic Home Cinema, which also uses DXVA but probably doesn’t have as much overhead as MediaPortal. No luck with either, which is exactly what I expected.

I decided to try out my laptop. It was marketed and sold as a ‘media center laptop.’ I got this one about two and a half years ago to replace an aging Dell Latitudes I’d inherited from my father. It came with Vista Home Premium (which I replaced with Business). It’s got a speedier CPU: a Core 2 Duo. It’s also got 4GB of RAM and an 8000-series GeForce. I figured this should be more than enough to play 1080p video.

Wrong! VLC couldn’t hack it. It looked like VLC didn’t even use use both cores while decompressing. I tried MPC HC and it sort of worked after I tweaked the settings. Some 1080p video, like animation, would play just fine. The beefiest files I threw at it worked, too. But other 1080p files which should have required less decoding muscle were stuttering and had terrible lip synch. In all other respects, the laptop would have been a golden solution: it had an HDMI output which carried both HD video and sound, and I had a free port on my receiver and a decent-sized cable. I finally managed to configure MPC HC to send the digital audio straight out over the HDMI instead of decoding it stereo, so I had 5.1 surround, too. But when I sat down to do a test run, it still had some problems. Video would stutter and lip synch would often drift, sometimes being correct and other times being just enough off to be frustrating.

At this point, I thought maybe my network was to blame. My server is downstairs in the basement. I had first tried a pair of Ethernet-over-power (also known as Powerlink) bridges, but I think my house’s wiring is too old and noisy to privde reliable throughput. It couldn’t even deliver reduced-size DVD rips from the server. I upgraded to a wireless bridge with 802.11n, and this was at least able to deliver a 4GB DVD rip in the time it took to watch it. I figured maybe my laptop was decoding video just fine, but not receiving content quickly enough. A quick copy of a 6.5 GB, hour-long 1080p video took about 43 minutes, which should have been enough to do it. But I tried watching the copied video direct from my hard drive, and it was still displaying the same behavior.

This is when things started to veer of into crazy land. I tried my wife’s PC, which is in the same room as the TV and has a slightly beefier processor and a much beefier graphics card than my laptop. It could play some video my laptop couldn’t, but bizarrely it couldn’t handle the video my laptop could.. At this point, I considered either building a new, extremely beefy HTPC or dropping some cash to run an HDMI cable the approximately 25 feet that would be necessary to connect my wife’s PC to the TV. Neither of these were ideal solutions, because I’d have to test a new 1080p video on both machines and screw around with display settings.

Strangely enough, my first-generation Intel iMac (just a Core Duo, not a Core 2) could play the same video my wife’s much newer PC could and could almost play the video that worked on my laptop — in VLC, no less. I had no idea why.

At this point I tried a couple of Linux LiveCDs on my laptop, figuring that Vista’s overhead may have been the problem, but ran into hardware configuration problems. This would also have required even more work than mentioned above. To watch 1080p video, I’d have to reboot with the LiveCD or install in onto my hard drive.

Is it clear I was close to madness at this point? Why could my 3.5 year-old iMac play most HD video just fine, while my newer laptop and my wife’s computer could only handle some of it? Why was MPC HC behaving so differently on different boxes when it was configured the same?

The solution came in the form of XBMC. I downloaded it on a whim, just to test it out. Not only could it play all my 1080p content at full resolution, but it could also do crazy things like fullscreen overlays and subtitles (just moving the mouse was enough to make playback jittery in MPC HC)! I even got it configured to output 5.1 digital audio without too much fiddling. So far, it’s played everything I’ve thrown at it.

The only problem I’ve seen is in some 1080 buffering issues. I think I know why. Today’s video codecs don’t encode information at the same bitrate all the time. A file has an average bitrate, which can roughly be calculated by dividing its size by its length. But the bitrate varies considerably. From 1:00:00 1:01:00, for example, it might play at 2 Mb / sec, but from 1:01:00 to 1:02:00, it might play at 3 Mb / sec or more. A smart codec squeezes as much extraneous data out of a scene as it can. This is easy in scenes with little motion. But a scene with a lot of action might have a much higher instantaneous bitrate. So even though my wireless N network can download the whole video in less time than is required to play it, it could be that certain parts have such a high bitrate that they can’t be played at my network’s transmission speed, while most of the rest of the video falls well below the average.

There’s not much I can do about this, aside from ‘pre-buffering’ HD video by copying it to the laptop first. I can’t lay cable in my house because it’s rented. My wife wouldn’t approve of stringing long ethernet cables down the stairs, either. Maybe there’s an option to increase XBMC’s video buffer. It definitely seems smarter than, for example, Amazon’s video-on-demand buffer or YouTube, but it’s hard to gauge these things. I might wind up getting a big hard drive exclusively for my HD content, attached to the network upstairs. Maybe I’ll look into a NAS solution.

So, here’s an overview of what I use the computers for:

  • HTPC Box — SD video, DVD rips, HD video up to 720p. Also, I run various emulators off it, and play music from my server. This is all done via MediaPortal. Video is via HDMI out, audio is via digital coax up to 5.1 surround.
  • Laptop — 1080p video played in XBMC. Video and audio via HDMI, up to 5.1 surround.

Not so complicated when it’s put that simply. The best part is that I didn’t have to build (and pay for) a new computer just to get full HD playback. The only drawback is that I can’t do anything else (like browse the web) on that laptop. I’ve still got the old Dell Latitude, so I could do it that way, but usually if I’m watching 1080p video, it’s got my full attention.

For Part II, I’ll go through what it took to get everything controlled by one remote.

New Track – NooBrews Theme

Friday, December 4th, 2009

I’ve gotten my feet wet in the scoring field, and I have to say I like it.

Last night I finished the final version of the introductory theme for a FenixTV web show, NooBrews. I put up a page with all sorts of information. You can also download it there.

And of course, it’s available under a Creative Commons license. Because that’s how much I rock.

Music Section is Live

Friday, October 23rd, 2009

After months of having a tantalizing-looking ‘Music’ link in this site’s main navigation but no payoff after the click, I’m happy to tell the world that the music section is live. There isn’t too much up now, aside from some free MP3s and an archive of music news, but there will be more content when I have more time. I would like to include some info about the lovely Why?-Fi Studio and how I record a song, but those will require a lot of work. I also plan to have an ‘upcoming albums’ section, but that might be unrealistic, as I would feel obligated to give all the projects I’m working on actual deadlines, then would feel the need to meet those deadlines. You see my dilemma.

Someday I’ll have an online store. The plan includes physical copies of CDs as well as digital downloads, initially in mp3 but probably in FLAC eventually. What’s going to be neat is that the digital downloads will feature a ‘Pay What You Like’ option (yeah, yeah, “Simpsons Radiohead did it”), which will go all the way down to free if that’s what people want to pay. I’m having a little trouble with the logistics of the whole project because I would like to include cover songs (I’ve recorded a lot of cover songs, my Christmas albums are almost all covers, and even The Suckers recorded a full-album cover of the Ramones’ first record), but I have to deal with the nasty reality of licensing, which looks to be as much negative fun as making the songs in the first place was. So the covers are going to have a minimum price so I don’t wind up losing money on the venture.

Ben Folds: Missoula, MT

Thursday, October 22nd, 2009

Holy cow! What a show. The opening act was awesome, and the piano man himself did not disappoint. Carrie and I bought some ear plugs (after the hearing damage we got from the Dragonforce concert in the spring), but we didn’t even need them, which was a nice change. I’m getting old enough that I can’t afford to damage my hearing anymore if I want to continue to make and enjoy music. My dad and my sister went to the concert in Bellingham two days before we did, so we kind of knew what to expect, but it was still an awesome time. They also missed out on the opening act — Kate Miller-Heidke, who blew us away, and whose album is currently sitting pretty in Australia.

The only disappointment I felt was after it was over, and I realized he would not be playing “Fred Jones, Part II.” That’s another beautiful song I wanted to hear.

The opening act was amazing. It was just Kate and her husband, Keir Nuttall. We bought their CD, but it definitely had a fuller sound than the live act. Their performance had a great feeling of intimacy: just a guy with a guitar and a gal singing. And what a voice! She did all sorts of operatic vocal acrobatics. There’s a little bit of that on the album, but in concert you could definitely tell that she’s had some classical training. The intimacy was mostly missing from the CD, but I need to give it a few more listens to evaluate it fully. It’s a fun listen and I’m not saying I dislike it, just that the contrast between the live performance and the studio recording are quite marked and unexpected.

Photos

These kind of suck, because the lighting was bad, I didn’t want to use the flash that much, and I didn’t want to get closer to the stage.

Setlist

  1. Free Coffee
  2. Annie Waits
  3. Sentimental Guy
  4. Eddit Walker
  5. Effington — “This song was written on a stage in Normal, Illinois. That’s why it pretty much has one chord.”
  6. Jesusland
  7. The Luckiest — This song was by special request from someone else, and I really enjoyed it because it’s my and Carrie’s wedding song.
  8. Song for the Dumped — Ben told the story of how he learned a complicated-sounding lick at the piano when he was a kid, and was trying to work it into a song. On the tour van, he was working on “One Angry Dwarf and 200 Solemn Faces” when Darren Jessee asked to see it, said it was rubbish, and scribbled out the lyrics to “Song for the Dumped”, which Ben was able to integrate the piano lick into.
  9. Gone
  10. Picture Window — One of the two Nick Hornby collaborations he played.
  11. Levi Johnston’s Blues — After this one, he was going to play another one, but decided it wasn’t ready, said the song “wasn’t under copyright yet”, and tossed the sheet of paper (presumably with the lyrics) into the audience.
  12. You Don’t Know Me — Kate Miller-Heidke performed Regina Spektor’s part, and Keir Nuttall accompanied on acoustic guitar. She added a nice, operatic touch to the part.
  13. Kate
  14. Still Fighting It
  15. You to Thank
  16. Landed
  17. Dr. Yang — Ben said that some people describe this song as “snarky.” That’s a word he prefer to leave the lexicon. Along with “OMG.” After this song, he asked if there was any song that anyone wanted to hear, and of course everybody shouted out a different name.
  18. Hiro’s Song — He went to get a Cajón for this one, which he played instead of the piano.
  19. Zak and Sara
  20. Bitches Ain’t Shit — He had a guy from the audience come up to sing the second verse. He first tried to get the audience to sing it, but that didn’t work out.
  21. Army — We kind of failed at the horn part.
  22. Rock This Bitch — Elaborations on the theme of a girl named Suzy who had a birthday.
  23. Gracie
  24. Not the Same — With some awesome conducting for the ‘drunken chorus.’
  25. And of course, the obligatory encore break…
  26. Evaporated — I was psyched for this one, as I think it’s very beautiful. The a capella version is also pretty.
  27. Rockin’ the Suburbs

Organizing The Music

Monday, October 12th, 2009

So I’ve begun the process of manually merging my music collection. It’s a mess, quite frankly. I’ve got MP3s I’ve ripped or purchased on four different computers, spread throughout many directories. Compounding this is my iPod, which usually carries the latest tracks that I’ve added. Here’s how I’m organizing things. The fun part is that I got to write a Python script to help out.

First Steps

I’ve got one folder that was my primary music folder throughout my time in school. It rests on my file server. It generally contains all my music and is the most authoratative ‘source.’ In addition, it was the initial source, the ‘seed’ if you will, for the tracks on the iPod. At one point in the distant past, my iPod contained the tracks from this folder and nothing else. This is what I’m going to start with. To really drive home the point of my fresh start, I creates a share on my file server and started anew. These tracks wound up in a folder called ‘library.’

This is already a good start. I’ve been pretty meticulous in organizing my music library, essentially by artist then by album. The /library/ folder is going to be my new, massively-integrated library, as soon as I get finished organzing.

The iPod

Since my iPod contains several albums that never made it to the music share for one reason or another, it can also be considered ‘authoratative.’ So I ripped its contents to another folder in the new music shared, called /iPod/. I used the excellent tool SharePod to do this, as it allowed me to rip the tracks to artist/album folders with very little hastle.

Other Sources

I then rounded up all my other music, and put it into an ‘unsorted’ directory. This is stuff I would go through item by item, once the two primary sources were sorted out, and include or not include depending on if it wound up on my iPod or not. I have yet to get all the way through this step.

The Script

This is the important bit. I wrote a Python script to crawl through the two directories in parallel, and note any missing files or directories. This way, I’ll know what I need to copy from the /iPod/ folder to the /library/ folder. It’s a fairly simple command-line script, used like this:

compare.py left right outfile [filter1,filter2...]

left is the first directory, right is the second. outfile is a text file that the differences will be written to, and the [filter]s allow me to specify a whitelist of file types I care about. In this case, the whitelist would be restricted to audio file types. Here is the command I wound up running (drive Y:\ is the share I set up):

compare.ph Y:\library\ Y:\iPod\ Y:\results.txt mp3,m4a

This ran the Python script, comparing the /library/ and /iPod/ directories (and, recursively, their children), saving the log of all the differences to results.txt at the root of the share. Additionally, the program ignored any files except mp3 or m4a files (and directories, obviously). I wound up with a list of all the folders and files unique to the initial library and the one copied from my iPod. Then it was a simple matter to copy the iPod-unique folders to the library. I could even use it to update my iPod if I really wanted to, although it’s running pretty close to full now.

Of course, there’s still a lot of work to do: I’ve got to tag the /unsorted/ files. Have I mentioned how meticulous I am about my music library?

Source Code

import os # for files and paths
import sys # for command line arguments
 
def matches (path, fileName, filter):
    """Returns true if the given file matches the filter or is a directory, false otherwise.
    path - the directory the file resides in
    fileName - the name of the file in question
    filter - Either None to indicate no filtering should be applied, or a list of allowed extensions."""
    if filter == None:
        return True
    else:
        # if it's a directory, return true
        if (os.path.isdir(os.path.join(path, fileName))):
            return True
        ext = fileName.split(".").pop()
        return (ext in filter)
 
 
def compareDirectories (leftPath, rightPath, uniqueLeft, uniqueRight, filter = None):
    """Recursive function to compare the contents of two given directories. Two lists are
supplied to keep track of the unique files. An optional filter is allowed.
    leftPath - The path to the first directory.
    rightPath - The path to the second directory.
    uniqueLeft - A master list of files unique to the left directory tree.
    uniqueRight - A master list of files unique to the right directory tree.
    filter - Either None, or a list of allowed (whitelist) extensions for files. A unique file in
            either the left or right directory will not be counted as unique if its extension
            does not match one of the filter items."""
 
    # get contents of directories
    left = sorted(os.listdir(leftPath));
    right = sorted(os.listdir(rightPath));
 
    # without a filter, just add all unique files
    if (filter == None):
        # append unique files by using a list comprehension to get all files on one side
        # that are not on the other side
        uniqueLeft[len(uniqueLeft):] = [os.path.join(rightPath, fileName) for fileName in right if fileName not in left]
        uniqueRight[len(uniqueRight):] = [os.path.join(leftPath, fileName) for fileName in left if fileName not in right]
    # otherwise, use the filter function
    else:
        # same as above, but also checks to see that the files match the given filters
        uniqueLeft[len(uniqueLeft):] = [os.path.join(rightPath, fileName) for fileName in right
                                        if fileName not in left and matches(rightPath, fileName, filter)]
        uniqueRight[len(uniqueRight):] = [os.path.join(leftPath, fileName) for fileName in left
                                          if fileName not in right and matches(leftPath, fileName, filter)]
 
    # get a list of files in both directores. Since they by definition must be in both,
    # we can pull them from either side using a list comprehension to check that they're
    # in the other.
    both = [fileName for fileName in left if fileName in right]
 
    # now go through and recursively call the function for any directories in both parent directories
    for fileName in both:
        leftChild = os.path.join(leftPath, fileName)
        rightChild = os.path.join(rightPath, fileName)
        if (os.path.isdir(leftChild) and os.path.isdir(rightChild)):
            compareDirectories(leftChild, rightChild, uniqueLeft, uniqueRight, filter)
 
def usage ():
    print "\n\ncompare.py"
    print "Compares two directories recursively and lists files or folders unique to each one.\n"
    print "compare.py left right outfile [filter1,filter2...]"
    print "\tleft\tFirst directory to compare"
    print "\tright\tSecond directory to compare"
    print "\toutfile\tText file that results are written to"
    print "\t[filter1,filter2]\tOptional comma-separated whitelist"
    print" \t\t\t\tof extensions for files"
    exit()
 
if __name__ == "__main__":
    # slice off name of program from args
    args = sys.argv[1:]
 
    # if there's an incorrect number of parameters, print the usage
    if len(args) < 3 or len(args) > 4:
        usage()
 
    # set up filter whitelist, if any
    filter = None
    if len(args) == 4:
        filter = args[3].split(",")
 
    # set up lists of unique files on both sides
    uniqueRight = list();
    uniqueLeft = list();
 
    # do the comparison recursively
    compareDirectories(args[0], args[1], uniqueLeft, uniqueRight, filter)
 
    # write to the file
    out = open(args[2], 'w')
 
    out.write("UNIQUE TO LEFT:\n")
    for fileName in uniqueLeft:
        out.write(fileName + "\n")
 
    out.write("\nUNIQUE TO RIGHT:\n")
    for fileName in uniqueRight:
       out.write(fileName + "\n")
 
    out.close()

Dear NBC: Please Don’t Ruin Next Week’s “The Office”

Monday, October 5th, 2009

The Office premiered a few weeks ago, and it’s been a pretty good run so far this season. But there’s a ‘special event’ coming up this week *mdash; Jim and Pam’s wedding — and I’ve got a certain feeling of dread thinking about it. Let’s face it: TV networks love to let us down. So I’m asking you, NBC, from the bottom of my fanboy heart, not to ruin what should otherwise be an enjoyable and eventful episode of your fine show. I realize that the show is already in the bag, but I want to complain anyway, so I will. Got that?

Please, no drama. The Office is a comedy, after all. Drama can be good every once in a while, but you don’t need to inject it into every damn episode. This week’s show is a big one, and it would be nice if, just for once, everything could go off without a hitch. Can you imagine that? A fun episode through and through, with no cold feet or misunderstandings about such-and-such or reappearances of sketchy former boyfriends to install a feeling of doubt or any of those other tired, old wedding clichés… it would be refreshing.

The trend over the last decade or so has been to inject drama into sitcoms, and it’s worked pretty well in general. But… there’s always to danger of too much of a good thing. Just because it can make a certain series interesting and engaging (Scrubs comes immediately to mind, ditto Pushing Daisies) doesn’t mean that every episode ever needs it. Sometimes, I just want to laugh. There once was a time when adding a bit of emotion into an otherwise funny show was a rare thing and something to be admired. But then it became a fad, and everyone started doing it. I blame Friends, and Ross and Rachel. But as it has become the norm instead of the exception, it’s become a bit old. And now we’ve come half a circle, NBC, and you can do the new and different thing by not injecting some sort of crisis or epiphany or disaster into this week’s episode.

I’ve been pulling for Jim and Pam for a long time, NBC. After all, Jim is a guy I can relate to, and Pam is smokin’ hot. I just want them to be happy. The best moments on the show are the ones where we see them as a pair, happy and glad of each others’ company and relating like human beings. Yes, their drama worked early on and even drew me into the show, but now is the time for smiles and celebration. I want to see Michael be an idiot, and Dwight show some of that weird, off-putting ‘expert’ charm, and Andy fail with the ladies. I want to see all those things. But I also want to see Jim and Pam smiling and happy at the end of the episode, without some formulaic romantic comedy grade BS to foul up the hour. Is that too much to ask?

The biggest surprise of all, NBC, would be if you were to surprise me with no surprises. Just let things happen the way they should. I want a sense of finality when I turn the show off, not some lingering cloud of doom over the characters’ (and my own) heads.