Archive for January, 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.