35 comments

[ 3.9 ms ] story [ 52.7 ms ] thread
I wanted to play with new toys, so here's a little app that lets you build and synchronize a playlist with other people. Open the page in a few more tabs/computers for more fun. Thanks for playing :)

Limitations: It relies on HTML5 audio, so it probably only works well on Chrom{e,ium}, Firefox, Safari, Opera, etc. Content comes from YouTube, so Firefox might have trouble with AAC when WebM is unavailable. Mobile devices are remote control only.

http://jam.now.im/c/Hacker-News (hacker jam!)

http://jam.now.im/c/Hacker-News?mode=auto (play old stuff if there are no requests)

http://jam.now.im/c/Hacker-News?mode=rc (remote control only, with no audio)

Replace `Hacker-News` with your channel name.

Thank you for all the awesome feedback! I'll collate some of them here:

1. It's confusing

- This is also my concern. It diffs/merges playlists, so it can be confusing how your requests map to what's actually playing. The other thing it does is count votes and exclude below-average tracks.

2. Thumbs up/down

- Thumbs up votes for an encore/repeat. Thumbs down votes to skip. It weighs your votes against the number of requests for the track.

3. Song length limit

- That's actually a great idea, to keep things moving along.

4. It's annoying when people skip lots of tracks

- Indeed, perhaps a rate limit per user would be a good idea?

I think that the "thumbs up" vote should be separate from the possible "encore/repeat" vote.

People probably vote thumbs up just to counteract other's thumbs down (inevitable once there are enough participants), then, if a track makes it through the battle without being skipped, an awkward situation is created when it starts looping but nobody wanted it to loop.

As for the skipping situation, maybe if tracks started off with a default of one "thumbs up", then you would need at least two people to skip a track. Just one possible solution.

Got it. It seems that it would be more intuitive if the thumbs up just added that track to your requests. The encore button should definitely not look like an upvote button. I'll look into making it harder to skip tracks. Thanks!
This is awesome. I just got Weird Al's "The Saga Begins" to follow Don McLean's "American Pie". It's like riffing with whole tracks. It'd be wonderful if everyone could agree to riff on each track, rather than just injecting their favorite stuff and breaking any overall unity to the playlist.
Not bad. Seems somewhat lighter featured than plug.dj and other community dj rooms, but I think the nice thing is that you're just extracting the html5 audio tracks as opposed to playing the entire video. Could make it easier to port to mobile.

I'd like to see more sources than youtube though - soundcloud specifically.

Any plans on open sourcing this?

SoundCloud is in the works. It needs a (client side) metasearch function, which I think lunr.js could help with.

The source is in the pipeline, but not quite ready yet! This is actually a rewrite of an earlier project of mine and shares most of the ideas: https://github.com/jyio/jamwithfriends

Love the idea, but I'm having trouble getting the audio to play. After searching for and adding songs, they are listed but the "There are no requests" message is still displayed, and nothing is playing. Am I missing something?
I'd like to investigate this. What browser and OS do you use? Thank you for the help.
I'm on OSX, I've tried it on both Firefox (36) and Chrome (41.0.2272.118 (64-bit)).
Love how simple and friction-less the UX is! Also, search auto-complete is really fast, how did you do that? (wouldn't suppose you cached entire YouTube's index)
Thanks! It queries YouTube's API so it doesn't hit my server at all for these requests. Ractive.js makes it easy to show search results using a consistent interface.
Does not work for me:

- Chrome Version 41.0.2272.118 (64-bit)

- MBP 2014 MAC OS X 10.10.2 Yosemite

Also tried latest version of Waterfox.

Having a rather poor internet connection here, but kept the page open for more than 5mins without any music playing.

Any suggestions?

Same OS, Firefox works
Thank you for reporting this. Did it give you a playlist at all, and was there any chat history on the right side of the page?

Even though HTML5 audio support is pretty good, we're running into problems with Google's location-based restrictions and audio formats.

I'm from Germany, if this explains it then.

Other than that, it played some little music after 10-20mins idling in my tab bar I guess. Then it stoped again...

Chat is showing, Playlists are showing. There are no errors in the js console and no scripts are being blocked as well.

It's your GEMA, that blocks YT videos.
In Germany too, but it works.
It actually tries to detect country-restricted tracks and proxies them (so it's good that there aren't too many of these... yet).

When I encounter one of those, I refresh with the console open and find a request to *.googlevideo.com/videoplayback returning 403 Forbidden. It's hard for me to debug this in the US, but I'll look into it.

WOW! You just made the worlds best music discovery service! Too bad that was the easy part ...
... the hard part is monetizing it so it doesn't go the way of turntable.fm :)
(comment deleted)
When I request songs, it shows up at the top section and then grays out. And it looks like there is no way to add the song to the queue. Is there a reason for this? Otherwise, this is something I always wanted every since we lost turntable.fm :(. I never got into plug.dj.
I, too, loved turntable.fm and wanted something similar. When you request a track (add it to your list), you upvote the track; if votes >= median, it gets queued in the master playlist (thumbnail appears in the header), or else it appears gray on your list.
If someone wants something similar, but for their local music collection, check out grooveshark -- it features a web UI and streaming to any number of connected hosts, along with a (primitive) permissions model and allows uploading of new tracks to the music library through the web UI.
It does not look like an on-demand music player. Is it true?

Another question if someone can answer here - it looks this site is playing just audio from youtube music videos. How can you do that? Is it a hack or youtube api supports some type of parameter?

Not bad at all. I'll have to pass this around with my coworkers and see if we can get a room going.

I'm also pleasantly surprised that I'm not the only one around here who likes Yes. :)

It's blocked by our corporate web filtering service.
This is really cool, I've just played about 10 tracks with it. A little bit confusing though, not sure what BlueberryJam means in the top left corner, is that my channel name?
Yes, that's the default channel. I'm working on the confusing bits! Thanks for playing.
Looking pretty good for a first run, of course UI updates will have to happen, as it took a bit of clicking to figure out where i was at and what i was actually doing. Still confused as to what control/endless and just the normal room grant.

Either way, I started a room in http://jam.now.im/c/bass and its basically just bugged out. The track that i put in first (of course) is throwing a 500 when it tries to play `Failed to load resource: the server responded with a status of 500 (Internal Server Error)`.

You might need some sort of fail handler to ensure a room doesnt just get flat out bugged.

Either way, thanks, and I'll be watching closely :) Plans to open source? Or you more like planning to make $$? :P

We have a few ppl in http://jam.now.im/c/bass

Join up if you like bass music (dubstep, trap, future bass, glitch hop, chill bass, and the like) so we can test this with some dope tracks.

Thank you for playing :) A fail handler does sound like a good idea. Control is remote control only, without audio (saves your bandwidth if you're driving your media center with this). Endless will recycle historical tracks if there are no requests.

It seems difficult to monetize such a thing (other than using affiliate links, etc). When I find a bit of spare time, I do plan to clean up the code and make it open source. Meanwhile, you could find the previous version at https://github.com/jyio/jamwithfriends