Now I really do have a “home cinema”

I say “now”, I’ve actually had a proper home cinema for coming up 2 years now! I’ve just never got around to writing about it.

I am very difficult to buy Birthday/Christmas gifts for. If I want something I just buy it! Not that I buy an awful lot, but if I do want something I know what I want, I research it and get it. That, together with wanting expensive stuff makes Christmas/Birthday time tricky for those around me!

Anyway, a couple of years ago I mentioned I was annoyed with my pull down projector screen having a “bump” in it. So, my girlfriend said she’d get me a new screen for my birthday. We figured we get the long HDMI cable hidden in the ceiling and walls to. So, we called someone in the area specialising in home cinema installations and they said something that changed out thinking completely. He said “it’d be much easier if we had a clean slate to work with”. Things were getting complicated with me wanting an acoustically transparent screen, which then meant it had to be electric, which opened up a whole new can of worms!!

I’m not quite sure how we thought of using the garage, but we did. Once we got that idea into our heads there was no stopping us. I spent many weekends clearing out all the accumulated “stuff” that had found it’s way in there over the years. We got a few quotes to transform our garage into a little cinema. We still need some storage space at both ends, so the first thing to do was to replace the up-and-over garage door with a barn door style one. The reason being that we’d lose too much space because of the mechanism and also that we wanted to make use of the loft space above the garage and we’d be unable to access it with an up-and-over style door.

So, we ended up with a metre of space behind the new door where we keep our bikes, tools, etc. I have to say the 30/70 split barn door is brilliant, so much easier than an up-and-over. All houses should come with them as standard.

Next, the builders came and put in the new walls and floor, finishing off with putting in a new door to access the room from our hallway. I didn’t take many pictures of it all being done as it seemed to happen pretty quickly.

Stud work 1

We, also ended up with a cloakroom with loads of hooks for coats, hats, etc. The tumble dryer also lives in there, only just though as the room was made to measure. It’s about 650mm deep, and standard appliances are 600mm wide! We had a kitchen worktop that was in the garage before, so that was cut down and formed a useful work surface above the tumble dryer. I eventually put up another shelf in there and now my TVServer PC and Drobo live on that shelf, with the networked printer and UPS sitting on the kitched worktop. So, it’s a cloak/laundy/computer room. We do prop the door open when the tumble dryer is on otherwise it gets very hot and humid in there. So, far there haven’t been any issue with the computer gear in there.

We project managed it all ourselves, if you can call it that with it being just the one room.

Once the builders had got the stud work in place we got an electrician in to do the lighting, move the circuit box a little and put in all the power sockets in just the right places. 4 doubles at floor level, and a double high up on the large shelf we were having installed. I then wired up all the speaker and network cabling. Since all the AV gear was going to live on a big shelf at the back of the room, there was no need for video cabling.

Once all the wiring was done, the builders came back and put the high density sound insulation in the stud walls, floor and ceiling. We also had acoustic plasterboard installed, a thick black (obviously!) carpet and a fire door. Normal internal doors are very light and don’t cut out much noise at all.

We painted it ourselves, using a very matt charcoal colour, which just seems to absorb light! The skirting board, architrave and door were also paint in a very similar matt colour.

Once that was done the large shelf was installed, which we eventually covered in black material. We had a long struggle to find something suitable. I had to allow a feminine touch in there somewhere, so it’s patterned instead of plain. I used the same material to cover a small frame I made to conceal the circuit breaker box.

DSCF4901

I’d got the builders to feed the speaker wire through the plasterboard in just the right places, so it looks quite neat.

DSCF4889

We bought a couple of Lazyboy power recliner chairs, which are awesome. I’ve had no discomfort sitting on them for 3-4 hours straight. Originally we were going to get a sofa, but that would have been a little awkward when having mates round, as we’re not “that” close!!

DSCF4910

It took me quite a while to get all the wiring done for the Mitsubishi HC6000 Projector, PS3, XBox360, HTPC and Denon AV-1910 Receiver. I did manage to get the projector setup with zero keystone correction and almost perfect geometry. It took a long time, but with the aid of a laser level and a tape measure I managed to get the screen exactly in the centre of the wall with only 1mm difference in one dimension. Which all means it looks perfect to me!

I used goo systems paint rather than having a fabric screen. It’s taken a few more top coats than recommended, but it looks amazing now. I did have a few “sparklies” for a while, but a couple of extra coats of top coat sorted that out. I think there is one that I notice occasionally, but I can live with that.

Since there is no ventilation in there it can get quite warm in the summer and cold in the winter. So, I’ve added one essential “gadget” to the room …

DSCF4907

… an oil-filled radiator!

I’ll finish off with some more pictures …

DSCF4904

DSCF4913

DSCF4902

DSCF4900

The pictures don’t show the screen with the flock tape applied to form a border. I’ll post another picture of that soon.

I always used to say I was “into” home cinema, even when all I had was a 29″ CRT TV and a VHS player. Now I can say it and know I’m not exaggerating. Even though it’s only got 2 seats, it’s still a “home cinema” ūüėÄ

Subwoofer Hum solved

One of the goals I had when I converted my garage into a cinema room was to not have masses of cables all over the place. So, I was more than a little¬†disappointed¬†when I plugged my¬†sub-woofer¬†into the nice phono wall plate and got a very noticeable, quite loud, constant¬†hum. So, I got my old 20ft interconnect out and have been living with it dangling from one of my speakers and working it’s way down the side of the room to the corner the sub-woofer is location.

I stumbled across something called a “ground loop isolator” when browsing the web recently. I searched for one on the website of my new trusted supplier for obscure electronic/computer gear, CPC; And for just under a fiver (¬£5) I found one, so I figured I’d get one for that price. I also ordered a couple of Raspberry Pi’s to get the free postage. I figured …. “why not”!

After soldering the coaxial cable which I hid in the wall back to the wall plates, I plugged it in with the isolator in-line and the hum was gone.

Ground Loop Isolator

Ground Loop Isolator

The Cinema Experience

So, we went to see the new Avengers Assemble movie yesterday. Which, by the way, is awesome. But, as ever, before the movie there are some ads and trailers. Not too many on this occasion, for a change. However there was an “ad” claiming that the best possible way to experience movies is at the cinema. I beg to differ!

I should say straight away that I’m not your average cinema-goer. I have a dedicated cinema room at home with a full HD projector, a HTPC, PS3, XBox360 and a couple of lazy boy recliners. So, I was a bit disappointed that the screen was smaller (in terms of field of view) than the one I have at home. It was a bit like watching a 50″ TV in my opinion.

Also, the seats were horribly uncomfortable, even after having paid the ODEON extra for the “premier” seats. Actually, that’s probably why the screen size seemed small because the “premier” seats are stuck as far away from the screen as possible!

As I said I’m not an average viewer, but please, if I have to keep shifting around during a movie then how can I enjoy it fully? How can I lose myself in the world of the movie?

When I watch a movie at home I have amazing picture quality, really comfortable seats and great sound. I’ve sat for well over 4 hours in total comfort. I guess I have the benefit of being able to take a comfort break, which I think would upset the other movie-goers at the ODEON!!

Having said all that I will say that the sound was impressive in the cinema, but then so is my home setup. I do have soundproofed walls but I don’t like to crank the sound up too high if my little boy is sleeping upstairs. When I get the house to myself I tend to dial it up a few notches ūüôā

So, I am left questioning how it’s a better experience at the cinema, especially when I have to contend with some late comers walking in front of me and other late comers being shown a seat with a torch. A little off putting to say the least. And although it didn’t happen this time I usually have idiotic teenagers fiddling around with their mobile phones during the movie.

I only wish the movie studios would realise that not everyone wants to see movies in that way and give us some better options for viewing them in the comfort of our own homes.

Smooth 1080p MKV playback, FINALLY!

I hope I’m not jumping the gun here, but I have finally found the cause of the severe frame dropping I’ve been experiencing when playing MKVs (specifically 1080p content) on my (not so) new HTPC.

I spent some time investigating yesterday, trying out different codecs. Once I found out about a very useful overlay display in Media Portal. Pressing Shift-1 (ie – !) brings up a raft of information including the name of the audio and video decoders. So, I could really see what Media Portal was using the play the MKV file. It also has a very useful dropped frame count. So, I didn’t have to sit and watch for dropped frames myself.

The first thing I tried was updating the codec package I use (SAF) to the latest version (6.1). This seemed to work for a while, but I still got dropped frames and once it started going wrong it got progressively worse.

Next, I tried out different video decoders (Cyberlink PowerDVD 11, Microsoft DTV, ffdshow DXVA, LAV). All of them stuttered severely.

Next, I tried copying my test file to the local hard drive. Playback was perfect! I then tried playing back the same file (from my Drobo FS) on a different HTPC, playback was perfect! So, this lead me to believe something was wrong with the networking part of the new HTPC.

So, I went on to the gigabyte website and downloaded the latest version of the network adapter driver. After a reboot I played my test MKV file from the Drobo FS, ie – using the network again, and it played back perfectly. RESULT! To make sure I let it play a lot longer than my normal test, still perfect. I then played a couple of more movies and they also played back perfectly. GREAT I thought.

One problem HTPCs often have is that when resuming from sleep mode they don’t quite work perfectly. So, I switched the PC off via my MCE remote and made myself a cup of tea. A few minutes later I switched the PC back on (again via the MCE remote), played the same test movie again and it was perfect! So, I tried a few more movies and left one of them running for over an hour. Again, as near as makes any difference, PERFECTO.

I’m not counting my chickens just yet, I’ve had this happen before. So, I switched it off (via the MCE remote) again, and went to bed.

The next morning …

I switch the PC on with the remote, fire up the test movie … PERFECT! It’s actually still playing as I write this post.

So, all this hassle and many nights of messing around with codecs and power settings and I don’t know what else; And it’s all down to a dodgy network driver, the one on the CD that came with the motherboard no less!

GIGABYTE FAIL

The PC seems to wake up quicker too. What normally happens on a wake up, is the display comes on real quick but there is a delay while it sorts itself out and reconnects to the TV server. I’m not too bothered about that delay actually, but it would be nice not to have it ūüôā

Note: When I say PERFECT, it is still dropping the odd frame. It’s only one in every 6 or 7 thousand frames and barely noticeable. I suspect that is down the the frame rate not being exactly right for 24p content. This is apparently a known issue with the Sandy Bridge CPU/GPUs.

Cinema Room HTPC Ongoing Issues

I have been “in the process” of building a dedicated home cinema room for some time now. I shall write about that in more detail some other time.

This post is a “progress” update which will make more sense in the fullness of time, after I have written about my progress up to now in more detail.

I have been having difficulty getting my HTPC to stream movies from my server reliably for quite a while now. Somewhere in the order of 4 months! This Friday just gone I decided to take adanage of my 2 year old son’s extra long sleep during the day and do a little experimentation with my network setup.

I use a gigabit wired ethernet network with a 24 port switch and wall plates wherever I can. I suspected the stuttering problems I was having was down to the network somehow. So I tried a few things to eliminate a few possibilities. As it turned out, when I moved my Drobo to a location other than my newly created cloakroom/server room it worked perfectly. Well the few tests I performed worked where they didn’t before. So, it would seem there is some kind of problem with either the network cabling I had pulled through to that room, or the sockets I’d installed in that room.

That was yesterday, today I came to watch a few things in the cinema room and I got stuttering. To a lesser extent than befofe, but still quite bad and certainly not watchable. So, I loaded up Graph Studio to see which decoders/filters/splitters were being used to play back my test movie. As it turned out the audio decoder being used was the MPC MPA Decoder, which I hadn’t set the SPDIF passthru on. So, I did that and it was instantly better, in fact it seemed pretty much perfect to me!

So, I decided to also switch the Media Portal settings back to the defaults for the SAF 6 package I’ve been using. Thecreason for doing that is that Graph Studio was telling me it was using decoders other than the ones I have configured in the Media Portal configuration, so I figured “what the hell!”

It, still seems fine to me. I’ll continue to perform “extensive testing” (ie – watching plenty of movies)

Cinema Room HTPC Ongoing Issues

I have been ‚Äúin the process‚ÄĚ of building a dedicated home cinema room for some time now. I shall write about that in more detail some other time.

This post is a ‚Äúprogress‚ÄĚ update which will make more sense in the fullness of time, after I have written about my progress up to now in more detail.

I have been having difficulty getting my HTPC to stream movies from my server reliably for quite a while now. Somewhere in the order of 4 months! This Friday just gone I decided to take adanage of my 2 year old son’s extra long sleep during the day and do a little experimentation with my network setup.

I use a gigabit wired ethernet network with a 24 port switch and wall plates wherever I can. I suspected the stuttering problems I was having was down to the network somehow. So I tried a few things to eliminate a few possibilities. As it turned out, when I moved my Drobo to a location other than my newly created cloakroom/server room it worked perfectly. Well the few tests I performed worked where they didn’t before. So, it would seem there is some kind of problem with either the network cabling I had pulled through to that room, or the sockets I’d installed in that room.

That was yesterday, today I came to watch a few things in the cinema room and I got stuttering. To a lesser extent than befofe, but still quite bad and certainly not watchable. So, I loaded up Graph Studio to see which decoders/filters/splitters were being used to play back my test movie. As it turned out the audio decoder being used was the MPC MPA Decoder, which I hadn’t set the SPDIF passthru on. So, I did that and it was instantly better, in fact it seemed pretty much perfect to me!

So, I decided to also switch the Media Portal settings back to the defaults for the SAF 6 package I‚Äôve been using. The reason for doing that is that Graph Studio was telling me it was using decoders other than the ones I have configured in the Media Portal configuration, so I figured ‚Äúwhat the hell!‚ÄĚ

It, still seems fine to me. I‚Äôll continue to perform ‚Äúextensive testing‚ÄĚ (ie ‚Äď watching plenty of movies)

DTS MKVs finally working in MediaPortal

Hooray! I have tonight, finally got DTS MKVs working reliably in MediaPortal. It was actually a very simple solution in the end. I did a little experimentation around using the SPDIF output in my existing audio filter. I found that if I told it to decode to 5.1 it worked fine. So it was a problem with the audio filter passing audio straight onto the SPDIF output. Since, I’d used AC3Filter in the past I simply installed that, set it up for my amp (just checking which rates my amp would support via the SPDIF check utility provided with AC3Filter), and I was away. So, I now have glorious DTS sound again, the only difference from the last time I used AC3Filter on my previous Media Centre PC is that this one can play back 1080p video files easily.

Update (3rd August 2010)
Actually they don’t work! I thought they did, but only a few select ones did. Oddly my other media PC works perfectly. So, I’ve swapped them around and the fully working one is now in the lounge. It plays everything back without any problems at all. The plan is to clone that hard drive in order to get the other PC to a known working state.

Update (4th January 2011)ÔĽŅ
I have it all working now, but only because I had an enforced upgrade of my TV Server (due to a power outage/spike which partially fried some gear). So, with MediaPortal 1.1.2 and Stand Alone Filters v4 (with hardware acceleration enabled). I have 1080p DTS MKVs playing back just fine.

Programmatically Changing Refresh Rate on my HDTV

I recently got myself (as a present) a nice new Denon AVR 1910 AV Receiver, which has HDMI video switching. So I duly plugged my HTPC into one of the HDMI inputs and hooked my HDTV up to the HDMI monitor out. All was well, everything worked as it did before. That is after I’d spent a few hours setting the amp up.

Whilst fiddling around with my new toy, I switched the amp to a different HDMI video input and then back to the HTPC input. Whoa, what’s this black border around the whole picture?! I have a Toshiba 42WLT66 which is a 1080i panel, that means it’s got a native resolution of 1920×1080 (albeit only capable of interlaced video). So, I’ve got my PC configured to 1920×1080 @ 25Hz. But when I checked the video settings, it had defaulted back to 30 Hz, hence the black border.

I found that if I switched the amp on first and let it go through the startup routine, then switch the TV on and then the HTPC all was well. Anything other than that order and the HTPC defaulted to 30Hz, which was useless for my purposes. So, I’ve since spent a lot of time researching different ways of fixing the problem on the web. I even installed the latest ATI Catalyst drivers and Catalyst Control Centre, but that just made matter worse. The black border was present on all three refresh rate that my HDTV supports (25, 29 and 30Hz). System Restore came to my rescue.

So, I decided to write a little piece of software to reset the refresh rate. That, when combined with the MyPrograms plugin for MediaPortal, gives me a way of setting the HTPC back to 25Hz refresh rate via my remote control

So, here is how I did it…

Firstly I needed to use a few functions in user32.dll, so I created the following class…

class User32
{
    [DllImport("user32.dll")]
    public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE devMode);

    [DllImport("user32.dll")]
    public static extern int ChangeDisplaySettings(ref DEVMODE devMode, int flags);

    public const int ENUM_CURRENT_SETTINGS = -1;
}

The User32 class needs the DEVMODE struct …

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string dmDeviceName;

    public short dmSpecVersion;
    public short dmDriverVersion;
    public short dmSize;
    public short dmDriverExtra;
    public int dmFields;
    public int dmPositionX;
    public int dmPositionY;
    public int dmDisplayOrientation;
    public int dmDisplayFixedOutput;
    public short dmColor;
    public short dmDuplex;
    public short dmYResolution;
    public short dmTTOption;
    public short dmCollate;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string dmFormName;

    public short dmLogPixels;
    public short dmBitsPerPel;
    public int dmPelsWidth;
    public int dmPelsHeight;
    public int dmDisplayFlags;
    public int dmDisplayFrequency;
    public int dmICMMethod;
    public int dmICMIntent;
    public int dmMediaType;
    public int dmDitherType;
    public int dmReserved1;
    public int dmReserved2;
    public int dmPanningWidth;
    public int dmPanningHeight;

    public static DEVMODE Create()
    {
        DEVMODE dm = new DEVMODE();
        dm.dmDeviceName = new string(new char[32]);
        dm.dmFormName = new string(new char[32]);
        dm.dmSize = (short) Marshal.SizeOf(dm);
        return dm;
    }
}

Since all I wanted to do was to reset the refresh rate, I just created a console application …

static class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        int refreshRate;

        if (args.Length == 0 || !int.TryParse(args[0], out refreshRate))
        {
            refreshRate = 25;
        }

        bool silent = args.Length > 1 && args[1].ToLower() == "silent";

        string deviceName = Screen.PrimaryScreen.DeviceName;
        if (!silent)
        {
            Console.WriteLine("Device Name = " + deviceName);
            Console.WriteLine("Press [Enter] to proceed, or any other key to abort");
        }
        if (silent || Console.ReadKey().Key == ConsoleKey.Enter)
        {
            DEVMODE dm = DEVMODE.Create();
            User32.EnumDisplaySettings(Screen.PrimaryScreen.DeviceName, User32.ENUM_CURRENT_SETTINGS, ref dm);

            if (!silent)
            {
                Console.WriteLine(string.Format("Press [Enter] to set refresh rate to {0}Hz, any other key to abort", refreshRate));
            }

            if (silent || Console.ReadKey().Key == ConsoleKey.Enter)
            {
                dm.dmDisplayFrequency = refreshRate;
                User32.ChangeDisplaySettings(ref dm, 0);
            }
        }
    }
}

The primary screen name is fetched …

string deviceName = Screen.PrimaryScreen.DeviceName;

The User32.EnumDisplaySettings is called in order to fill in the DEVMODE struct, as all I wanted to do was to change the refresh rate …

DEVMODE dm = DEVMODE.Create();
User32.EnumDisplaySettings(Screen.PrimaryScreen.DeviceName, User32.ENUM_CURRENT_SETTINGS, ref dm);

Next, I set the refresh rate to what I want and call User32.ChangeDisplaySettings …

dm.dmDisplayFrequency = refreshRate;
User32.ChangeDisplaySettings(ref dm, 0);

It works a treat in combination with the MyPrograms plugin for MediaPortal, with the command line of ‚Äú25 silent‚ÄĚ.