MuxMaster is an open-source desktop player to browse, play, and download Muxtape mixes. It is an AIR application that lets you stream music from Muxtape, explore different mixes to find new music, and even download tracks and entire playlists to your computer with a single click.
If the above install link doesn’t work, do this:
- Make sure you have the AIR runtime, if you need to download it from Adobe
- Download and run the MuxMaster installer
Here are a few screenshots:
Why did I make this?
I like Muxtape. Like a lot of software/web guys, I saw the clean interface and the barren source code and was immediately impressed. I mean, the dude did a fantastic job. It was just so damn clean.
Then a few days ago people went ga-ga over this video of some dude showing muxtape mixes using the Coverflow visualization to browse through them. OK, so that’s cool, except it uses a Mac-only application called Fluid to basically add normal Mac desktop functionality to web apps. That shit got dugg like 750 times. Now I’m not saying it’s not cool, cause it is. But I figured I could probably whip up a Flex application pretty quickly using the Coverflow component I released before and get a real desktop application that anyone could download and use. Oh, and I thought it would be neat to add downloading functionality too.
So I threw MuxMaster together over the past 3 nights. I like to think of it as a testament to the badassness of Flex and the open-source Flex/Flash community. The fact that I can grab some open source stuff and throw this together in almost no time is pretty cool.
What kind of an application is this?
MuxMaster is an Adobe AIR application, built with Flex. That means it’s a desktop application that can run on Windows, Mac, Linux, whatever. Click the “Install Now” link above to install the app. You might need to go and download the AIR runtime first. Hopefully it’ll tell you that and do everything automagically.
The Muxtape API
Muxtape has no API. But the HTML code is so sleek and beautifully clean. Go look at the source code for the HTML pages on muxtape.com. It’s ridiculous how sparse it is. And of course it validates as valid XML. So what? Well, nice XHTML like that is just as good as the best XML API you can ask for. You want to get a listing of some random Muxtapes? Just load up the XHTML on the Muxtape home page and parse out the list of users. Using E4X you can get a list of users with this single expression: body.div.div.ul.li.a
. It’s almost too easy. So then when you get a username you just load that user’s HTML page and you can easily parse the list of songs (body.div.ul.li
) or related users (body.div.div.div.ul.li.a
). There’s a little trickery involved to figure out exactly how to construct the URLs for the MP3s, but it’s pretty easy to figure out. After a little parsing you can get a list of MP3 URLs and the data about each song, like artist, track title, duration, etc.
Downloading songs
The thing about Muxtape is that all the songs are just MP3s stored on Amazon S3. If you know the URL you can download the file. The main Muxtape player doesn’t expose this functionality, but if you take a look at the files that the web-based player is loading you can just copy/paste the URL and load it into a web browser to save the file. So I just made that a bit easier. MuxMaster has a Download link for each song underneath the song name. One click and the song will download in the background (you can specify where you want songs to download to). Additionally, each playlist also has a Download All link, so with a single click you can download all the songs in the playlist.
Is this bad?
There’s a whole ethical dilemma that we can spend forever discussing. Is this application against everything that Muxtape stands for (clean, simple, bare-bones UI)? Is adding download functionality quickening the shutdown of the service? Is this effectively taking a step toward destroying the service that I actually really enjoy using? Yeah, the answer to all those might be yes.
Yes, the excessive use of 3D and especially the over-used Coverflow visualization are exactly opposite to the perfectly clean design concept of Muxtape. The truth is, I hate Coverflow. But people gravitate toward it and seem to love it, so I figured it’d be fun to whip something up and see the response. And it was just so damn easy.
And yes, being able to download an entire mix with a single click may very well be a horrible thing for Muxtape as a whole. I assume the service is already on the radar of the lawyer-crazy music execs, and if it’s not now I assume it will be if it gets big enough. But the technology underneath the service was just so simple (I mean, really? just let people throw a bunch of MP3s up on Amazon S3?) that someone would have shown how to download all those songs soon enough. So I’ll definitely feel bad if this app has a negative effect on Muxtape, but come on, it’s something I whipped up in a few days, someone was bound to do it.
Source code
I’m releasing all the source code for the application. When you install the AIR application you can right click and select “View source” to see all the code. Or you can view the source here. It’s small (16 files, 898 total lines of code). And the code was influenced by the minimalist design of the Muxtap app itself, so I tried to keep things extremely tidy and clean.
I used a few open-source flex libraries. The most obvious one is the Coverflow Flex component that I created and released on my blog. That’s licensed under the MIT license, so you can take that component and add this type of Coverflow visualization to your Flex apps. The Coverflow visualization uses the Papervision 3D library, which is a 3D engine for Flash. It’s badass and free (MIT license). The other Flex library I used is FlexLib, which was used for the FlowBox container. That component can be seen when you download songs. It’s the container that lays out the little download rectangles. FlexLib is also licensed under the MIT license (is there a pattern forming?).
The source code for MuxMaster, like all code released on my blog, is also licensed under the MIT license, which you can read here. Basically you can do whatever you want with the code.
What’s next?
I don’t know if I’m going to do anything more with this application. The app does rely on the format of the HTML pages on Muxtape, so if the creator of Muxtape decides to try to break MuxMaster he probably can, and I’d have to update it to get it to work again. I might do updates like that to keep it working. If people have feature request I’d love to hear them, but I’d encourage other developers to take my source code and add the stuff that they want. If you have feedback shoot me a message using my contact form or leave comments here. I don’t have any big plans, this was fun to make.
Legal nonsense
This application doesn’t contain any music files whatsoever. I am not storing any music files on my server or any server that I am associated with. I am not providing a list of any music files stored anywhere on the Internet. I don’t have any information about how to find music files stored in any database or anywhere in the entire galaxy. If you’re a lawyer looking to scratch that soul-destroying litigious itch that you have, I’m the wrong guy to talk to.
“. If you’re a lawyer looking to scratch that soul-destroying litigious itch that you have, I’m the wrong guy to talk to.”
Actually, you are that guy, just not if that itch involves music rights. 😛
Pretty cool, nice to have a cross platform solution. I dig the random 10 feature but have had a lot of problems with audio skipping and lagging.
Not sure I can solicit the download feature, I know Justin was banning IPs that were running a userscript that allowed for download.
@cawlin: Dunno why the audio would lag or skip any more than the normal Muxtap web interface, except maybe on Muxtape he’s buffering more of the song before trying to play it, I just stream it and play as soon as it will let me. I could probably do some more advanced buffering to try to get the playback to skip less on a slower connection.
And yeah, I figured he might not be happy about the download. But given the nature of the service he’s providing, it’s something he’s going to have to deal with eventually. The truth is, he’s providing massive lists of links to unprotected MP3s that people can download.
This app is also a testament to the badassness of Doug McCune. 🙂
I love this app. I was waiting for someone to build an AIR app for Muxtape. The only thing I have to say is I wish there was a way to turn off Coverflow. I really don’t like Coverflow and wish I could just use the app without having to deal with erroneous 3D elements. Other than that, though I really like this.
Pingback: Doug McCune » Blog Archive » MuxMaster update: download functionality removed and a new icon
Any chance you could build this for imeem.com? Particularly the download part. Muxtape may be all the talk of the blog world but imeem is still the 800 pound gorilla when it comes to web2.0 music and has millions more tunes.
imeem has an official api for making flex applications, could I use that to get the locations of their mp3’s and download them?
There is another air player for playing muxtapes:
http://ghetto.suprhot.com
Pingback: maestroalberto » MuxMaster: client desktop per MuxTape in AIR
Pingback: Pimp My Muxtape (SSB)
Wow.
Couple cool adds that would make this even better:
refresh button on indiv playlist to get a new playlist when one is lame
+ button to add as a favorite playlist
Hm, is the coverflow in AIR that slow, or is this local? Nothing like the iphone, imho.
Awesome job man!
I love the application! A feature that I would love: bookmarks.
When I find a cool list I would like to be able to come back to it later.
Pingback: MuxMaster applicazione Air per ascoltare Muxtape : Catepol 3.0
Pingback: Muxtape + Air = Muxmaster + GhettoBlaster. | Asblogger.com | Malaysian Daily Tech Blog
Pingback: Friday Quickcast Special: 3 Adobe Air Applications Explained In Just Over 3 Minutes « Demo Girl
Pingback: Muxing it Up with Muxmaster « RadioMilwaukee’s Soundboard
Man ! When trying to build your great project I had for yours an error because there was a conflict, but solved it by cleaning the project with the Flexbuilder.
In case someone else can not build tutorials and finds strange errors,
here is the threat: http://curtismorley.com/2007/06/20/flash-cs3-flex-2-as3-error-1046/#comment-4203
Thanks for this great Component, I try to implement it ….
Haha, you beat me to it. I saw that guy’s coverflow Fluid thing and immediately started my own version, with searching and downloading. Now I can just use yours. Nice work.
Pingback: New music everywhere you go. Muxmaster is your mobile jukebox. | hellokinsella
Pingback: The Rise of Visual Browsing | Darren Hoyt Dot Com
Pingback: links for 2008-06-19 « copula’s weblog
I am having trouble getting this app to work. I have it installed and everything but it seems to never actually load anything. It just says “Loading…” the whole time. Any suggestions?
-Brandon
Pingback: Muxtape reloaded | Googlisti.com