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.
I thought it might be a standard expression in some literary circles, but according to Google it turns out to be original poetry!
We experience very sketchy behaviour across platforms and browsers (especially mobile). We're relying on SoundManager which seems solid, but doesn't solve all problems. I wonder if anybody else has any suggestions / experience to make things easier somehow?
Had to turn off flashblock for this site to make it work
- If a track doesn't start buffering quickly enough, maybe automatically skip it?
- Running 'clear' also clears the current track, but it should really be persistent.
- This might go against the popular opinion, but I'd like to see "now playing" pinned at the top, so when the window scrolls, it scrolls under it, instead of effectively hiding it.
- Consider setting a cookie to track preferences.
- If you could link to the source (the current song's soundcloud link) that would be excellent. At the very least, a permalink or something.
I'm mainly comparing this against using SoundCloud directly, or something like turntable.fm. A big feature I like is being able to +favorite a song that I like, or buy the album, so anything that causes me to lose context greatly devalues the app.
And for the cookies, it's really just the background and comment preferences. Maybe the cookie could be named .cmdfmrc or something?
If not already, you should use Sound Manager 2 http://www.schillmania.com/projects/soundmanager2/ and its api. It's amazing. It auto selects HTML5 or Flash on both pc and smartphones. It even checks if people have flashblock enabled and tells them to "click here to enable flash".
I've used it on 2 projects before http://timeforzen.com and http://residentevilradio.com (it can also stream from shoutcast servers.) I've got HTML5 disabled on those 2 projects because it was still beta and glitchy at the time the feature was introduced.
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
I wonder if it's due to the ampersand.
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).
You can easily work around this by hitting 'i' (insert mode) or disabling vimium for the page (hit icon -> exclude url).
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!
If anyone is looking for a front-end job, look in the right place. Look in the source.
I'd like the actual service to be a command line via telnet or other established protocol, so i can automate it via cron, arduino buttons and what not the cool kids use today.
I thought the site was just a convenient way to demo it all together by already opening the steam in an audio html tag or something and exposing the console api on the same page.
if you had telnet/rest or any other standardly documented access point, I could schedule stations with a cron script. Have a hardware button with an arduino. The sky is the limit.
The way it is now, it's just a toy. nothing other than a slightly more inconvenience to use than pandora. it doesn't really add anything different. Well i could emulate keystrokes and expose an API myself, but then i could already do that emulating mouseclicks in pandora anyway.
Edit: the cli works, but no music.
- Ctrl + L