[current category: main » media]
MikeyP.com

About This Site
Main Page
About MikeyP
Subscribe to Feed

Sep 14, 2009

Streaming WMA Lossless from a Mac to a PlayStation 3

While the PS3 has native support for playing standard WMA music files, it does not support the WMA Lossless format. My music library is ripped to WMA Lossless, so I wanted to find a way to stream the collection to my new PS3 Slim.  Fortunately, the open source PS3 Media Server project makes this almost painless.

Although I rip my CD collection on a Windows machine, the collection itself is stored in a shared folder on a Mac mini. I run a slightly modified version of the FireFly Media Server (aka mt-daapd) on the Mac to serve this collection to any computer running iTunes, as well as a few Roku SoundBridge devices in the house. Since none of the clients support WMA Lossless, I have FireFly configured to use mplayer to transcode the WMA Lossless files to WAV files on the fly.  This scheme works great, provided you have a build of mplayer that can decode WMA Lossless.  I use the build from here: http://stefpause.com/apple/mac/mplayer-os-x-10rc1-and-mencoder-binaries/

Installing and running PS3 Media Server on a Mac is a simple and painless way to serve media remotely to a PS3.  And it too uses mplayer to transcode audio files.  However, when I tried to serve WMA Lossless files from PS3 Media Server to my PS3, I got an “unsupported format” error.

It turns out that (as of this writing) PS3 Media Server includes its own build of mplayer, and that build does not support WMA Lossless.  Fortunately, this is easy to fix if you have another version of mplayer installed.  Just open a Terminal window, head to the “osx” directory within the “PS3 Media Server.app” resources directory, and create a symlink to the correct version of mplayer.

Here are the basic steps:

1) Install mplayer from here: http://stefpause.com/apple/mac/mplayer-os-x-10rc1-and-mencoder-binaries/

2) Start the Terminal app, and enter the following commands in order:

cd /Applications/PS3 Media Server.app/Contents/Resources/Java/osx
sudo mv mplayer mplayer-old
ln -s /usr/local/bin/mplayer mplayer

That’s all there is to it.  PS3 Media Server will automatically serve and transcode WMA Lossless files for the PS3.

category: /media |
comments | Share/Save/Bookmark

Jun 22, 2009

Patching PACPL for Album Art and WMA Lossless Support

PACPL, the Perl Audio Converter, is a great Perl script that will batch transcode audio files from one format to another.  For a variety of reasons, my music library is in the WMA Lossless format, and I wanted to use PACPL to transcode the WMA files to MP3.  By default, PACPL does not support transcoding of WMA Lossless files, so I patched the script to add the support.  While I was under the hood, I added support for the “Composer” and “Album Artist” meta tags for WMA decoding and MP3 encoding.  The Album Artist tag helps media players like iTunes group songs by album, even if there are different performers. I also added support for embedding album art into MP3 files.

PACPL normally uses ffmpeg to decode WMA files, but ffmpeg does not support WMA Lossless.  With the patch, PACPL has the option to use mplayer to decode WMA files.  This works fine, with one exception.  Some versions of mplayer (like the one I use: 1.0rc1-4.1.2) have a bug that prevents it from properly creating files with commas in the filename or path.  I added options to remove commas from decoded filenames and to use the /tmp directory for decoding.  Edit the script and set both options to 1 if you have problems with mplayer.

# decoding options for temp files
# use /tmp/ directory for temporary decoded .wav files
my $decode_usetmp = 0;
# replace commas in decode filename to work around mplayer bug
my $decode_replacecommas = 0;

For embedded album art, I added a command line option --albumart= to specify the source album art JPG file name.  It expects a JPG file that is in the same directory as the source audio files.  If it finds the JPG, it will embed the image into the MP3 header.  I did not add album art support to any other output formats, though it should be easy enough to do if their Perl modules support it.

I ended up learning more about the MP3 ID3 metadata format than I intended.  What a mess. Fortunately, the MP3::Tag module is pretty robust.  That said, I did find a bug. The test file I used was a Stevie Ray Vaughan song, which has the genre “Blues.”  This is the first genre in the ID3 genre list, and has the ID of 0.  For the life of me, I couldn’t figure out why the script was losing the genre tag until I realized that a genre ID of 0 was getting skipped by MP3::Tag.  I added a workaround to change the Blues genre name to be “Blues & Roots”, which forces the genre to be encoded as a string instead of ID number.

I also found that different media players treat album art in different ways.  That is, some players are very forgiving of bad metadata headers, while others are not. I tested album art in iTunes, Foobar 2000, Windows Media Player, VLC, Winamp, and Amarok.  For reference, here’s the magic header for JPG album art that works with all of the tested media players:

# important to set unsync to false, otherwise ID3v2 data can appear "corrupt"
MP3::Tag->config("id3v23_unsync_size_w",0);
MP3::Tag->config("id3v23_unsync",0);

$tag_m = MP3::Tag->new("$out_file");

# ID3v2 Tags
unless(exists($tag_m->{ID3v2})) { $tag_m->new_tag("ID3v2"); }

$tag_m->{ID3v2}->add_frame("APIC", "\x00", "image/jpeg", "\x03", "Cover (front)", $imagedata);

With my patches, here’s the shell command I use for transcoding a directory tree of WMA Lossless files to high-bitrate mp3 files:

pacpl -v -t mp3 -r -p -o wma --albumart="Folder.jpg" --defopts 0 --eopts="-q 0 -v -V 0 -b 320 -F" --decoder mplayer /music/WindowsMedia/ --outdir /music/mp3/

works-on-my-machine-starburst_3Unfortunately, I stink at Perl, so a lot of my Perl code looks like C.  I tested the patches on my personal WMA Lossless collection on two different installs of ZenWalk Linux.  Therefore, I hereby grant this code the honorary Scott Hanselman badge of “Works on My Machine.”

You can download the patched Perl script here: pacpl-wmal-patched.tar.gz

I’ll send the patches up to the maintainer of PACPL, but I’m not sure if he’s interested (or if he’ll recoil in horror at my code).  I’ll add a comment if I hear back from him.

http://pacpl.sourceforge.net/

UPDATE: Turns out that I accidentally switched the Artist and Album Artist metadata tags, which is critical for iTunes. I fixed it and re-uploaded the tarball.

category: /media |
comments | Share/Save/Bookmark

Jun 15, 2009

Great CD Sleeves from Slappa

I still buy CDs.  And until Amazon.com or iTunes starts selling music in a lossless format, I’ll likely continue to do so.  However, I rip CDs to my PC immediately after purchase, leaving me with the problem of where to store the CD.  Dumping the CD jewel case and storing just the CD and liner notes can save a ton of space, so I decided to buy some thin CD sleeves.

You can buy plain paper CD sleeves from numerous sources, but they usually don’t have room for liner notes.  There are also many CD cases with built-in sleeves available, but they’re usually pretty crummy.  The sleeves are often made of cheap plastic that tears easily, and can stick to the CD. They rarely have a slot for the liner notes, and you can’t remove the sleeves from the case.

Slappa makes the best CD sleeves I’ve found.  Each sleeve has a fabric slot for the CD and another slot with a matte polypropylene clear cover for liner notes.  They are stitched around the sides instead of glued or melted, so they won’t come apart over time.  They have an optional interlocking slot system that let’s you easily remove and re-sort a CD collection.  A single sleeve holds two CDs and two liner notes, and Slappa sells a model that holds four CDs for two double-CD sets. These things are fantastic.

Slappa CD sleeves

I intended to buy the sleeves on their own, but it was a tad cheaper to buy them with an included case.  The cases are impressive too – very rugged.  There is a pocket in the front of the case that I use to store the back sides of CD inserts.

Slappa CD sleeve case

Slappa also makes a version of the sleeves for DVDs.  I bought a set of them and tossed the original cases for a bunch of movies and video games.  It’s amazing how many DVDs and video games you can store in a single drawer after ditching their cases.

I ordered everything directly from the Slappa web site, but it looks like they are now also available on eBags.com, possibly with cheaper shipping.

The only downside is what to do with the leftover CD jewel cases. It turns out that they are very difficult to recycle, and can’t be put in the recycling bin.  Apparently, you can mail them to a couple of companies who will then try to re-sell them or grind them up, but I’m not sure I want to pay to mail hundreds of empty cases somewhere.  If you know of any ideas, please post a comment.


category: /media |
comments | Share/Save/Bookmark

May 30, 2008

Roku Soundbridge

Obviously, you can't have a good whole-house music system [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5] without some dedicated music-playing hardware. In choosing a music player, I gave myself the following requirements:

  1. Integrated display. I do not want to turn on a TV just to play music.
  2. Support for numerous audio formats, with a fallback to .WAV uncompressed format.
  3. Support for standard music server protocols, such as UPnP/DLNA, or flat Samba shares. No proprietary servers allowed.
  4. Standard network protocol support. No proprietary wireless stuff allowed.
  5. Priced under $250.

The only music player that hit the sweet spot of these requirements was the Roku SoundBridge. The SoundBridge is a wonderful little music player that can exist in a number of network, OS, and server configurations. It is quite future-proof.

Natively, the SoundBridge can decode MP3, WMA, AAC, and Apple Lossless audio formats. However, it also supports uncompressed .WAV files, which allows for real-time server-side transcoding of any other audio format, such as WMA Lossless or FLAC.

The SoundBridge also supports two widely used server protocols: UPnP/DLNA, and iTunes, both of which are widely available on almost all platforms. It works perfectly with Windows Media Player 11 sharing as well as Apple's iTunes sharing.

The latest firmware for the SoundBridge adds a feature that I never expected to want, but I use all of the time: Internet Radio. Roku maintains a large database of various audio streaming sites, and presents them in an easy-to-navigate format on the SoundBridge. This setup beats the pants off the local radio stations and cable TV music channels.

And finally, the sound quality is outstanding. I rip all of my music from CDs in lossless audio formats, and playback on the SoundBridge is absolutely perfect.

The only downside I've noticed is that once every few months, the SoundBridge will stop connecting to the server. I suspect this is related to my network's wireless configuration. To fix the problem, I simply restart the SoundBridge using the "restart" option on the menu. It only takes a few seconds, so this is more of an annoyance than a major issue.

I have 3 SoundBridges on my network at home, an M1000 and two M500's. Roku sells the latest SoundBridge M1001 on their site, but you can find M500's and M1000's pretty easily on eBay. And if you can get the large-screened M2000, all the better. Audiophiles might actually prefer the older units, as they pass bitstreams in their native resolution, whereas the M1001 upconverts all audio to 48Khz. Most users, however, probably won't notice the difference.

In summary, I highly recommend the Roku Soundbridge as a dedicated music player for a whole-house music system.

category: /media |
comments | Share/Save/Bookmark

Mar 30, 2008

Choosing a Windows Media Player

A key component in my whole-house music system [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5] is a media player on Windows. While I run both Windows and Linux (and soon Mac) at the house, Windows XP is my primary OS.

I found that there is no single media player that meets all of my requirements. I tried tons of various media players, including oldies like WinAmp, and cool new ones like MediaMonkey, foobar2000, and KMPlayer. But I ended up going with two predictable choices: Windows Media Player 11 and iTunes. And of the two, I much prefer WMP11.

My choice of media player came down to the following requirements:

WMP11 is the clear winner in almost every category:

With an iPod/WMP11 plugin such as dopisp, WMP11 can even sync with my iPod nano. However, as I'll explain in a future post, WMP11 can only manage a single "library" at once, which prevents me from using it as my iPod manager. This is fine, as iTunes is still the best iPod manager available, and does a superb job of maintaining podcast subscriptions.

So there you go: my primary media player for my whole-house music solution is Windows Media Player 11… with a little help from iTunes.

category: /media |
comments | Share/Save/Bookmark

Mar 02, 2008

Whole House Music - Solved

A couple of years ago, I started a series of blog posts detailing my approach to managing digital music (see musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]). To recap, my goals were:

  1. Bit-perfect copies of my current and future CD collection stored in a universally accessible location
  2. Ability to access to the music collection from any music playing device made by any manufacturer in any location
  3. Ability to transcode the music to any proprietary file format as needed by a music playing device
  4. Ability to transcode the music to a compressed scheme in cases where storage quantity is more important to me than sound quality, such as a portable music player

Since I started the thread, I got caught up in several projects at work, and was unable to make much progress. However, the tenacity of the open source community kept moving, and I can now say that I have a fully functional music management solution. I'll detail the specifics in some pending posts, but here are the components I'm using:

Hardware

Software

Audio CODECs in Use

category: /media |
comments | Share/Save/Bookmark

Aug 08, 2007

SFGate "Gets" mp3 Issues

It's nice to see another mainstream newspaper publish an article about mp3 music and poor sound quality. Although Joel Selvin briefly confuses two kinds of compressions (volume versus data), his article thoroughly reveals the musical data loss resulting from mp3 lossy compression.

His article also mentions the FLAC format, but it mentions that "several major technological hurdles will have to be cleared" to improve digital audio. This is not the case - the hurdles are business-model related, not technical. Perhaps he'll write a future article about the artificial format restrictions created by Apple, Microsoft, and the record industry in general.

That all said, bravo to the Chron for the article.

http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2007/08/08/DDEJR7KN11.DTL

category: /media |
comments | Share/Save/Bookmark

Jul 01, 2007

Icky Zep

What would happen if you gave Page and Plant a Digitech Expression [:B000EANNMS] pedal instead of, say, John Paul Jones? You might get Icky Thump from The White Stripes [B000OYC3J8], which has some of the best pop rock Zeppelin ripoff tunes since Kingdom Come [B0001Q5YDQ]. Fun. Alt rock radio will (hopefully) never be the same again.


category: /media |
comments | Share/Save/Bookmark

Feb 08, 2007

How About FLAC, Steve?

Two years ago [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5], I set out to use a single Lossless Audio Compression format for all of my music. It turned out that there was no single format that was compatible with all of my playback devices.

Incredibly, this is still true today. Yes, there has been a lot of progress, and although there are many lossless formats available, three leading formats have emerged:

As you might expect, Apple iPods only play the ALAC format. Some, but not all, Microsoft "Plays for Sure" devices only play WMA Lossless. Many other hardware makers are now supporting FLAC, presumably because the format is an open, free standard, but FLAC files themselves are not fully supported by Apple's iTunes or Microsoft's Windows Media Player 11. Sure, you can add FLAC support and parts of ALAC support to WMP11, but not all features are supported, such as metadata.

For the 70-80 million [WikiPedia] of use who use iPods with Windows computers and want to listen to true lossless CD quality music, this format nonsense is a complete pain.

This week, Steve Jobs wrote an essay about Digital Rights Management [WikiPedia], and claimed that "all iPods play music that is free of any DRM and encoded in 'open' licensable formats such as MP3 and AAC." Yet he neglected to mention that the Apple Lossless format is propietary, and that the iPod doesn't support any other lossless format.

Jobs said that if the record industry stopped requiring DRM, and instead allowed online music sellers to provide music in open and non-restricted formats, "Apple will embrace this wholeheartedly". Well, Steve, why not prove your willingness to use "DRM-free music encoded in open licensable formats" by supporting a non-proprientary lossless codec on the iPod and in iTunes?

Like, FLAC, for instance?

category: /media |
3 writebacks and comments | Share/Save/Bookmark

Jan 14, 2007

Downloads from Linn Records

If you're an audiophile [WikiPedia], then you know of Linn, the Scottish maker of superb hi-fi equipment and loudspeakers. They also have a record label called Linn Records that produces high-quality classical and jazz recordings.

Linn Records just announced that they are offering online downloadable purchases of their recordings. And they're doing it right: You can choose from three different downloadable formats, and there is no DRM [WikiPedia], which means you can play the music anywhere you'd like, no restrictions whatsoever. They even provide downloadable test files that enable you to calibrate playback on your PC or media player.

Even better, Linn is using the downloadable format to offer music in a 24-bit / 96KHz format. This format has been typically restricted to SACD [WikiPedia] and DVD-Audio [WikiPedia] format disks, so Linn's new downloads give everyone a chance to hear this better-than-CD-quality audio.

This is an exciting development for online downloads, and I hope Linn is successful with this. I'm going to buy some Martin Taylor music right now.

In an interesting aside, according to Tim Anderson's blog, Apple is refusing to allow Linn to offer music in Apple's Lossless encoding format (ALAC).

category: /media |
3 writebacks and comments | Share/Save/Bookmark

Sep 20, 2006

Browsing the Album Collection in iTunes

Wow, the album cover browser in iTunes 7 is a superb feature. Windows Media Player has had album art for some time, but iTunes delivers it in a much better way. Finally, for the first time, playing music on a computer almost feels like the old days as a teenager, when I would sit on the floor of my bedroom, flipping through 12" album covers while spinning a disk on the turntable. I sure hope iTunes 7 leads to a renaissance of the appreciation of album cover art. Now we just need inside covers and liner notes!

iTunes 7 Album Art

BTW, with Apple's announcement of 8GB iPod nanos and 80GB iPods, you're not still listening to compressed audio, are you?

category: /media |
comments | Share/Save/Bookmark

Aug 28, 2006

DVD Player Shootout - Oppo 970 Wins

I'm holding off on buying a Blu-Ray [WikiPedia] or HD-DVD [WikiPedia] player, so I've decided to upgrade my current 480p component DVD player to an upscaling player. My Samsung DLP looks superb with a 1080i HD signal, so I bought 3 upscaling players to compare their picture quality, and compare them to my current player as well as the DVD playback on the Xbox360. I set up all of the players side by side, and compared their performance using the following DVDs:

The three players I bought were the Oppo 970, the Oppo 971, and the Sony NS75H.

DVD Player Connection Price
Panasonic XP-50 Component $299 (circa 2002, my current player)
Oppo DV-970HD [B000GT5FK0] HDMI $149
Oppo DV-971H [B00078GLJY] DVI to HDMI adapter $199
Sony NS75H [B000EDK8V4] HDMI $129 (HDMI cable not included)
Xbox360 [B000B43OY4] Component $399

All players had special features such as sharpness, noise reduction, etc, disabled.

The XP-50 is a benchmark DVD player, known for its excellent 480p output, as well as premium CD and DVD-Audio output (with an optional disabling of the video circuity). I've moved this to another room to serve as a dedicated audio player, but I still haven't found another player that could do such a great job of covering up compression flaws on most DVDs. The main reason I want to upgrade this player is to get better dark colors. Dark colors from this player tend to cause the Samsung DLP to dither, which I find distracting at my viewing distance of 6.5 feet.

The Oppo 970 was just released by Oppo, and it's a terrific DVD player. It is the first player I've used that gives a real sense of High Definition. No other player came close to the sharpness of the picture on the 970. This player looks outstanding at 1080i, with deep blacks and hardly any noticeable DLP dither. This player makes me feel like I've purchased a whole new collection of DVDs, as all of my existing disks look amazing. The only downside to this player is that it can reveal some subtle problems on DVDs that you may not have seen on an older player. On ATOC, for example, you can see some compression blocks on the floor of Palpatine's office in chapter 4, if you look closely.

The Oppo 971 is supposed to be Oppo's flagship player, and it is very nice. But compared to the 970, it could use an update. At 1080i, there was a noticeable judder in the picture, so I had to test it at 720p. But even at 720p, although the picture looked quite good, it didn't look that much sharper than the component 480p output of my XP-50, and it still has some dark color dithering. It also added some purple motion artifacts to black scenes, such as the spaceflight of the Naboo ship in chapter 3 of ATOC. Judging by the wildly high review scores for this player, I suspect it was created for, and tested with, CRT-based HD monitors. For my DLP, the 970 is a much better match.

The Sony NS75H is a surprisingly good player, with several picture quality enhancement features. However, most of them over-softened the picture, which is already a tad soft, even at 1080i. The Sony remote seemed really unintuitive, but people with universal remotes like the Logitech Harmony won't care. If I had a Sony monitor, I would likely get this player, as it has nice blacks with little dithering, but not quite the sharpness of the Oppo 970.

For DVD viewing, Microsoft really blew it with the Xbox360. The 480p component output is some of the sharpest I've seen, but with the power of this machine, why no upscaling or HDMI? To make us buy the HD-DVD add-on coming this fall? Even then, I doubt I'll watch movies on this machine, as the fan and drive noise is horrendous.

All in all, I would be happy using any of these players (if the Xbox was in a sealed enclosure). But I'm keeping the Oppo 970 as my primary player, as its upscaling performance can't be beat.


category: /media |
comments | Share/Save/Bookmark

Aug 12, 2006

GMediaServer UPnP Server

For a brief few weeks, I was using uShare to serve music files from my Linux box to my OmniFi DMS-1 media player via UPnP. When I got my Xbox360, I noticed that the latest version of uShare added support for the 360, so I upgraded. The new version of uShare required libupnp 1.3, so I had go through the hassle of building both it and uShare. And of course, after everything finally compiled and installed, nothing worked. The Xbox360 did not see the uShare server, and the OmniFi could no longer see it either. I've tried time and again to get it to work, with no positive results. So I gave up and tried GMediaServer.

GMediaServer is the official GNU UPnP media server. It is apparently included in some distros now, and available via apt for Debian. Naturally, this won't work for my old Linux box, so I had to build it myself. There were numerous errors, but I was able to fix them all. Here's what I had to do:

  1. Change all instances of #include <upnp.h> and #include <upnptools.h> to read #include <upnp/upnp.h> and #include <upnp/upnptools.h>
  2. Change line 285 of src/webserver.c so that len = min… reads len = MIN… (capitalize MIN)
  3. Add #include <upnp/ithread.h> to src/metadata.c (I slipped it in after line 40)
  4. Add the following block of code to src/gmediaserver.h (after the includes)

 #ifndef IF_NAMESIZE
 #  ifdef IFNAMSIZ
 #    define IF_NAMESIZE IFNAMSIZ
 #  else
 #    define IF_NAMESIZE 16
 #  endif
 #endif

After making all of the changes and successfully building the app, it works! The OmniFi sees it and plays music fine. Alas, the 360 doesn't see it, but it looks like there is some active code work happening on the 360 front. I'm in no hurry with the 360 anyway, as that thing is so noisy I would never leave it on when I'm listening to music.

category: /media |
comments | Share/Save/Bookmark

May 06, 2006

Stressful Cabling

My favorite blogger is at it again on HD Beat. Fresh after his brilliant "review" recommendation of the junky Helios DVD player, he seems to have misunderstood concept of stress relief cables.

Stress relief on a cable is designed to prevent bending or breaking of the cable at the connector point, or prevent electrical stress on the connection of the wire to the connector. Really thick cables can weigh down on a connection and either break the host connector or even cause equipment to tip over. At the very least, they won't bend easily, causing them to take up a lot of space behind the equipment. A short, flexible stress relief cable can solve many of those issues.

The blogger on HD Beat has decided that some new HDMI [WikiPedia] stress relief cables are designed to "take the 'stress' out of installing different types of cables in tight spots." Cute!

category: /media |
comments | Share/Save/Bookmark

Apr 22, 2006

MusicGaints, Little Potential

I was excited to see the launch of http://www.MusicGiants.com. MusicGiants claims to be the first online music store that sells music in a lossless compression format, which preserves the original sound quality of the CD. That's exactly the online music store I'd like to use. Unfortunately, I won't be purchasing any music from MusicGiants. Here's why:

I searched MusicGiants for Van Halen's 5150 album. They have it available. Cool. Here's what you get:

For comparison, I looked for the same album on Amazon.com [B000002L99]:

Clearly, the price and DRM restrictions make music from MusicGiants a total ripoff. I can't imagine paying a 50% premium for the "convenience" of downloading restricted music. When are the labels going to realize that online music has less value to consumers than music on a CD?


category: /media |
comments | Share/Save/Bookmark

Apr 15, 2006

Bogus Blog Tech Reviews

So many hi-tech product reviews on the net today are completely useless. Take iPod reviews, for example. If you search for reviews of the iPod, about 90% of the ones you'll find will conclude that the iPod "sounds great!" However, almost no review will have any measured data to quantify their opinion, except for reviewers like Bill Machrone, who shows via actual measurement that most iPods are unable to reproduce low bass frequencies.

Case in point for this DVD Player review on the popular HD Beat blog. The reviewer somehow decided that the Helios HVD2085 is a "very good DVD player," partially justified by his "true scientific" single blind test with an SVGA (read: NON-HD!) plasma screen at his local electronics super store. He even lets it slip that his main TV at home is an old 36" Sony that doesn't even support progressive scan input. Great "review", pal.

In the mean time, the crew at Secrets of Home Theater and High Fidelity reviewed this same DVD player in their long-running DVD Shootout performance test. Their conclusion, backed up by actual performance test data? This DVD Player is a complete turd.

The real bummer with the number of lame reviews is that they clutter Google search results with useless info. I wish there was a Google button called "Cull the Crap."

category: /media |
comments | Share/Save/Bookmark

Mar 11, 2006

uShare Linux UPnP Media Server

Last year, I had a heckuva time getting my Linux box to serve music to an OmniFi DMS-1 via UPnP [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]. Since then, there has been a lot of progress with UPnP [WikiPedia] in the open source community. There are now several open source UPnP media servers available, including uShare, GMediaServer, and MediaTomb.

I've been running the same Linux config since 1999, which makes compiling new software more difficult each year. Of all the UPnP servers I tried, only uShare would compile and run, and only after a little coaxing. Fortunately, uShare is a simple and elegant UPnP server, which is exactly what I was looking for.

uShare requires libupnp, which needs a little installation help. Once libupnp was installed, I was able to untar the uShare source and run ./configure without errors.

However, during compilation, I got some errors with the log_verbose function. It turned out to be some typos in the header file trace.h which were easily fixed. Here is a corrected trace.h file: trace.h

After building and running uShare, I added the UPnP multicast route as spec'd by the UPnP docs (route add -net 239.0.0.0 netmask 255.0.0.0 eth0), fired up the OmniFi, and it found the uShare server immediately! MP3 files played perfectly, but WMA files wouldn't. Turns out there is another typo, this time in mime.c: line 88 reads "http-get:*:audio/audio/x-ms-wma:*", but it should read "http-get:*:audio/x-ms-wma:*".

Finally, thanks to the uShare project over at GeexBox.com, I have a simple UPnP Media Server running on my Linux box. I still can't play WMA Lossless files on the OmniFi, but I might try my hand at realtime UPnP transcoding next…

category: /media |
3 writebacks and comments | Share/Save/Bookmark

Aug 17, 2005

Thinking of the AVeL LinkPlayer

My friend Brian alerted me to a really interesting multi-format media player from IO Data called the AVeL LinkPlayer. This thing has some very cool features, such as support for several A/V codecs, Ethernet playback (including server software), and attached USB drives. And it only costs about $250.

If the AVeL LinkPlayer can a) play WMA Lossless audio files, and b) connect to server software running on a Linux box, I'm sold.

Sure wish it could connect to iTunes and mt-daapd...

Update: Looks like StickyC got one!

category: /media |
1 writebacks and comments | Share/Save/Bookmark

Jul 01, 2005

Quiet Computing From Seagate , Zalman, and Nexus

Quiet computing used to be an underground hobby for people fed up with whining fans, buzzing monitors, and screaming hard drive platters. Thankfully, quiet computing has now become a mainstream selling point for modern computers. Witness the latest Dell Dimension 5100 and 9100 series PCs, with "quiet performance" listed as a main feature.

Recently, I purchased a Seagate Barracuda 80GB hard drive (the ST380011A). The Barracudas are well-known to be quiet drives, and I'm really impressed with mine. The noise level of this drive is so low that I can't measure it with my sound pressure meter. The only noise I can hear is the subtle chatter of the drive heads, and that can be mitigated with a Silent Drive enclosure, if desired.

Power Supplies can be extremely noisy. I was once fooled by an Enermax advertisement for their supposedly "Silent" power supply. The fans in that thing roar at over 35db. I replaced it with a totally silent Nexus PS, which is rated at <20db. Like the Seagate drive, the fan noise is not measurable with my sound pressure meter.

For CPU and Video Card cooling, I avoid fans altogether and buy Zalman heat sinks. Zalman makes heat sinks and heat pipe coolers for most mainstream CPUs and video cards. While they can make your hardware run a bit hotter than normal, the temperatures are well within rated operating levels.

I've had good experiences buying quiet components from http://www.endpcnoise.com and http://www.siliconacoustics.com/, but quiet computing has become so popular that I've even seen Zalman components at major retailers like CompUSA.

Did you know that persistent noise in a working environment is a known cause of stress?

category: /media |
comments | Share/Save/Bookmark

Jun 08, 2005

DJ Satan Runs VenusMusic

As I've mentioned in a previous entry, a few years ago I wrote some open-source Linux [Answers] MP3 [Answers] server software called Venus Music Server. I posted it on SourceForge, where its had a over a thousand downloads.

Today I got an email telling me that a nicely modified version of Venus Music is used to run the… somewhat insane… music site DJ Satan. Cool!

category: /media |
comments | Share/Save/Bookmark

Apr 25, 2005

WMA Metainfo Support in mt-daapd

Wow, that was fast! Ron over at the mt-daapd project followed up on my entry about streaming lossless WMA to iTunes by adding full WMA metainfo support to the mt-daapd project. Sweet!

So what does that mean? It means that if you set up a patched version of mplayer on a Linux [Answers] box, and install the latest 'nightly' of the mt-daapd software, you can encode all of your CD's in the bit-perfect Windows Media Lossless format, and stream them to any computer on your network that has iTunes. As a matter of fact, you can stream them to any device that supports Apple's Rendezvous protocol, such as a Roku Soundbridge. Awesome!

Did I mention that mt-daapd also supports FLAC and Apple Lossless formats too?

A Whole House Music Storage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5] solution? Yup, mt-daapd puts us just about there…

category: /media |
comments | Share/Save/Bookmark

Apr 01, 2005

Serving Lossless Audio to iTunes with mt-daapd

Continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

Among the requirements I've set for a Whole-House Music Storage system, two are:

  1. Support bit-perfect copies of my CD collection (likely via lossless compression)
  2. Support playback via iTunes

iTunes has native support for three bit-perfect formats: WAV, AIFF, and Apple Lossless Encoding. Of the three, WAV is the most widely supported among other audio players. Unfortunately, WAV files are not only large, they also do not contain meta-data like you'd find in an mp3 file. Meta-data is used to search and display song titles, artists, genres, and other information. Luckily, as I found in my research on audio server software, there are other ways to get music playback in iTunes, including support for other audio formats.

Thanks to the efforts of the open-source community (and Apple themselves for open-sourcing some key technology), you can stream audio to iTunes from a seperate server. This is done by installing and configuring software from either the daapd or mt-daapd projects. Both compile on Linux [Answers] and other Unix-ish operating systems (like OS-X [Answers]!), and both allow you to stream digital audio to computers running iTunes. They can also serve audio to other players that support Apple's streaming audio system, such as the Roku SoundBridge. mt-daapd is the more mature software, as its multi-threading ability gives it better performance. But there's more…

Recently, mt-daapd gained the ability to transcode [Answers] audio on-the-fly. This means that, in real time, mt-daapd can convert various digital audio formats to the WAV format, which is natively supported by iTunes. This gives mt-daapd the ability to serve any type of audio file format on the server to iTunes. Currently, mt-daapd has built-in support for FLAC and Ogg Vorbis audio files, so if you wanted, you could encode your whole music collection in the Lossless FLAC format and listen to it via iTunes. This works even though FLAC is not natively supported by iTunes. How cool is that? But there's even more…

The transcoder in mt-daapd is easily extensible. By editing a simple configuration file and a helper script, you can add support for new audio formats. With a patch to the powerful open-source media player MPlayer, I am now able to stream files encoded in the widely supported WMA Lossless format to iTunes! (More details here). Awesome! Meta-data from WMA files is not yet supported (as mt-daapd uses its own database to store meta-data from various audio formats), but there's nothing stopping this from happening soon other than some dedicated time from the enthusiastic mt-daapd developers.

For me, this makes mt-daapd one of the killer apps in a Whole-House Music Storage system, as it solves a key problem of using a single lossless compression format supported by all possible audio players. Way to go, mt-daapd crew!

category: /media |
3 writebacks and comments | Share/Save/Bookmark

Mar 27, 2005

UPnP Media Server Madness - Testing WMA Lossless

Continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

A few of the potential music-playing devices on my home network support UPnP as their communication protocol, and one device, the OmniFi DMS1, requires it. Unfortunately, the results of my UPnP Media Server testing revealed that UPnP is anything but 'Universal Plug and Play'.

As my goals for a Whole-House Music Storage system are to store and play my music in a lossless format on any conceivable platform, I decided to test some UPnP music servers with an album encoded in the widely supported format lossless WMA9 (specifically, the album Every Step of the Way [B00006IIXB] by the brilliant acoustic guitarist Peppino D'Agostino). The UPnP client I used was the OmniFi DMS1 with latest firmware (2.1.012).

For fun, I also encoded the same album in MP3 using iTunes set at 256Kb min VBR. Via a blind listening test with the OmniFi, I could easily tell the difference in quality between the lossless WMA and lossy MP3, even in a somewhat noisy room.

I tested UPnP Media Servers on both Linux and Windows XP. I tried to only test software that would act as a true hands-free server (unlike the cool Windows Media Player plugin On2Share, for example). Here are the results:

UPnP Media Server Version Platform Results for WMA Lossless Success or Failure
TwonkyVision MusicServer 2.7 Linux Would not run. Requires GLIBC 2.2, and my older environment is using 2.1 Fail
Intel Micro AV Media Server Intel UPnP Authoring Tools Build 1725 Linux Needed hand-tweaking to compile the source. Plays first few seconds of an MP3 before stuttering badly. Would cause OmniFi to hang. Sees lossless WMA files, but OmniFi displays UNABLE TO PLAY message when trying to play them. Eventually crashes with 'Broken pipe' message. Fail
SimpleCenter Unable to verify Windows XP Serves lossless WMA perfectly. Heavyweight Java client uses over 50MB RAM. Will not run as a Windows service, therefore requires a logged-in user. No folder view on client. Success
TwonkyVision MediaServer 2.7 Windows XP Sees lossless WMA files, but OmniFi displays UNABLE TO PLAY message when trying to play them. Interesting note: partially served a WAV file to OmniFi, even though WAV is not supported by OmniFi. Very lightweight client at ~7MB RAM. Fail
Philips Media Manager 3.2.0.0138 Windows XP Software does not see or serve lossless WMA files (even though it claims to support WMA). Very heavy Java client at ~100MB RAM. Is actually a rebranded version of SimpleCenter with video support. Actually disables other installs of SimpleCenter! Fail
Intel AV Media Server Intel UPnP Tools Build 1768 Windows XP Sees lossless WMA files, but OmniFi displays UNABLE TO PLAY message when trying to play them. Proof-of-concept app, requires .NET runtime. Fail
Windows Media Connect October 2004 Windows XP OmniFi is unable to see WMC, even though it is recognized by WMC server as authorized client device, and latest OmniFi firmware claims WMC support. Runs as a Windows service. Trio of apps totaling ~75MB RAM. Requires .NET runtime. Fail
Allegro Media Server 1.0.2 Windows XP Does not support WMA. Served WAV file to OmniFi flawlessly, even though WAV not supported by OmniFi. Uses only 11MB RAM. Fail

The results are pretty pitiful, considering the heavyweight companies backing the UPnP Forum. The only UPnP software that successfully served lossless WMA files to the OmniFi DMS1 was SimpleCenter, an easy-to-use, yet bloated Java app that runs only as a user client on Windows XP. Are the poor results due to server software, hardware, or hardware firmware? There's no way to tell in a single test case like this.

Is all lost here? Not yet. All of the software I tried appears to be in active development, so I expect to see future revisions on a regular basis. There are also several open UPnP APIs available from Intel, CyberLink, and others which will hopefully lead to a new batch of software from other authors and vendors. In addition, I may find some configuration cock-ups on my part that may allow some of the above software to perform better (GLIBC 2.2 for TwonkyVision, reinstall of Philips Media Manager, etc). I'll try again when I'm less frustrated.

The tentative conclusion: UPnP is not an appropriate solution for a Whole-House Music Storage system with lossless music encoding, at least for now.

SimpleCenter Update: My OmniFi DMS1 now inexplicably refuses to play Lossless WMA files from SimpleCenter, displaying the UNABLE TO PLAY message instead.
Windows Media Connect Update: Although the OmniFi DMS1 refuses to see the WMC that is installed on my main computer, it does see the WMC installed on my laptop. However, the OmniFi displays the UNABLE TO PLAY message when trying to play a Lossless WMA file via Windows Media Connect.
SimpleCenter Update #2: OmniFi Tech Support replied that 'The DMS1 and DMP1 do not support Lossless WMA files, and there are no plans to add support for any other file formats.' Either I've gone completely mad or what, because I'm almost positive I was able to play Lossless WMA from SimpleCenter before. I remember because there was a spelling difference in the artist's name between the MP3 and WMA test file (Peppino d'Agostino vs, Peppino D'Agostino), and both were listed on the DMS1 display. WTF?

category: /media |
4 writebacks and comments | Share/Save/Bookmark

Mar 26, 2005

OmniFi User Group on Yahoo

Looking for a user forum for OmniFi devices? You can find an active one (and apparently only one) on Yahoo at http://finance.groups.yahoo.com/group/omnifi/.

Apparently, OmniFi closed down their own user forum a few months ago. After googling [Google] like crazy, I couldn't find another OmniFi forum anywhere. Finally, I noticed a post in the woot forum that linked to the Yahoo group. Is it me, or is Google starting to suck a little bit?

category: /media |
1 writebacks and comments | Share/Save/Bookmark

Mar 16, 2005

Existing Digital Audio Server Software

Continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

Taking a different view on file format and codec [WikiPedia] support than what I've found on the client side, here is the software that I've used or am aware of on the server side.

Communication WinXP Server Linux Server Lossy Lossless
Apple Rendezvous iTunes daapd or mt-daapd MP3, AAC Apple Lossless, WAV, AIFF
SMB Directory Share Samba All Formats All Formats
UPnP SimpleCenter or Windows Media Connect TwonkyVision MP3, WMA9 WMA9 (also WAV, LPCM on TwonkyVision)
HTTP SlimServer SlimServer MP3, WMA9, AAC, Ogg Vorbis, DTS WMA9, WAV, FLAC, Apple Lossless, PCM

Note 1: There are many other solutions for HTTP streaming, such as Icecast and Shoutcast.
Note 2: RokuLabs has a nice breakdown of different servers on their web site.

Like the client side, there is universal support for MP3. And again like the client side, everyone but Apple supports lossless WMA9. However, all servers seems to support WAV, which is interesting.

If I want to rip my music to a lossless format on a Digital Audio Storage server, there appears to be only two solutions to support playback on all possible clients:

  1. Run server software that can transcode [WikiPedia] the digital audio on-the-fly, either from WMA9 to Apple Lossless and MP3, or Apple Lossless to WMA9 and MP3
  2. Store the digital audio in multiple formats, which in this case would be 3 copies of each file, in WMA9, Apple Lossless, and MP3.

Noting the storage requirements for 350 CDs, there shouldn't be an issue with storing a duplicate copy of my music in MP3 (other than automating the maintenance of two copies). However, it seems really inefficient to store two lossless copies.

Next step: I need to figure out which server software would be the easiest to configure for transcoding. mt-daapd looks very promising… B-)

category: /media |
comments | Share/Save/Bookmark

Mar 13, 2005

Supporting Digital Audio Clients

Continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

To understand which file formats (actually codecs [WikiPedia]) a Whole House Music Storage system would need to support, I've compiled a list of music-playing clients that I own or plan to use, the most common file formats they claim to support natively as of today, and how they access digital audio data. Many support plug-ins to add additional file format support, and many have announced future support for other formats, but for now I've decided not to take that in to consideration.

Client Lossy Lossless Sync / Stream Communication
iTunes for Windows MP3, AAC Apple Lossless, WAV, AIFF Stream Apple Rendezvous, HTTP
Windows Media Player 10 MP3, WMA9 WMA9, WAV Stream HTTP, SMB
OmniFi DMS1 MP3, WMA9 WMA9 Stream UPnP
OmniFi DMP1 MP3, WMA9 WMA9 Sync USB, WiFi
Roku PhotoBridge HD (HD1000) MP3, AAC WAV, AIFF Stream HTTP, Windows Media Connect (UPnP AV), SMB
Roku SoundBridge MP3, WMA9, AAC WMA9, AIFF, WAV Stream Apple Rendezvous, HTTP, Windows Media Connect (UPnP AV), SMB
Apple iPod MP3, AAC Apple Lossless Sync USB, FireWire
Media Center Extender For Xbox MP3, WMA9 WMA9, WAV Stream UPnP AV, Windows Media Center Servers only?
Linux mplayer MP3, WMA9, AAC, Ogg Vorbis WMA9, WAV, AIFF, FLAC Stream HTTP, SMB
Tapwave Music Player MP3 N/A Sync USB
SlimDevices SqueezeBox MP3, WMA9, AAC, Ogg Vorbis, DTS WMA9, WAV, FLAC, Apple Lossless, PCM Stream HTTP

In addition to 100% support of MP3, it is very interesting to note the near universal support of Windows Media Audio, except for Apple products. It's also interesting to note the total mish-mash of communication methods used by all of the different clients. A Whole House Music Storage system will need to communicate in everything but the binary language of moisture evaporators.

category: /media |
comments | Share/Save/Bookmark

Streaming and Syncing Digital Audio

continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

To support my original goals for a Whole-House Music Storage system, it looks like I'll need to support two methods to access my music: streaming and syncing.

Music players that are connected to a LAN or the intarnets can stream digital audio directly from a storage location. Streaming bandwidth would range from the >1Mb/s LAN/WiFi speed to <128Kb upstream DSL/Cable Modem speed. Over the LAN, digital audio can be streamed uncompressed or via lossless-compression, but via upstream internet, lossy-compression is required.

Portable music players and other devices that are not always connected to the net (such as in-car players and cel phones and PDAs with SD Cards) would need to sync digital audio from the storage location to be played later offline. Today, most of these devices have limited storage capacities which requires the use of lossy-compression. (In the near future, this will not be necessary). Many players use a variety of proprietary compression formats, but fortunately, nearly all offline devices support the mp3 lossy-compression format.

category: /media |
comments | Share/Save/Bookmark

Digital Audio Storage Requirements

Continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

The cheapest and most efficient way to acquire and store uncompressed digital audio is to buy it on a CD… and leave it there. For each CD you buy, you are basically buying a 650MB (give or take) disk preloaded with digital audio, so you end up with an unlimited amount of non-volatile digital audio storage. Get it?

If I want to copy all of my digital audio from CDs to, say, a big hard drive, how much space will I need? I'll assume each CD averages 650MB of digital audio, so 350 CDs contain about 288GB of data. If I use a lossless-compression file format for storage, and I assume that I achieve an average compression rate of 2:1, then I could compress 350 CD's worth of data down to 114GB, and still maintain bit-perfect audio quality.

For comparison, the import settings I'm using in iTunes (256Kb/s minimum VBR mp3, lossy-compression) achieves about a 7:1 compression ratio. That setting requires about 42GB of storage to hold 350 CD's worth of digital audio data.

category: /media |
comments | Share/Save/Bookmark

Compressed Music is Dead

Continued from musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5]

In the days of 33.6KB dial-up and 20GB hard drives on personal computers, the mp3 lossy-compression music format solved a problem: how to store and transmit a reasonable amount of digital audio and still preserve an acceptable level of sound quality. The use of lossy-compression is a trade-off: audio quality is sacrificed for the sake of smaller data size. Today, this data size problem still exists on portable music players that have limited capacities, such as 512MB flash players and the 4GB iPod mini.

However, with today's ubiquitous broadband access and hard drives exceeding 200GB, we've reached an interesting milestone on PCs: there is now no need to use lossy-compression for music on a PC. That means that there is no need to sacrifice sound quality to store and listen to music on a PC. To take this further (thinking along the lines of Moore's Law), by this time next year or so, there will be no need for lossy-compression on portable audio devices either. Every music-playing device will have plenty of capacity to store lots of digital audio that is either uncompressed or stored in a lossless-compression format (a format that preserves the original digital audio perfectly bit-for-bit). Excellent!

Unfortunately, there is an issue: there are several uncompressed and lossless-compression file formats, and none are as universally supported as lossy mp3. So if you want to store your music collection in a bit-perfect format, and use it on a variety of playback devices, what file format should you use? I'll document my thoughts as I investigate the options.

category: /media |
comments | Share/Save/Bookmark

Whole-House Music Storage and Access

First in a series of musicstorage [musicstorage-solved1, musicstorage2, musicstorage8, musicstorage-solved3, musicstorage-solved2, musicstorage3, musicstorage7, musicstorage4, musicstorage6, musicstorage1, musicstorage5] entries.

I have a problem that I think exists in many households today. I own about 350 music CDs, and I want to be able to access that music any time I want from anywhere in the house, on a portable device, in the car, and remotely via the internet.

However, sound quality is of the utmost importance to me. Wherever possible, I want the music to be perfect bit-for-bit copies of the music originally on the CD. I will not settle for lossy-compression (read: mp3) when I don't have to. I will also not settle for any copy restrictions, such as those found on Napster and the iTunes Music Store.

Note #1: I do not plan to use SACD, DVD-Audio, or multi-channel audio sources in this scheme. I'm fine with using those solely in a tuned listening environment… for now.
Note #2: I rarely buy music online. Paying $0.99 per song for compressed music with dubious sound quality and restricted copying simply doesn't make sense to me.

So here's what I want:

  1. Bit-perfect copies of my current and future CD collection stored in a universally accessible location
  2. Ability to access to the music collection from any music playing device made by any manufacturer in any location
  3. Ability to transcode the music to any proprietary file format as needed by a music playing device
  4. Ability to transcode the music to a compressed scheme in cases where storage quantity is more important to me than sound quality, such as a portable music player

I am going to find or create a solution to the above requirements. Stay tuned.

category: /media |
1 writebacks and comments | Share/Save/Bookmark

Jan 19, 2005

Custom Media Server Project

My long time friend StickyC [Google] has a very active techno-humor-motorcycle-drinking blog over at http://www.stickyc.com. He also has a wiki, where he's posted a run-down of his fairly elaborate Home Media Center project.

I've been meaning to do this for about 5 years now, but the big holdup for me has been an affordable, attractive, and silent HTPC [WikiPedia] case. I guess the time has come.

category: /media |
comments | Share/Save/Bookmark

Nov 12, 2004

Venus Music Server

A couple of years ago, I was looking for a simple linux jukebox script for my MP3 collection. Since it would be running on an old distro, and be exposed on a public port (at the time), I needed the following requirements:

I couldn't find one, so I wrote my own and called it the Venus Music Server. You can read more about it and see screenshots at the Venus Music page on SourceForge.

Oh, did I mention Venus Music is open source?

category: /media |
comments | Share/Save/Bookmark
MikeyP.com

About This Site
Main Page
About MikeyP
Subscribe to Feed