Seven Days of Rdio

Posted: August 9th, 2011 | Author: | Filed under: Music, Software | Tags: , , | No Comments »

As a regular listener of tech podcasts from the United States, I have long been interested in the idea of streaming music services, but have been frustrated by the fact that very few of them seem to be able to break the border and come north to Canada. In the past, I’ve held both a free and paid subscription to Last.fm, but found its music playback system to be extremely limited, due in part to licensing restrictions that dictate how many songs from any album or artist can be played in succession.

A few days ago, I was catching up on my subscription to Jesse Brown’s Search Engine podcast, and found myself listening to Episode 95: Cloud Music Comes to Canada. In this episode, Jesse interviewed Rdio CEO Drew Larner about the streaming service’s Canadian launch. Immediately interested, I headed over to the company’s website and signed up for their free 7-day trial subscription. The following is a collection of my thoughts about the service, in no particular order:

Beautiful and Functional:

I have to hand it to the Rdio web team – their in-browser media player is one of the best web apps that I’ve ever used. The screen is organized into two panels: A thin side panel that shows currently playing media and controls, and a wider main area that allows you to navigate through the Rdio music library. One of the best parts is that this view is built entirely on Javascript, so you can browser through available music and queue up songs to play without any interruption in audio playback.

A picture of the Rdio Dashboard, with media playback controls on the left, and the main navigation window to the right.

Speaking of audio playback, song quality is crystal clear, while tracks seem to start instantly, without any kind of buffering time. I’ve used a lot of media players in my time, and I think that this one might have the best user interface that I’ve ever seen. Navigating the massive library of available songs is simple and painless, and the prominently placed search bar provides a rich collection of query results:

Rdio Search Results for the term "love": Results include top artists, albums, and songs with the search term in their titles

The only major UI problem that I’ve encountered stems from broken links placed throughout the site. On more than one occasion, I’ve been reading an artist bio or album review, and clicked on a link to one of the albums mentioned therein, only to be transported off to a page for an album that shares the same name, but is by an entirely different artist. My guess is that all written content on the site is scanned wiki-style for clickable terms like album and artist names, and that the links are established without human intervention. In general, this process works, except when it fails to correctly choose between multiple potential targets.

A Truly Massive Collection:

Rdio has done an excellent job of collecting songs for their collection. During the aforementioned interview, CEO Drew Larner emphasized the fact that the company purposely negotiated US and Canadian rights to music at the same time. The result is that the vast majority of their collection is available in both countries, without the usual legal disconnect that other streaming services like Netflix suffer from.

Some of the usual suspects are missing from the Rdio library, namely the Beatles and Led Zeppelin. For the life of me, I’ll never understand what the publishing companies that own these pieces think that they’re gaining by holding them back from online streaming services. It’s a purely artificial shortage – like many fans of these bands, I already own my favourite Beatles and Zeppelin records in both digital and physical formats, so it’s not like holding them back is generating additional sales. It’s nothing more than a piss off for fans who would like to enjoy their music on alternative services.

Search results for "The Beatles": The available albums are almost entirely interviews or cover albums

With that said, the breadth of music available on Rdio is truly impressive. I’ve been able to find nearly everything that I’ve looked for, as well as a great deal of content that I’ve never heard, and intend to explore in the near future.

Finding New Music to Enjoy:

This is one of the few places in which Rdio makes a misstep. Other online streaming services that I’ve tried in the past (most notably the venerable Yahoo Launchcast) would start a new user’s experience by asking for a few artists or albums that the user enjoyed. Once this data was stored, the service would begin to recommend a mix of familiar and closely related songs that the user would rate in turn, thereby automatically growing their collection while introducing them to a great deal of new music in short order.

Rdio doesn’t seem to provide any such service. Even after I linked it to my existing Last.fm account, it scrobbled what I was listening to, but did not pull in favourite artists or songs from that account. Nearly every artist, album, and song on the site can be played as an “Rdio Station”, which plays of mix of the chosen content along with related material, and new users can choose to follow existing users and benefit from their plays and music suggestions. Despite these methods of discovering new music, there doesn’t seem to be a “genius playback” – a way to playback songs that you’ve added to your collection plus new recommended material.

Even after spending a few days with the service and growing my online “collection” of music to just under 250 songs, my account’s “Rdio Station” (music drawn from artists/albums that I’ve listened to, songs that I’ve added to my collection, and related material) was maddeningly boring to listen to.

In the image above, you can see that there are only 8 artists in a list of 16 upcoming songs – indeed, content from these 8 artists was repeated, and some individual songs (like that terrible What’s My Name song by Rhianna) came up in shuffle multiple times over a 2-hour listening period, even after I physically removed them from the list on more than one occasion. In my opinion, the concept of a personal Rdio station needs more work. It simply does not present a variable enough set of music, and does not expose me to music that I have not previously found on the site.

That said, the amazing breadth of the Rdio collection and the powerful search tools come very close to  compensating for this problem by making it incredibly easy to call up nearly any song that pops into your mind while listening. It doesn’t take long to get lost, wikipedia style, by following links in artist bios and one can quickly find themselves with more queued albums than they will ever realistically have time to listen to.

Finally, Rdio doesn’t allow you to rate music in a granular fashion like traditional media players do. Instead, it provides the more binary option of adding a song to your collection. This resembles the way that Last.fm allows users to “Heart” songs as favourites. Were I to adopt Rdio as a long-term replacement of my existing music library, I suspect that I would grow to dislike this design, as it does not seem (at least on the surface) to offer enough granularity to easily sort out a large music collection. With that said, a better automatic shuffle feature could solve the problem entirely.

The Big Question:

Will Rdio replace my traditional music collection? Probably not. I might use it to augment my collection, and to explore new music, as well as to listen to newly released albums before deciding whether or not to purchase them. The bottom line is that I probably won’t opt into the $5/month permanent account that is necessary to continue using the service once my trial runs out sometime tomorrow. The reasons behind this decision are varied, but ultimately come back to my experience with the site’s Rdio Station feature. Its lackluster performance means that listening to Rdio becomes a chore. I can’t just throw it on and sit back and listen; I have to intervene and queue up songs that I want to listen to every time my list runs dry.

With that said, I will most certainly come back to this service in 6 month’s time and give it another shot. It is one of the coolest sites that I’ve seen in a long time, and I do hope that it will continue to improve to the point where I am comfortable leaving my traditional media player behind.


Filling a Zune from Linux

Posted: January 1st, 2010 | Author: | Filed under: Linux, Music, Software | Tags: , , , , , , , , , , , , , , | 1 Comment »

Thinking that I was up for a challenge, I decided to spend the day figuring out how to put the music in my Banshee library onto a Microsoft Zune. Since my library contains a good number of FLAC files that I’ve ripped in from my CD collection, my solution called for a caching system that converts the FLAC files to mp3s and stores them so that the playlist can be changed without having to re-convert the FLAC files into something that the Zune can play on every sync. My weapons of choice for the project were a Windows XP instance running inside of Sun Virtual Box, and 126 lines of perl script.

The Steps:

  1. Create a WinXP VM that has the Zune software installed and can see two shared folders on my Linux machine:
    1. My normal Music folder, which contain my entire collection
    2. The cache folders, which contain all of the FLAC files in my collection, but converted to mp3 so that the Zune can play them
  2. Open the Banshee database, located at ~/.config/banshee-1/banshee.db
  3. Select all of the FLAC files in the playlist that we’d like to put on the Zune
  4. For each, check if it has been converted and cached
    1. If so, simply add the path to the cached copy of the track to an m3u file in the cache folder
    2. If not, convert the track, and then add the path to the cached copy of the track to an m3u file in the cache folder
  5. Select all of the mp3 files in the playlist that we’d like to put on the Zune
  6. Put those in a separate m3u file that is located in the Music folder.
  7. Boot up the Zune software on the VM. It should autoscan it’s monitored folders, find the m3u playlists, and put them in its library
  8. Sync the playlists with the Zune by dragging and dropping them to the device icon in the lower left corner of the screen

As previously mentioned, steps 2 through 6 were accomplished by way of a perl script that I can run as often as I like:

#/usr/local/bin/perl

#Requirements: libdbd-sqlite3-perl, flac, lame

#We need database support
use DBI;

#Database path – change this to reflect your user environment
my $dbpath = “dbi:SQLite:dbname=/home/jon/.config/banshee-1/banshee.db”;

#Playlist name – change this to reflect the playlist that you want to export
my $plistname = “Favorites”;

#Cache Path – the path to the directory where you’ve been caching converted FLAC files
my $cachepath = “/home/jon/Storage/mp3Cache/”;

#Music Path – the path to the folder where your music collection is actually stored
my $musicpath = “/home/jon/Music/”;

#Connect to the database – no username/password
my $dbh = DBI->connect($dbpath,”",”",{RaiseError => 1, AutoCommit => 0});

if(!$dbh) {
print “Could not connect to database $dbpath”,”\n”,”Exiting”;
exit;
}

#Pull the list of FLAC files for conversion and caching
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%flac’”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $cachepath.$plistname.’_cached.m3u’ or die “Error trying to open cache m3u playlist for overwrite. Do you have write permissions in $cachepath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#add /music to $cachepath so that files are in a subdirectory, away from the m3u file
$cachepath = $cachepath.”music/”;
if( ! -e $cachepath ) {
`mkdir “$cachepath”`;
}

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri by removing the file:// prefix and reverting the uri escaping
$uri = substr $uri, 7;
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;

#fix time into seconds
$length = int($length/1000);

#check if the flac file has already been converted and cached at cachepath
#if not, convert it and put it at cachepath.
my $path = $cachepath . $artist . ‘/’ . $album . ‘/’ . $title . ‘.mp3′;
if( ! -e $path ) {
#file dne, convert it
print “\nTrack: $title by $artist has not yet been cached, converting…”,”\n”;

#make sure that the file actually exists before attempting to convert it
if( ! -e $uri ) {
print “WARNING: Track $title by $artist does not exist at $uri”,”\n”;
} else {

#ensure that cache album/artist directories exist
my $partpath = $cachepath.$artist;
if( ! -d $partpath ) {
`mkdir “$partpath”`;
}
$partpath = $partpath.’/’.$album;
if( ! -d $partpath ) {
`mkdir “$partpath”`;l
}

#do the conversion – we’re chaining flac and lame here, reading in the flac file from $uri, and putting the resulting mp3 at $path
`flac -cd “$uri” | lame -h – “$path”`;
}
}

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u ‘\\music\\’.$artist.’\\’.$album.’\\’.$title.’.mp3′,”\r\n\r\n”;
}

#close the m3u file in the cachepath directory
close $m3u;

#TODO: scan the m3u file and delete any files that aren’t in it from the cache directory

#Pull the list of MP3 files and dump them into an m3u file
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%mp3′”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $musicpath.$plistname.’.m3u’ or die “Error trying to open music folder m3u playlist for overwrite. Do you have write permissions in $musicpath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri to become a windows file path
$uri = substr $uri, 7;            #remove file:// prefix
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;    #correct uri encoding
$uri =~ s/$musicpath//g;            #remove musicpath prefix
$uri =~ s/\//\\/g;                #change forward slashes to backslashes
$uri = ‘\\’.$uri;                #add the leading backslash

#fix time into seconds
$length = int($length/1000);

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u $uri,”\r\n\r\n”;
}

#close the m3u file and the database connection
close $m3u;
$dbh->disconnect;

Sorry for the horrible formatting.

The only snag that I hit during the entire process was really my fault – I have a tendency to overcomplicate things, and did so on this project by initially writing the script to output a *.zpl file instead of a *.m3u file. That didn’t work at all, and I ended up simplifying the script greatly by just outputting an *.m3u file and hoping for the best.

On the off chance that the Zune jukebox software refuses to properly update its playlists after you change the *.m3u files, first try deleting them from the application, and then restarting it. If that doesn’t work, you can write a Windows batch script with code similar to the following:

del /q “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists\*”
xcopy “\\Vboxsvr\mp3cache\Favorites_cached.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”
xcopy “\\Vboxsvr\music\Favorites.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”

This script deletes all files from the Zune playlists directory, and then copies each of the *.m3u files that we created with the above perl script directly into the Zune playlists directory. This should force the application to get it’s act together.

Overall, I’m happy with this patchwork job. It allows me to use the Zune on Linux, which is great because the Zune really is a beautiful piece of hardware. Now if only the libmtp guys could get it working natively, without a WinXP VM…

This piece originally appeared at The Linux Experiment


Reinventing the Wheel: A Better Media Player

Posted: November 22nd, 2009 | Author: | Filed under: Music, Software | Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , | No Comments »

As I’ve posted in the past, I am a picky media player user. I’ve tried most every free player under the sun, along with some not so free solutions and have yet to be entirely satisfied with any of the available products. To that end, I’ve started to think about the possibility of writing my own media player. The following are some of the considerations that I’ve been mulling over:

Base Requirements:

  • Playback of both mp3 and flac files. Support for other formats could be added as required by me or other users, possibly with us of some sort of plugin engine.
  • Some kind of a rating system, preferably with a high level of granularity. I’m not married to the standard 5-stars idea, and may explore alternative ideas, including tagging.
  • Truly smart playlists that allow for the standard global AND/OR rules, as well as more advanced expressions that support brackets and branching logic.
  • Smart importing from existing iTunes, Songbird, Media Monkey, and Windows Media Player libraries, various playlist formats, and other types of media collections.

Feature Wish List:

  • Blackberry Sync: When not at home, I listen to music from a flash card on my Blackberry Curve. The device can be filled with media by simply dumping it all on the media card, which appears as a removable drive. As previously mentioned, I listen to a mix of mp3 files and lossless flac files. When dumping these files to the Blackberry, I would like to see one thread dedicated to converting the flac files to mp3s, while another thread actually fills the device, resulting in a sync process that is not significantly slowed by media conversions. Additionally, since I have hard drive space to spare, I would like to cache some or all of the resulting mp3 files so that they don’t have to be converted again on the next sync. I would also like to see the ability to import files from the Blackberry to the library so that I could pick up media on the go and bring it home with me.
  • Library Export/Backup: With a library of 10K+ tagged and rated songs, losing the library of meta data about my music would be a traumatic experience indeed. To solve my paranoia over losing this data, I would like to implement the export of single playlists and entire libraries to all of the major playlist formats, as well as to a structured XML document, similar to the one that iTunes maintains. Some kind of automated backup feature like the one that iTunes has would also be nice.
  • Online Integration: I currently report all of my song plays to last.fm, which is an excellent resource for discovering new music. I would like my media player to link in with last.fm and other online resources, but am also open to developing my own online resource that lets users to easily compare and organize their collections, correct their meta data, and actively discover new music that other users have rated.
  • Library Sharing/Streaming: We run a large network with lots of computers, and I’d like the ability to listen to my music from anywhere in the house. I really like the work that Subsonic has done in this area, and hope to implement some or all of it’s features, while at the same time linking it into my database so that I can see my playlists and edit my meta data from anywhere in the house, and indeed, from anywhere in the world.
  • Cross-Platform and Open-Sourced: Given all of my recent experience with Debian Linux, I’d like to see my media platform running on both Windows and Linux. This one might take me awhile to accomplish, but is definitely a goal of mine, given that I am now a confirmed Linux user who still keeps a couple of Windows platforms lying around.

Implementation:

Of course, with all of these goals in mind, the next step is to consider which platform I’d like to build on. This basically comes down to a number of choices, some cross-platform, some not:

  • Visual Studio .NET: My development IDE of choice, Visual Studio provides extremely quick GUI creation and a great number of useful libraries that cut out a lot of the nitty gritty time consuming base code necessary for a project as large as a media player. Additionally, the Windows Media Player control allows for drop-in playback of media, and I have a ton of example code lying around that implements most of the features listed above. Unfortunately, while .NET 2.0 is supported on Linux under the Mono platform, I don’t know how far that support goes in terms of media management and playback.
  • SFML: The Simple Fast Media Library is available as libraries that are pre-compiled to run on Windows, Linux, and Mac, with support for Visual Studio, C/C++, Python, and Ruby. It includes packages for windowing, graphics, networking, and most importantly, audio capture and playback. This is a definite contender as it is open source, meaning that I could build the libraries directly into my code, and simply recompile for different platforms. Of course, the downside is that I’ll have to code in C++, and without any kind of graphical interface builder.
  • Juce: Jules Utility Class Extensions is like a more featured version of SFML that provides packages for just about every conceivable task, including some serious audio libraries that support all kinds of playback, effects, and hardware accelerated features. In addition, it does audio CD reading and writing out of the box on Mac and PC platforms. If I were to strike out from Visual Studio, this would probably be my library of choice, as it can do nearly everything that VS can do, but is fully open sourced and supported on just about every available platform.
  • Java: I have no idea how realistic this idea is. I do know that in the past, I’ve created Java apps that can play both wav and mp3 files, and stream those files over a network connection. That said, as much as I enjoy coding in Java, it is widely regarded as being slow and clunky – not exactly traits that I’d like associated with a media player that will be running all day. On the other hand, Java is not C/C++ (a huge bonus as far as I’m concerned), is fully object oriented, has decent audio support, and makes networking extremely easy. That said, programming GUI’s of any kind of complexity in Java is not a task to be taken on lightly.

Well, that about sums it up. This project is definitely something that I intend to undertake in the coming months, and until then, I’ll keep thinking about my requirements and what library I’d like to use to implement it. If anybody else has experience with some useful audio libraries that they’d like to share, please do so in the comments.


They Just Don’t Get It

Posted: July 31st, 2009 | Author: | Filed under: Music, Software | Tags: , , , , , , , , | No Comments »

This quote from MPAA & RIAA lawyer Steven J Metalitz is why I get so worked up about DRM systems:

We reject the view, that copyright owners and their licensees are required to provide consumers with perpetual access to creative works. No other product or service providers are held to such lofty standards. No one expects computers or other electronics devices to work properly in perpetuity, and there is no reason that any particular mode of distributing copyrighted works should be required to do so.

To recognize the proposed exemption would surely discourage any content provider from entering the marketplace for online distribution… unless it was committed to do so… forever. This would not be good for consumers, who would find a marketplace with less innovation and fewer choices and options.

The quote is taken from a discussion about whether content providers who coat their wares with DRM should be required by law to ensure that purchased media continues to work for perpetuity. Their argument of course is that no piece of machinery can be expected to work forever, and so bully to the customer who purchased DRM’d music or video. However, with all of the major online music retailers selling DRM-free Mp3s, many honest people (read: people who didn’t say fuck it to DRM and pirate all of their music – the very people that allowed big content to continue to survive in the digital era) are left with a significant amount of media that cannot be unlocked due to anti-circumvention laws, and must now be replaced as the old DRM servers are slowly taken offline.

Even after all of this time, the big content owners still don’t understand the digital age. Back in the era of physical media, when formats changed, customers had to purchase their existing media in the new format if they wanted to be able to continue to use it. Because physical media costs money to research, manufacture, and distribute, this makes sense – the customer was simply paying the cost of the record companies developing and manufacturing a better sounding medium. However, where digital music is concerned, none of these costs exist. There was no research to develop Mp3, because it is ready to be licensed. There were no manufacturing costs, besides the few CPU cycles that it took to re-encode the existing media. Likewise, distribution is essentially free, because in most cases, it is third-party retailers who host and sell the content, not the rights holders themselves, and it costs exactly $0 to make a digital copy of a song file. So what exactly are consumers paying for when re-purchasing their previously DRM’d content? The luxury of not being limited in where and how they can use their purchased content? Oh thank you Mr. Rights Holder, thank you! thank you! thank you!

You know how this issue should be handled? Every song that was sold with DRM is now sold without, right? Then a tool should be written and distributed that allows customers to strip the DRM from every file in their collection. For free.

Edit: Comment from Slashdot:

Ah, but a chair only has a finite lifespan. So if it falls apart after 3 years of normal use I would probably not be responsible for fixing it. Although you may tell all your friends that I make crappy chairs. On the other hand YOU can buy a screwdriver at any hardware (or most dollar stores even) to fix the chair.

The real issue is that I have persuaded congress to make it illegal for you to buy the screwdrivers that fix the chairs I sell. And now I am saying that I should not be expected to keep any of the screwdrivers around either. And even if no one has the right tools to fix the chair YOU still can’t build one.


Canadian Copyright Reform Consultations

Posted: July 26th, 2009 | Author: | Filed under: Music, Politics, Software | 1 Comment »

This week, Arstechnica ran a piece detailing the history of copyright reform in Canada, and providing coverage on the government’s current efforts to revive the program. It seems that after the blowout surrounding Bill C-61, the government has decided to at least pretend to listen to citizens this time instead of simply bowing to the interests of foreign industry groups. To that end, the government has launched a website where Canadians can follow the process, and submit their own thoughts on the issues at hand. The new website is open until September 13, 2009, and puts five questions to participants:

  1. How do Canada’s copyright laws affect you? How should existing laws be modernized?
  2. Based on Canadian values and interests, how should copyright changes be made in order to withstand the test of time
  3. What sorts of copyright changes do you believe would best foster innovation and creativity in Canada?
  4. What sorts of copyright changes do you believe would best foster competition and investment in Canada?
  5. What kinds of changes would best position Canada as a leader in the global, digital economy?

My answers to the survey went something like this:

  1. Copyright laws effect every person with a desire to utilize physical or digital media in this country. While current laws are reasonably fair, they tend to be applicable primarily to physical medium, and lack use cases that address digital distribution, storage, and usage schemes. The changing landscape of media consumption calls for a modernization of copyright law that should be centered on preserving relics of our culture and society for future generations to freely enjoy.
  2. The primary purpose of copyright law is to ensure that artists’ contributions to society stand the test of time, while allowing the artist to make a living from their works for a reasonable period of time. To that end, any media that has ceased to be distributed by rights holders should be released into the public domain. This includes music, television, video, and written word that is no longer producing a profit for it’s owners and may otherwise be lost to future generations. How bankrupt would our society be without access to the works of classical playwrights, composers, and painters? At the same time, rights holders should be prevented from charging exceptionally high fees for back-catalogue media, as the digital age ensures that the storage and distribution costs of aging content are minimal.
  3. Innovation and creativity are largely driven by exposure to and inspiration from the works of others. To that end, Canadian copyright law should call for explicit bans on Digital Rights Management (DRM) schemes, which serve only to hinder the availability of media and to frustrate honest users of such. It would be beneficial for lawmakers to remember that any lock can be broken given enough resources and time; and that the only purpose of a lock, be it on your front door or on your digital media, is to keep honest people honest. Those who want through the locks will accomplish as much in short order, while those who are unnecessarily prevented from using their media by poorly designed or no longer supported DRM systems are left frustrated and are given incentive to hang up their honesty all together.
  4. It is unfortunate that most industry groups consider the fostering of innovation and creativity to be at odds with the increase of competition and investment in the marketplace when in truth, a healthy marketplace with reasonably short copyright durations can serve to directly increase the former. Current copyright schemes assign rights to their holders for a duration of life plus 50 years. In an age when immortal corporations own the majority of such rights, these laws actually serve to reduce competition in the marketplace. If companies knew that their works were to enter the public domain within a reasonable period of 10 to 20 years, they would be forced to continually develop better products to stay relevant in the marketplace. This would create an atmosphere of nimble companies that are forced to release new products on a regular basis that are not simply incremental updates to existing properties.
  5. With a global digital economy in mind, changes to copyright law need to consider the vast power of the internet as a medium for communication and distribution. Current licensing laws prevent many internet properties that distribute media from working to their full potential over international borders. Many sites that stream video or audio, or allow visitors to purchase media, are vastly limited in countries other than that where the site is based. To this end, copyright reforms should concentrate on breaking down international boundaries and utilizing the internet to its full potential. Furthermore, reforms should focus on doing away with laws based on digital media, and look constantly toward the future with digital distribution schemes in mind.

I would urge any Canadians who stumble upon this to check out the survey and to submit their opinions to the government. We as citizens should encourage this kind of mass public consultation whenever applicable in an effort to force our politicians to represent our interests over those of foreign lobbyist groups.

Cheers,

Jon


The Return of MC Double Def DP

Posted: July 6th, 2009 | Author: | Filed under: Music, Software | Tags: , , | No Comments »

Just like Queen, the Who, Led Zeppelin, and countless others, MC Double Def DP is dusting off his mic and going on tour after an almost 20 year hiatus:

Remember the original? It’s been Digitally Remastered!

I for one will be buying tickets for every show along the tour.


Ups and Downs of Audio

Posted: July 5th, 2009 | Author: | Filed under: Music, Software | Tags: , , , , , , , , , , , , , , , , | No Comments »

Lately, all of my technology seems to by systematically failing on me as if a demon sent by some higher being of tech has decided that I am no longer worthy to own and operate any of my toys. It started with a flatscreen monitor, spread to my blackberry, took out my iPod along the way, and stopped in for tea at my parent’s house, where it made enough of a mess to call me away from my own problems for a couple of days trying to fix their computers.

My room mates insist that I have a “midas’ touch” that breaks all the technology that I fool about with. I prefer to consider myself unlucky.

Blackberry Media Player

Since I never leave home without my phone, I have recently tried to reduce the amount of crap that I carry around by using my Blackberry as a media player. It has a 4GB memory card in it, and Media Monkey (my jukebox software of choice) treats it just like a USB device that can be filled up with songs from my library.

Normally, after filling the card with music, I simply launch the media application and tell it to shuffle all songs. While it starts playing, the device scans for audio files in the background and fills up a database file of some sort with information gleaned from ID3 tags.

The problems started with a refurbished device that I picked up on a warranty replacement of my original (which mysteriously started to freeze up whenever I used the camera application) – now when I load the songs onto the device, the scanning process seems to find one or two of them, and just ignore the rest. Imagine my joy after leaving the house this morning for a day at work only to find that I had a grand total of two songs available for listening on my device.

My interim solution has been to tell Media Monkey to export an m3u of the playlist that it puts on the Berry to the device. Then I can just tell the device to shuffle that list instead of waiting for the scan that doesn’t work to complete before listening to some of my media. If that doesn’t work, I’ll likely source a different media player app for the device.

Windows Media Playback

Lately, whenever I play music files on my computer (regardless of format, bitrate, or player), they pop and click as if the volume is up too high and the machine is clipping it to compensate. Increasing the amount of buffer memory that Media Monkey keeps helped, as did turning down my levels to prevent clipping; but the noises are still present in the stream.

This one truly puzzles me, as it seems to have started out of the blue, and affects all audio on the system (but not video for some reason). Nothing at the driver or hardware level has changed in recent memory, and the problem spreads across all players, formats, and bitrates, so I don’t think it’s an issue with specific software or codecs.

I’ll keep banging my head against the wall until I figure it out and get back to head banging.

Last.FM Scrobbling

On a good note, I recently decided to try playing about with Last.fm after an official scrobbling plugin was released for Media Monkey. Wow. I cannot believe that I went for so long without using this incredible website, and as a music lover, suggest that anybody who collects music start using it immediately.

The plugin is seamlessly integrated with my player, and does all the heavy lifting in the background so that I don’t even have to worry about it or run a separate app, and the site itself is pretty much astounding.

Occasionally, my music collection feels stale – even though my standard playlist has about 2500 songs in it (as selected by rating), I sometimes get bored of it and go looking for something new. Previously, I accomplished this primarily by listening to Alan Cross, comparing notes with friends, and trolling amazon.ca and wikipedia pages for information about related bands and albums. Now, last.fm allows me to click the ‘related artists’ link from any artist page, or check out it’s suggestions for stuff that I should listen to.

Consider me a convert for life.


Which Music Jukebox Software is Best for You?

Posted: December 8th, 2008 | Author: | Filed under: Music, Software | Tags: , , , , , , , , | 10 Comments »

I listen to a whole lot of music. There are really no two ways about it; if I’m at home, music is playing on my computer. If I’m not, it’s playing on one of the myriad of portable devices I own. I maintain a music library with just over ten thousand songs spanning most every genre and year in the last half-century. This of course means that I need to run some mean music organization software.

Like most other iPod owners, my default player is Apple’s iTunes, but lately it just hasn’t been impressing me as much as it used to, as evidenced by this long list of complaints:

  • Regular memory usage is around 130MB, and that number balloons to well over 250MB if I dare open that new-fangled glossy cover flow feature.
  • To make matters worse, if I close the cover flow, usage drops almost immediately to around 180MB, but refuses to dip lower, making me suspect a memory leak.
  • I keep the application running 24 hours a day and after about a week of uptime, its footprint can often climb above 300MB (without coverflow), lending more evidence to the memory leak theory.
  • As I type this, iTunes is converting some WMA tracks to MP3 while playing music, and is sipping 78% of my 2GHz dual core processor. That’s inexcusable.
  • Smart playlists are dumb at best, allowing only a global AND or a global OR for all playlist conditions. Sometimes this just doesn’t cut it, and I find myself chaining two or more playlists or using De Morgan’s law just to figure out the boolean logic behind a desired set of conditions. Yeah, I’m that much of a nerd.
  • The iTunes store peddles DRM-laden garbage. Sure, they sell iTunes Plus tracks now, but those are still m4a files (while the rest of the world sells MP3), and most big-label releases are still protected by FairPlay DRM.
  • When importing a folder full of songs, it often creates two copies of each track in my library and on my file system. Except that sometimes I get two copies of only some of the tracks, while the others copy as normal…
  • If a friend who runs a Mac brings his iPod over, I can’t plug that iPod in and stream tracks off of it because it’s Mac formatted. Sure, Windows doesn’t know the format of that hard drive, but Apple does; couldn’t they write a driver layer that can read it? I’ll bet that they could.
  • iPod cables are expensive. What are all of those damned pins used for? My blackberry is a mobile computer and it syncs just fine with a USB cable. Every device on the market uses the USB standard, while Apple sticks to this ridiculous cable with at least 30 pins on it, forcing third party manufacturers to license the design and jacking up accessory cost as a result (ok, this is really an iPod complaint, sue me).
  • Lastly, when editing information for multiple tracks, like for an entire album at once, the application doesn’t save my changes to the id3 tags. Yet if i modify the info on each track separately, it does. What gives, Steve?

Overall, considering the long list of features that iTunes does provide, it’s certainly not the worst program ever written, but I can’t help but think that the Windows versions an after thought in Cupertino and that they just don’t get as much polish as the Mac versions of the program. Long story short, I recently went looking for alternatives. The shortlist of what I require from a jukebox application:

  • Easy to navigate interface that lets me search, organize, and find my music with ease
  • Track ratings. This is a must when your library has more breadth than the weekly Top 40 list.
  • Smart and Static playlists that let me automatically partition my music into logical subsets
  • Equalizers are nice, but should come with some presets that i can tweak to my setup.
  • Low memory footprint with no leaks – I run this app all day long, so make it efficient
  • Automatic file system organization so that I don’t have to worry about it.
  • Search by track name, artist, album, etc.
  • CD burning and ripping is a nice extra, but I can use a third-party app with no complaints if necessary
  • XML file importing so that I can migrate my giant library from my existing solution is a must. Honestly, I’ve written a number of simple apps that parse an exported iTunes library (see the sidebar); This is a dead simple feature to add.

And so with the help of the SomethingAwful SHSC community, I’ve installed and played with a number of media players over the last couple of days.

  1. Songbird: Perhaps the most full-featured iTunes clone that I’ve ever seen, this app has some serious promise as an iTunes replacement. Memory usage is similar to that of iTunes, but is a little more stable, and doesn’t seem to leak so bad. The interface is fully customizable and skinnable, and it imported my iTunes library in about 5 minutes. Unfortunately, it lacks an equalizer, CD burning or ripping, and has the same poor smart playlist support that iTunes does. I get the feeling that I haven’t even scratched the surface of this players’ feature set, not to mention the hundreds of plugins that you can add from inside the program. Built on the the same XLU framework as Firefox, it’s generally stable, has a tabbed interface, an in-app web browser, and links to SHOUTcast, lastFM, and a ton of other web services. While it’s not quite there yet, I’ll be keeping a close eye on future releases.
  2. Zune: Over the summer, I participated in a Zune marketing program and received a free device in return for reviewing it and the player software. My full reviews can be found over at the Bus Error weblog if you’re interested. The basic story goes like this: Track ratings are either “i like it,” “i hate it,” or “not rated,” which doesn’t provide enough resolution for a large library. The interface is pretty and an interesting departure from iTunes’, but the Zune Marketplace and Social are seriously hampered at best in Canada, which is a shame because I’d probably buy a Zune pass and use this thing to discover new music otherwise. Lastly, when filling the Zune from a smart playlist, there’s no way to limit the number of songs in the playlist by size, so if your library is larger than your Zune capacity, it’s a guessing game. The popular iTunes to Zune playlist converter utility (available in the sidebar) was a project of mine written to address the fact that the Zune is an amazing device with crappy software behind it. Unfortunately iTunes is way ahead of the Zune Jukebox, even though Zune brings some great new ideas to the table.
  3. foobar2000: For what it does, this program is simply amazing. It plays music with my entire library loaded in just under 35MB of memory, and has more customizable features than you could reasonably count. Unfortunately, it lacks ratings and smart playlists (at least i think so – there are a bunch of playlist options that I just don’t understand), and is about as easy to use as reading a novel printed in binary is to read. This app does everything, but for anything more than playing specific songs, albums, or artists, it requires a bunch of reading to learn about. I’m sure that if I spent a week or two learning the ins and outs, I could get the hang of it, but this player is most certainly not for the consumer marketplace – it’s for people who don’t mind taking time to configure it properly and don’t want high level abstraction from the file system.
  4. Media Monkey: One of the only Media Players that I’ve heard of that still offers a paid option. I suppose when you don’t have a store and you’re not open sourced, you have to make money somehow. The free version has a good feature set, and a lifetime license is worth $20, considering the extra features that are enabled with it. On first launch, it took about 10 minutes to index my music folder, detected that I had iTunes installed, and imported all of the library data from it. Unfortunately, this last step took forever, although I could listen to all of my music in the mean time – it just isn’t all tagged properly. At first glance, this appears to be the best jukebox software ever written. It sorts by just about any criteria you could wish for without making playlists, automatically pulls track information from amazon or wikipedia, has podcast, SHOUTcast, and ICEcast, and a web browser built in, and has a direct link to purchase any track in your library from the Amazon store. As of yet, this is by far the most impressive media player that I’ve ever encountered. I will be purchasing the full license and temporarily adopting it as my main jukebox. Expect to hear more about this app in the future.

So there you have it. As per usual, Apple is shiny and simple but doesn’t necessarily include every feature that one could want. Microsoft brings a strong contender to the table, but fails to pull ahead in the race, likely until they throw a few more billion dollars at it. The open sourced Songbird looks promising, but as with most open sourced projects, will need to hit version two before it’s viable for the mass marketplace, and foobar2000, while an example of impressive programming, is so stripped down and customizable that it would confound the average user. Kind of like Linux. Ok, that wasn’t really a fair jab. For now, I’m going to be playing with Media Monkey, and I’ll share my experiences when I’ve thoroughly explored its feature set.

Which player is best for you? If you’re not a computer enthusiast, and don’t feel like paying $20 for a media player, I’d go with iTunes. It’s simple, intuitive, and provides every feature that the average user expects. If you don’t like rating your music, or have a collection of less than 100 songs, check out the Zune player – it’s a neat twist on iTunes, even if it’s not that great for large collections yet. Songbird is most certainly an app to keep in mind, and will probably become a possible iTunes killer as it approaches maturity. Meanwhile, if you want an eye opening experience that will show you how a media player ought to work, look into Media Monkey. It really is cool.

Cheers,

Jon

Edit: As pointed out by my colleague Jake Billo in the comments of this post, some of what I wrote about iTunes in this post was 100% made up and totally incorrect. Not that I was intending to lie about it, but some of my thoughts regarding iTunes were misconceptions. For the record, if you haven’t yet challenged your membership to the cult of Steve, you should still try to do so – there are alternatives out there. And yes, the grass is greener on the other side.


No, Zune does Not support iTunes Libraries

Posted: September 11th, 2008 | Author: | Filed under: Music, Software | Tags: , , , , , , , | 1 Comment »

This post by Matt Rosoff over at the CNet Digital Noise blog was brought to my attention by a colleague today. It is a response to an earlier NY Times article by Saul Hansell that forwards the hypothesis that iPod to Zune converts are scarce because most users have so much data inputted into iTunes that moving to new jukebox software requires a substantial commitment of time and effort.

The CNet article responds to this hypothesis by claiming that the Zune jukebox software can, in fact, support existing iTunes libraries. The author points out that the Zune software plays AAC files (the native ripping format for iTunes), and that it scans the default iTunes music directory for files on startup.

Unfortunately, what he fails to realize is that these actions do not in and of themselves constitute support of the iTunes library format. Real support would be an XML reader that allowed users to actually import their libraries – including all meta data, album art, playlists, and ratings – into the Zune jukebox software.

Songbird (an open source media player that supports plugins, and looks as though it will be very interesting come v1.0) does provide such a feature (as an optional plugin), that works extremely well. It is also rumoured to support Zune players, and will likely be my new media player of choice if they get smart playlists implemented any time soon.

Instead, Rosoff claims that the lack of converts between players is due to a lack of compelling Zune features, and overall customer satisfaction with the iPod product. While these claims may in fact be true, his argument about Zune support for iTunes libraries is downright false. Hansell, on the other hand has it right with this statement:

But now many iPods are replacements by people who already have substantial music collections in iTunes. For those people, the choice is between buying an iPod that will simply work with all their music or investing the time and effort to try to convert everything into Zune’s formats.

Where the term ‘formats’ is not referring only to the physical format of music files on the Users’ machine, but also to the internal database format that their library is kept in within their jukebox software. As a user of both players, I fall into this category – my library contains well over 8K songs, most of which are properly tagged, rated, and organized into playlists. While the Zune jukebox did indeed recognize, import, and find correct meta data for most of my files, it did not retain their ratings, number of plays, number of skips, or any of the other handy errata that iTunes assembles for every file in its library, or any of my playlists.

In my own opinion, the reason that the Zune has yet to dent the iPod monopoly is due mostly to the fact that it is roughly the same price as the iPod, and its two features that could very well kill the iPod require a snowball effect of users to make a dent.

I’m talking about the wireless music and photo sharing, and the much-hyped Zune social. Wireless sharing is basically a non-feature here in Canada, as I can only think of two other people that I know who have Zunes, and have never found one while using the Zune in public. The Zune social suffers from the same lack of users, as well as crippled functionality outside of the Continential USA.

That said, if these features were to gain enough users that it became commonplace for everybody to know at least one friend who owned a Zune, well then Microsoft might have an iPod killer on their hands. Until then, it is just as Hansell says – Microsoft is still waiting for the Zune Generation.

Edit: The latest release candidate of Songbird supports smart playlists (that are almost identical to the feature in iTunes), but has yet to implement Zune support. Being open source however, it’s just a matter of time. Check this page out for more info on new Songbird features.


iTunes to Zune Playlist Converter

Posted: August 20th, 2008 | Author: | Filed under: Music, Software | Tags: , , , , , , , , | 16 Comments »

This handy application converts iTunes playlists to Zune jukebox playlists. I wrote it out of frustration with the Zune jukebox auto-playlist feature, and it has served me well so far. The project is still in development, so if you have any suggestions on how to improve it, please leave a comment.

Download the Program

The program is pretty simple to use. Just follow these handy steps:

  1. Download the zip file and unzip it to a directory of your choice
  2. Open iTunes and close the Zune jukebox software
  3. Right click on the playlist that you wish to export and select ‘Export Song List…’ from the context menu
  4. Choose where you’d like to save the playlist, and ensure that ‘Save as Type’ is set to *.xml
  5. Launch the ‘iTunes to Zune Playlist Converter.exe’ application from the unzip directory
  6. Use the browse button to load the saved *.xml file into the ‘iTunes Playlist File (XML)’ field
  7. Use the browse button to choose where you’d like to save the converted Zune Playlist file. Note that for the Zune player to recognize the new playlist, it must be saved to C:\Documents and Settings\User\My Documents\My Music\Zune\Playlists\ on Windows XP, or C:\Users\UserName\Music\Zune\Playlists on Windows Vista.
  8. Click the ‘Convert’ button, and wait for the success message box to pop up.
  9. Launch the Zune jukebox software and go into the ‘Playlists’ view. You should see your newly created playlist in the pane to the left. Note that it might take a second to recognize the playlist, and another minute or two after that until the list is playable, depending on the size of the list. This is because the Zune software has to sift through the playlist and link each referenced file to one in its current library before the list can be used.

It is important to remember that this only works if the iTunes library and the Zune library in question are drawing from the same media files. This means that you should have the Zune jukebox software set to monitor the iTunes music folder that you are drawing from, so that the same files are referenced in both programs’ libraries.

Cheers,

Jon

Originally posted at jakebillo.com