SoundManager 2 / 360° Player: JavaScript + Canvas UI

Canvas-based UI. Load progress, seek, play/pause etc. Also see 360° UI visualization demo.

Alternate style: inline

How This Works

The script looks for a container element matching div.ui360, and then the first link inside of it.

<div class="ui360">

 <a href="/path/to/an.mp3">play "an.mp3"</a>

</div>

When the 360 player script loads, it adds a UI template to the block, prepending it in front of the MP3 link:

<div class="ui360">

 <-- dynamically-inserted block -->

 <div class="ui">

  <canvas class="sm2-canvas"></canvas>

  <span class="sm2-360btn"></span> 

  <div class="sm2-timing"></div>

  <div class="sm2-cover"></div>

 </div>

 <-- /UI -->

 <a href="/path/to/an.mp3">

</div>

Customizing the UI

The player's default 50x50-pixel canvas is defined both within JavaScript and CSS. For an example with different values, see this larger version.

threeSixtyPlayer.config = {

  playNext: false, // stop after one sound, or play through list until end

  autoPlay: false, // start playing the first sound right away

  allowMultiple: true, // let many sounds play at once (false = one at a time)

  loadRingColor: '#ccc', // amount of sound which has loaded

  playRingColor: '#000', // amount of sound which has played

  backgroundRingColor: '#eee', // "default" color shown underneath everything else

  animDuration: 500,

  animTransition: Animator.tx.bouncy // http://www.berniecode.com/writing/animator.html

}

The CSS for the canvas UI block is a bit ugly, but JavaScript reads the width of the .sm2-360ui element in the DOM as set by CSS and uses that to later draw and update the canvas element while playing.

.ui360,

.sm2-360ui {

  /* size of the container for the circle, etc. */

  width:50px;

  height:50px;

}

Third-party Components

This demo includes use of Bernie's Better Animation Class (Apache licensed) for some animation effects.

Also, some loader/spinner icons from ajaxload.info are used for showing loading/buffering states.


SoundManager 2 project page (not an MP3 link)