# WMPlayer (1.0.0) Customizable HTML5 web music player. WMPlayer features: * **Dynamic playlist** - create and edit your playlist on the fly, * **YouTube support** - player support browser compatible audio formats and YouTube videos, * **Full player control** - play, pause, stop, fast-forward/rewind, next/previous song, volume, autoplay, loop and more, * **Easy, dynamic docking system** - WMPlayer can be dynamically placed anywhere on page, just designate it's parent node, * **Simple UI** - WMPlayer goes by default with simple, functional and responsive customizable UI in two variants ("default" and "default dark"). * **Customizable appearence** - If you don't like default UI, you can easily change player's template with HTML, * **JQuery support** - player can be used with JQuery 1.7+, or pure JavaScript, * **Cross browser** - player is compatible with IE9+, Edge, Firefox, Chrome, Opera, and mobile browsers, ## Getting Started **HTML** ```html
Your player goes here
``` **JavaScript** ```javascript var playersContainer = document.getElementById('player'); var WMPlayer = new WMPlayer({ parent: playersContainer, //Set player's container //Set playlist playlist: [ { title: 'Song 1', url: 'song1.mp3' }, { title: 'Song 2', url: 'https://www.youtube.com/watch?v=youtube_video' }, { title: 'Song 3', url: 'song3.mp3', duration: 210 }, { title: 'Song 4', url: 'song4.mp3', duration: '3:30' } ] }); ``` **JQuery** ```javascript //Create player in all selected elements $('#player').WMPlayer({ //Set playlist playlist: [ { title: 'Song', url: 'song.mp3' }, { title: 'Song 2', url: 'https://www.youtube.com/watch?v=youtube_video' }, { title: 'Song 3', url: 'song3.mp3', duration: 210 }, { title: 'Song 4', url: 'song4.mp3', duration: '3:30' } ] }); ``` ## Options |Option|Type|Default|Description| |---|---|---|---| |parent|node/JQuery selector|Script's parent node|Sets player's parent.| |parentAsTemplate|boolean|false|Take parent's content as player's template.| |theme|string|'default'|Sets player's theme class. See [Custom templates](#custom-templates) for more informations.| |template|string/node/JQuery selector|Default template|Sets player's template. See [Custom templates](#custom-templates) for more informations.| |playlistPattern|string|Default pattern|Sets playlist pattern. See [Custom templates](#custom-templates) for more informations.| |playlistDoubleClickSelect|boolean|false|Sets if playlist items should be selected by single or double click.| |controls|object|false|Sets classes of player's interactive elements. See [Custom templates](#custom-templates) for more informations.| |YTApiKey|string|''|YouTube API Key. Required to fetching position's duration| |YTAutoload|bool|false|Load YouTube IFrame API required to play YouTube track. If set false, it'll be loaded on YouTube track selection.| |autoplay|boolean|false|Sets autoplay.| |loop|boolean|false|Sets playlist loop.| |volume|float [0-1]|1|Sets player's volume.| |mute|boolean|false|Sets player's mute.| |playlist|array|[]|Sets player's playlist. Playlist has forem: [{title: 'Song title', url: 'Song URL', duration: 'Song duration'}, ...]| |showPlaylist|boolean|true|Sets player's playlist visibility.| |start|boolean|true|Run player.| ## Methods Methods can be called and chained depending on how you initialized WMPlayer: **JavaScript** ```javascript var player = new WMPlayer(); player .addTrack('song.mp3', 'Song') .addTrack('song2.mp3', 'Song 2') .addTrack('song3.mp3', 'Song 3', 210) .addTrack('song4.mp3', 'Song 4', '3:30') .autoplay(); ``` **JQuery** ```javascript $('player').WMPlayer(); $('player') .WMPlayer('addTrack', 'song.mp3', 'Song') .WMPlayer('addTrack', 'song2.mp3', 'Song 2') .WMPlayer('addTrack','song3.mp3', 'Song 3', 210) .WMPlayer('addTrack','song4.mp3', 'Song 4', '3:30') .WMPlayer('autoplay'); ``` |Method|Arguments|Description| |---|---|---| |start()|none|Run player.| |addTrack(url, [title = 'N/A'], [duration = 'N/A'])|url : string,
title: string,
duration: string/int|Add audio track to playlist| |removeTrack([index])|index : int|Removes position from playlist. Last playlist element is removed by default.| |track([index])|index : int|Play playlist element. First playlist element is played by default.| |nextTrack()|none|Set next track as current.| |previousTrack()|none|Set previous track as current.| |volume([volume = 1])|volume: float [0-1]|Set player's volume.| |mute([mute])|mute: boolean|Set/toggle player's mute.| |autoplay([autoplay])|autoplay: boolean|Set/toggle player's autoplay option.| |loop([loop])|loop: boolean|Set/toggle player's loop option.| |showPlaylist([showPlaylist])|showPlaylist: boolean|Set/toggle player's playlist display.| |parent([parent], [setAsTemplate = false])|parent: string/node/JQuery,
setAsTemplate: boolean|Set player's container and optionally set its content as a template.| |theme(class)|class: string|Set player's theme class. See [Custom templates](#custom-templates) for more informations.| |template(template)|template: string/node/JQuery selector|Set player's template. See [Custom templates](#custom-templates) for more informations.| |playlistPattern(pattern)|pattern: string|Set playlist elements patterns. See [Custom templates](#custom-templates) for more informations.| |controls(controls)|$(element).WMPlayer('controls', controls)|controls: object| Set player's controls classes. See [Custom templates](#custom-templates) for more informations.| |destroy()|$(element).WMPlayer('destroy')|none|Destroy player.| ## Custom templates WMPlayer's appearance can be easily customized with HTML and CSS. ### Setting template WMPlayer's template can be changed by: * changing player's theme class (player goes with two themes: default and default dark) **JavaScript** ```javascript var player = new WMPlayer().theme('default dark'); ``` **JQuery** ```javascript $('#player').WMPlayer().WMPlayer('theme', 'default dark'); ``` * setting player's parent content as template: **JavaScript** ```javascript var player = new WMPlayer({ parent: document.getElementbyId('player'), setAsTemplate: true }); //or player.parent(document.getElementbyId('player2'), true); ``` **JQuery** ```javascript $('#player').WMPlayer({ setAsTemplate: true }); //or $('#player').WMPlayer('parent', $('#player2'), true); ``` * setting template from string/node/JQuery selector: **JavaScript** ```javascript //Get template var template = '
Your template
'; //or template = document.getElementbyId('template'); //Set template var player = new WMPlayer({ parent: document.getElementbyId('player'), template: template }); //or player.template(template); ``` **JQuery** ```javascript //Get template var template = '
Your template
'; //or template = $('#template'); //Set template $('#player').WMPlayer({ template: template }); //or $('#player').WMPlayer('template', template); ``` ### Playlist pattern Playlist positions are generated based on pattern: ```html
$index.$title$duration
1.Song 11:30
2.Song 21:30
3.Song 3N/A
``` Playlist pattern contain tags which are replaced with playlist items data like: * **$status** - status tag: signify playlist position's main container and placement of track's status (current track, error) (**WARNING**: $status tag must be inserted into class attribute, otherwise playlist won't show playlist item status), * **$index** - index tag: placement of audio index number, * **$title** - title tag: placement ot audiotrack's title, * **$duration** - duration tag: placement of audiotrack's duration. Playlist pattern can also be changed: **JavaScript** ```javascript var player = new WMPlayer({ playlistPattern: 'New pattern' }); //or player.playlistPattern('new pattern'); ``` **JQuery** ```javascript $('#player').WMPlayer({ playlistPattern: 'New pattern' }); //or $('#player').WMPlayer('playlistPattern', 'New pattern'); ``` ### Controls WMPlayer's interactive elements like play button, progress bar, playlist container, etc. are identified by assigned classes. **Example** ```html

``` |Control class|Default|Description| |---|---|---| |playButton|wmp-play|Play/pause button class.| |stopButton|wmp-stop|Stop button class.| |fastForwardButton|wmp-fast-forward|Fast forward/next track button class.| |rewindButton|wmp-rewind|Rewind/previous track button class.| |currentTrackTitle|wmp-current-track-title|Current track title container class.| |currentTrackTime|wmp-current-track-time|Current track time container class.| |currentTrackDuration|wmp-current-track-duration|Current track duration container class.| |progressBar|wmp-progress-bar|Current track's progress bar class.| |volumeBar|wmp-volume-bar|Volume bar class.| |muteButton|wmp-mute|Mute button class.| |playlist|wmp-playlist|Playlist container class| Player's control classes can be changed: **Plain JavaScript** ```javascript var player = new WMPlayer({ controls: { playButton: 'playButtonClass', stopButton: 'stopButtonClass', ... } }); //or player.controls({ playButton: 'playButtonClass', stopButton: 'stopButtonClass', ... }); ``` **JQuery** ```javascript $('#player').WMPlayer({ playButton: 'playButtonClass', stopButton: 'stopButtonClass', ... }); //or $('#player').WMPlayer('controls', { playButton: 'playButtonClass', stopButton: 'stopButtonClass', ... }); ```