97 comments

[ 4.4 ms ] story [ 356 ms ] thread
Good stuff! I personally don't have a use for it, but I think other's need to see this.

If anyone is looking for a front-end job, look in the right place. Look in the source.

(comment deleted)
Excellent! Bookmarked and will be listening, I've definitely needed something like this for a while, and it's really a beautiful design to pull off.
I am enjoying this immensely. Thank You!
love it. Can you give an idea of what tech are you using for this.
If you're like me and escape your spaces instinctively (e.g. "Progressive\ Rock" instead of "Progressive Rock"), it won't work. Hold back the desire to press the "\" key.
I listed the genres, then wanted to type `mplayer Techno` instead of `play Techno`...
A little formatting magic in the background would be great. For instance "progressive rock" and "triphop" work, but "progressiverock" "prog rock" and "trip hop" don't.
Removing all whitespace, converting everything to lowercase and removing special chars should to the job. I hope they build it in.
(comment deleted)
I prefer this sort of interface any day compared to a bloated AJAX-y web interface that kills my browser.
This is absolutely fantastic! I'd love a native Alfred style Option + Space interface so I could quickly chop and change between the music because having to switch to Chrome then the right tab is cumbersome. This is really great however, excellent job.
For some reason, can't see how to comment, am I missing something?
Comments are taken from SoundCloud. They're not realtime from other listeners.
haha! could've fooled me, thanks for clearing that up.
Thank you, I was quite confused. Thought this might have just been a neat shell for another streaming radio of some sort.
I also prefer TUI over Ajax GUI but here I think we don't have the tools and environment that define a real TUI. For example, can I pipe the genre list to grep or sort or awk? Can I script a player in a cronjob? I doubt it (cannot check because on a phone)
TUI, seriously? It's been called CLI for years.
CLI is for dealing with an application or system through its command line: "apt-get install foo"

TUI are usually curses-based interfaces that live in the terminal and have menu, windows and sometime support for interacting with them with the mouse (for example aptitude or alsa-mixer).

OMG I LOVE THIS. The Dream Pop playlist is awesome, thanks OP. I love discovering new music!
(comment deleted)
(comment deleted)
Funny, you can tell by which generation/culture a player was made based on the listed genres. In this case I see acid jazz, trip-hop, and moombahton but no dubstep or glitch hop.
I'm playing Electro House right now. There's also Electronic, House, and Techno. You can't really judge them for not bothering to list every subcategory.
Not saying they must list every one. Rather it's always interesting / fun too see to see when someone releases a player w/ genres which ones they'll offer.
Nor Baroque, Plainchant, or Twelve Tone.
Long ago, there was music, call it pop. Much time passes and the same music is still played, but it has been renamed folk. Edison, got involved and the guy on the Martin discovered Fender so now they call it folk rock. Just to be clear, folk didn't go away, it is still around and thriving---fix your genres please :)
Very cool. I like the awake layout. Listening to some rock music now.
Doesn't work at all for me. Mac OSX 10.8.5, tried Firefox and Chrome.

Edit: the cli works, but no music.

It wasn't working for me either. It turns out that that you need to have Flash installed and enabled to run by default for the music to play.
Strange. I went to chrome:plugins, checked Flash (was enabled) then went back to cmd.fm and now it's working.
Kind of cool, but doesn't allow much customization of the music. I'll stick with my terminal and pianobar for now.
Interesting concept, but it's always surprising to see a newly created web-based audio player that expects Flash rather than using HTML5 audio. Doesn't work at all without Flash.
Is it, though? The state of HTML5 audio is still pretty atrocious.
Apart from the selection of codecs, HTML5 audio seems to have pretty much all the bases covered.

As for codecs, depending on your application, you can either pre-transcode all your audio to an appropriate codec, transcode on the fly, or even use a Javascript transcoder and the Audio Data API.

I just came from a project that required heavy use of HTML5 audio, and let me tell you that the 15+ ffmpeg calls during the audio build step were the least painful part of the process.

HTML5 audio in iOS is a bit of a black box, with variable, unpredictable and undocumented behaviors between iOS5 through 7. These guards are intended to shield users from obnoxious behavior, but in the process, make the feature useless for everyone else.

You get one HTML audio element whitelisted in response to a user-initiated event, so you need a "click anywhere to do something useful!" screen. Also, you've got that one element to work with, so something like sound effects with a background track is out of the question.

Once you've got a whitelisted element, you can then re-use that element to play individual sounds by swapping out the src attribute of that single whitelisted audio tag, which queues a new web request and plays back the sound whenever the web request finishes... which is usually several seconds after you wanted it to play.

This happens regardless of whether or not the sound has been played before; the result isn't cached locally.

So, if you want to produce something remotely workable, you do audio spriting and never switch out to a different audio file. You create a build step that pulls in all of your audio, all of your sound files, puts them together into a single wave file, generates an audio atlas, and re-encodes audio to mp3, wav and ogg to hit all the major players (rinse and repeat for other channels of audio). Which works on most devices, but iPads decide to ignore currentTime assignments on that audio track, so the whole thing is kind of botched.

That's before we try to get stuff predictably working in IE, which can go anywhere from screwing the whole thing up to unpredictably mutating volume levels. That's before we support Firefox, which doesn't loop audio like everything else does and randomly stops playing audio. That's before we support Android, which exhibits different behaviors across the stock browser and Chrome, and so on, and so on.

If you want to play a single audio track in one or two desktop browsers, then sure, the technology is somewhat ready for you. Codecs are the least painful part of the problem. Anything beyond that is a travesty.

My experience matches this. For a serious project, it is a clusterfuck of dogshit proportions.
"a clusterfuck of dogshit proportions"

I thought it might be a standard expression in some literary circles, but according to Google it turns out to be original poetry!

So true. We're trying to build a web-based online anatomy trainer[1], which plays success/failure sounds when you click right/wrong, but also add a voiceover with the anatomy term being spoken out.

We experience very sketchy behaviour across platforms and browsers (especially mobile). We're relying on SoundManager[2] which seems solid, but doesn't solve all problems. I wonder if anybody else has any suggestions / experience to make things easier somehow?

[1]https://www.kenhub.com [2]http://www.schillmania.com/projects/soundmanager2/

Did IT in an medical library in a university. The douchey doctors/professors spent a lot of money on a homegrown AV system connected to computers to accomplish part of that task, so I hope you can turn a buck off that. Seems cool.
It's working fine for me without Flash. Safari 6 on Mac OS.
I was wondering why nothing was playing until I read your comment.

Had to turn off flashblock for this site to make it work

(comment deleted)
Oh nice. A black screen -.-
This is really useful. It would kinda cool if you made this into a command line app. Still, good job!
You should actually constrain volume to 1-100. I'm currently listening at 2000, and I tried 1000000 and it was painful.
How do we chat in the repl? I'm getting messages I'd like to engage with.
I think these are the comments from soundcloud.

Though it would be really cool to have a chatroom for each song. My first interpretation was the same as yours and I was wondering if there is a char room per genre or one chatroom per song.

Amazingly useful app!

Oddly, I can play most stuff, but not drum & Bass. It just says

    Searching genre..
    Found! Playing 'Drum & Bass' genre, yay!


    -----------------------------------------------------------------

    The song is ended (but the melody lingers on)

    -----------------------------------------------------------------


    Welcome to cmd.fm!

    Use 'help' command to see available commands
    >

It's rather odd...
Hah, I looked for dnb first but missed it in the list due to the columns format, so I started with grime instead.

I wonder if it's due to the ampersand.

Seems to be. Piping straight to the backend works just fine for Drum & Bass if you URL Encode.