AmplitudeJS: Open Source HTML5 Web Audio Library. Design your web audio player, the way you want. No dependencies required.

Overview

AmplitudeJS Logo

DocumentationExamplesTutorialsSupport UsGet Professional Help

Build Status npm version jsDelivr Downloads Chat
david-dm License Support us

AmplitudeJS is a lightweight JavaScript library that allows you to control the design of your media controls in your webpage -- not the browser. No dependencies (jQuery not required). AmplitudeJS is available under the MIT License.

Demo

MIT License
Click the image above to go to the demo site or click here.

This Software is Community-run

Open-source software is not sustainable without proper financial support. Maintaining an open source project takes a lot of effort and resources. If you are very thankful for what you can do with AmplitudeJS or if you are using AmplitudeJS to make any sort of revenue, we kindly ask that you contribute any resources available to keep the community growing.

Sponsors

These people believe in open-source. If you are interested in improving the project, become a sponsor.

Platinum Sponsors

Gold Sponsors

Silver Sponsors

AWISE

Backers

Features

  • 🎨 100% customizable design of all player elements
  • 🚀 Lightweight, 0 dependencies
  • 📕 Thoroughly documented
  • 🎧 Support for multiple playlists
  • 🌊 Autogenerate waveforms and visualizations using the Web Audio API
  • 🎤 Live streaming support
  • 🎛 Public functions for unlimited control!
  • 🤵 Professionally supported Get professional help →

Don't just take our word for it

Browser Support

IE / Edge
IE / Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
Opera
Opera
IE11, Edge 4.0+ 3.5+ 4.0+ 10.5+

Example Players

Looking for some cool examples to get started with? View all of our example players →

View the source

All of our example players have the code available on our "AmplitudeJS Example Players" repository. Feel free to submit a PR of your own example if you want! See the source for our example players →

Installation

Installation is a breeze and very flexible on how you want to use it. View the installation instructions →

Documentation & Usage

All of our documentation is located in the /docs folder, but we made an even easier and more beautiful way to fully experience AmplitudeJS. View our documentation site →

Getting Help

Feeling stuck? No worries! We have entire community built around helping eachother out. Get help →

Roadmap

We have all of our proposed features organized on our roadmap. If you are interested in sponsoring a specific feature, just comment on that feature and we will get in touch with you soon!

Comments
  • IOS / OSX Safari - wait for track to fully buffer/download before audio starts

    IOS / OSX Safari - wait for track to fully buffer/download before audio starts

    Hello

    I think this is more of a bug than a feature request - it's a real barrier for a job I'm working on. When playing a track in OSX Safari (V13) or IOS13 Safari the user needs to wait while the track buffers out fully before listening. Works perfectly in Chrome and Firefox.

    Thanks, Liam

    Bug: Can't Fix 😞 
    opened by liamcrean 20
  • AudioContext not allowed to start

    AudioContext not allowed to start

    Issue description

    This is the warning message that I'm getting: The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.

    Environment

    • Amplitude.js Version: "4.0.0"

    Steps to reproduce the issue

    1. Integrate the dynamic songs example
    2. Play

    What is expected?

    Music should be played properly

    Link to where issue can be reproduced

    Additional details / screenshots

    Bug: Needs Confirmation 🧐 
    opened by ImRajdeepB 19
  • Cannot read property 'active_index' of undefined

    Cannot read property 'active_index' of undefined

    Issue description

    When I upgrade AmplitudeJS to version 5.3 I get 'Uncaught TypeError: Cannot read property 'active_index' of undefined' in the console when I try to play my playlist. It looks as though it's not loading the playlist. When you hit play, you can see the progress bar is not functional and the Play button is missing. Previously when using version 5.2 this worked great as far as playing and skipping tracks. But the Repeat and Shuffle don't work. Which is why I was trying to upgrade.

    Environment

    This is in Wordpress hosted by Kinsta.

    • What's My Browser Support link: {{ https://www.whatsmybrowser.org/b/YJHK5 }}
    • Amplitude.js Version: 5.3.1

    Steps to reproduce the issue

    1. go to this url: http://cbhdev2.kinsta.cloud/login - login with username: [email protected] Password: TempPass392!
    2. Navigate to 'The Healing Room' in the left sidebar menu. and scroll down to the bottom of the page.
    3. Click on the Play button under My Deliverance Prayer List. You'll see the player 'load' in a popup but missing the Play button in the middle there between the forward and backward skips. If you click in that area you'll get the error in the console.

    What is expected?

    The playlist should be loading dynamically. When the page loads it checks if the user has any saved playlists and inserts the playlists and songs into Amplitude.init(). when the inital Play button is clicked on the page, it loads the player in the popup and when the Play button in the popup is clicked it plays through the playlist.

    Link to where issue can be reproduced

    http://cbhdev2.kinsta.cloud/the-healing-room/ username: [email protected] Password: TempPass392!

    Additional details / screenshots

    If you look in the console when that page is loaded you will see the object playlist being logged with the Playlist name and the songs.

    Bug: Needs Confirmation 🧐 
    opened by mcirami 17
  • no sound on some devices

    no sound on some devices

    Environment

    • Browser: chrome
    • Browser Version: latest
    • Operating System: android
    • Amplitude.js Version: 2.3

    Issue description

    On some android phones there is no sound. We tried 2 equal phones of the same brand. One played, the other not..

    Link to where issue can be reproduced

    http://loschi.de/mobil/05demo.html

    opened by snote 14
  • On mobile devices (iPad, Android phone), progress bar doesn't update on first song

    On mobile devices (iPad, Android phone), progress bar doesn't update on first song

    Issue description

    Use an iPad (Safari or Chrome) or Android phone (Samsung browser or Chrome) and navigate to:

    https://521dimensions.com/open-source/amplitudejs/docs/examples/

    Play the first song loaded in any of the examples. Note that the song will play, but the progress bar will not update. The current time will also not update. Tapping on the progress bar will change the position on the song, but you will not see any indication of the new song position on either the current time nor the progress bar. Once you change songs, everything mentioned previously will work.

    This is a particular problem for me because I would like to use the single song player. Because there is only one "song", I am unable to get the current time & progress bar to work properly on the mobile devices I've tested on.

    Environment

    • What's My Browser Support link: https://www.whatsmybrowser.org/b/C3A20 https://www.whatsmybrowser.org/b/YQMFU https://www.whatsmybrowser.org/b/SJTQE https://www.whatsmybrowser.org/b/4KKMB
    • Amplitude.js Version: whatever version you use on your examples page.

    Steps to reproduce the issue

    1. Use one of the device/browsers listed.
    2. Navigate to https://521dimensions.com/open-source/amplitudejs/docs/examples/
    3. Play the song (for single song player) or first song (for all others)

    What is expected?

    Current time updates while song plays. Progress bar updates while song plays.

    Link to where issue can be reproduced

    https://521dimensions.com/open-source/amplitudejs/docs/examples/

    Additional details / screenshots

    Contributions Welcome 🙏 Bug: Confirmed 🐛 
    opened by txironman 12
  • How can I add all three example player in same page?

    How can I add all three example player in same page?

    Issue description

    I want to add three audio player/playlist in same page. How can I do that? Is there any way to initialize amplitude.js by class/id name of HTML? Now, If I add three or two player/playlist in same page it play same song and if I click play/pause button for one it work for all. How can I fixed that? Suggestion please.

    opened by mamunhpath 12
  • Allow multiple player on same webpage

    Allow multiple player on same webpage

    FEATURE REQUESTS: Do there any option to add multiple player on one page? If not, please add this features or at least give us chance to do by using dom element as our want.

    Issue description

    It's important to have multiple player support with their own playlist to make a music site.

    opened by foysalremon 12
  • Visualizer from D3.js

    Visualizer from D3.js

    Hi

    The bars visualizer from the examples is not working on Chrome (Version 73.0.3683.103 (Build officiel) (64 bits) from Mac), that's why I'm trying to build mine.

    I'm using D3.JS (btw it can really make fantastic things with audio API). I'm starting from the begining with a very basic bars visualizer. But Chrome says "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page."

    I know that's not really the good way to do, I should use the "visualization" option to build a custom one, but this seems so complicated...Now this is my code and Firefox like it, but not Safari and Chrome.

    Do you think it's impossible to get the AudioContext from the "play" callback ? How can I repear it for Chrome ?

    
    'play':function(){
         
        var file = Amplitude.getAudio().src;
    
        var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
        var audioElement = Amplitude.getAudio();
        var audioSrc = audioCtx.createMediaElementSource(audioElement);
        var analyser = audioCtx.createAnalyser();
    
        // Bind our analyser to the media element source.
        audioSrc.connect(analyser);
        audioSrc.connect(audioCtx.destination);
    
        //var frequencyData = new Uint8Array(analyser.frequencyBinCount);
        var frequencyData = new Uint8Array(200);
    
        var svgHeight = $('#svg').innerHeight();
        var svgWidth = $('#svg').width();
        var barPadding = '1';
    
        function createSvg(parent, height, width) {
         return d3.select('.player #svg').append('svg').attr('height', height).attr('width', width);
        }
    
        var svg = createSvg('body', svgHeight, svgWidth);
    
        // Create our initial D3 chart.
        svg.selectAll('rect')
         .data(frequencyData)
         .enter()
         .append('rect')
         .attr('x', function (d, i) {
         return i * (svgWidth / frequencyData.length);
        })
         .attr('width', svgWidth / frequencyData.length - barPadding);
    
        function renderChart() {
         requestAnimationFrame(renderChart);
         analyser.getByteFrequencyData(frequencyData);
         svg.selectAll('rect')
          .data(frequencyData)
          .attr('y', function(d) {
          return svgHeight - d / 4;
         })
          .attr('height', function(d) {
          return d;
         })
          .attr('fill', function(d) {
          return 'black';
         });
        }
    
        // Run the loop
        renderChart();
         },
    

    Xoxo

    opened by culbrique 11
  • How to replace songs array?

    How to replace songs array?

    Hello! Thanks for a good work! I've got about 50000 songs and a lot of playlists, and I can't just initialize Amplitude.js with a ton of songs... If user listen a single playlst I could just load a new songs by ajax and use .addSong method, that's works fine. BUT that doesn't works if user changes a playlist and I have to remove all songs form the player and fill it with a new songs... Is there some way to do this? p.s. I'm using vuejs and trying to get some reactivity

    Enhancement ⚡️ 
    opened by fiter92 11
  • support other format such as wma

    support other format such as wma

    when i wanna play wma format in console i see this message

    HTTP “Content-Type” of “audio/x-ms-wma” is not supported. Load of media resource

    is there any way to play all format ?

    opened by gh-darvishani 11
  • iOS Chrome: Song stops playing after 5-10 seconds when phone is locked

    iOS Chrome: Song stops playing after 5-10 seconds when phone is locked

    Hi, I have an issue with background audio for my website. On mobile devices the audio continues normally if I lock my phone on android but on iOS it works for few seconds then it stops on Chrome and works fine on Safari. Any idea why is this happening?

    Bug: Needs Confirmation 🧐 
    opened by Zipikinho 10
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    Dependency Update ⚙️ 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    Dependency Update ⚙️ 
    opened by dependabot[bot] 0
  • Bump loader-utils and webpack

    Bump loader-utils and webpack

    Bumps loader-utils to 1.4.2 and updates ancestor dependency webpack. These dependencies need to be updated together.

    Updates loader-utils from 1.2.3 to 1.4.2

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    v1.4.0

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    v1.3.0

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)
    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    Commits

    Updates webpack from 2.7.0 to 5.75.0

    Release notes

    Sourced from webpack's releases.

    v5.75.0

    Bugfixes

    • experiments.* normalize to false when opt-out
    • avoid NaN%
    • show the correct error when using a conflicting chunk name in code
    • HMR code tests existance of window before trying to access it
    • fix eval-nosources-* actually exclude sources
    • fix race condition where no module is returned from processing module
    • fix position of standalong semicolon in runtime code

    Features

    • add support for @import to extenal CSS when using experimental CSS in node
    • add i64 support to the deprecated WASM implementation

    Developer Experience

    • expose EnableWasmLoadingPlugin
    • add more typings
    • generate getters instead of readonly properties in typings to allow overriding them

    v5.74.0

    Features

    • add resolve.extensionAlias option which allows to alias extensions
      • This is useful when you are forced to add the .js extension to imports when the file really has a .ts extension (typescript + "type": "module")
    • add support for ES2022 features like static blocks
    • add Tree Shaking support for ProvidePlugin

    Bugfixes

    • fix persistent cache when some build dependencies are on a different windows drive
    • make order of evaluation of side-effect-free modules deterministic between concatenated and non-concatenated modules
    • remove left-over from debugging in TLA/async modules runtime code
    • remove unneeded extra 1s timestamp offset during watching when files are actually untouched
      • This sometimes caused an additional second build which are not really needed
    • fix shareScope option for ModuleFederationPlugin
    • set "use-credentials" also for same origin scripts

    Performance

    • Improve memory usage and performance of aggregating needed files/directories for watching
      • This affects rebuild performance

    Extensibility

    • export HarmonyImportDependency for plugins

    v5.73.0

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    Dependency Update ⚙️ 
    opened by dependabot[bot] 0
  • Prototype pollution in metadata setter

    Prototype pollution in metadata setter

    Hi there, I found a potential prototype pollution in the metadata setter setSongMetaData and setPlaylistMetaData under some specific condition.

    Here is the sample code:

    let obj = {};
    Amplitude.addPlaylist("__proto__", {}, []);
    Amplitude.setPlaylistMetaData("__proto__", { a: "pollution" });
    console.log(obj.a); // output: pollution
    

    Expected behaviour: obj.a should be undefined.

    opened by aplhk 0
  • Add updatePlaylist method, docs and tests.

    Add updatePlaylist method, docs and tests.

    I'm developing a player that uses playlists which can be reordered. In order to pass these changes to Amplitude, a new playlist method is required. (In theory I could just create new playlists with a new hash as a name, but that feels hackish. More importantly: it would lose the state of the active_index, so navigation will become unreliable)

    It reuses existing code to avoid duplication, and the tests and docs have been updated.

    opened by sab666 0
Releases(v5.3.2)
  • v5.3.2(Jun 11, 2021)

    Minor bug where the start_song parameter required a starting_playlist. We actually don't want a starting_playlist when checking the start_song. A starting_playlist should only be active IF the user wants to start a certain playlist and then they'd use the starting_playlist_song paramter.

    Source code(tar.gz)
    Source code(zip)
  • v5.3.1(Apr 1, 2021)

    This is a minor release that fixes an issue with the player state being in accurate. If the user didn't click to interact with the page, the player state would not represent the state of the player.

    Bug Fixes

    #452

    Source code(tar.gz)
    Source code(zip)
  • v5.3.0(Feb 15, 2021)

    Includes revert from 5.2 back to 5.0.3 (last working version without major bugs)

    New Features

    Features "re-added" after reverting the codebase to 5.0.3

    • v5.1.0 -> Added prependSong()

    Bugs "re-fixed" after reverting the codebase to 5.0.3

    • #425
    • #435
    • #434
    • #422
    • #419
    Source code(tar.gz)
    Source code(zip)
  • v5.3.0-beta.16(Feb 15, 2021)

  • v5.3.0-beta.14(Feb 15, 2021)

    Includes revert from 5.2 back to 5.0.3 (last working version without major bugs)

    Features Added from Previous Releases After 5.0.3

    • v5.1.0 -> Added prependSong()

    Bugs Fixed from Previous Releases After 5.0.3

    • #425
    • #435
    • #434
    • #422
    • #419

    Bugs to be fixed on deployment

    • #441

    Bugs to be re-visited and reopened upon deployment

    • #420
    • #320
    • #440
    Source code(tar.gz)
    Source code(zip)
  • v5.2.1(Feb 13, 2021)

  • v5.2.0(Jul 9, 2020)

    New Features

    • Added a public method for Amplitude.stop() (#399)
    • Allow initialization with only playlists (#440)

    Bug Fixes

    • Fixed issue where native events became "unbound" after song changes (#441)
    • Fixed issue where AmplitudeCore is undefined (#435)
    • Fixed issue with shuffle highlighting the wrong song in the active song container (#434)
    Source code(tar.gz)
    Source code(zip)
  • v5.1.0(May 29, 2020)

    This release addresses a lot of the memory management with large files and re-binding of audio events.

    Features

    • Added prependSong() method to allow you to add a song to the front of the songs array.

    Bug Fixes

    • #425

    PRs merged

    • #420
    • #394
    • #374

    Thanks to the following contributors: @phranzia, @klh, @rowild, @szepeviktor, and @anybany for their hard work!

    Source code(tar.gz)
    Source code(zip)
  • v5.0.3(Nov 6, 2019)

  • v5.0.2(Jul 18, 2019)

  • v5.0.1(Jul 15, 2019)

  • v5.0.0(Jul 12, 2019)

    Features

    We focused on making AmplitudeJS easier to use than ever before! Not many changes were added to the core, but we added a ton of new features to stabilize future releases and make it even easier to get started with AmplitudeJS. These features include:

    • Released entirely new demo website ✨
    • Moved all examples to CodePen for easier understanding
    • Greatly improved and organized documentation
    • Much clearer instructions on how to install and get started
    • Added automated testing with TravisCI and Jest tests
    • Added ability for people to become "backers" or "sponsors" on our open collective page
    • Added instructions on how people can contribute to AmplitudeJS (in any capacity)

    Bug fixes

    We didn't stop there either... We squashed a lot of bugs too:

    • #254
    • #316
    • #327
    • #314
    • #337
    • #343
    • #346
    • #313
    Source code(tar.gz)
    Source code(zip)
    amplitude.js(370.07 KB)
    amplitude.min.js(94.11 KB)
  • v4.1.0(Mar 5, 2019)

    Fixes issues with the Web Audio API not playing audio on Safari and Chrome. This ensures that the user interacts before the Web Audio API starts.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(Jan 9, 2019)

    New Features

    AmplitudeJS 4.0 comes packed with a ton of new features such as:

    • Web Audio API Visualization Elements - You can now visualize your audio and create custom visualizations in a simple template structure!
    • Wave Form Elements - You can now generate waveforms for your AmplitudeJS audio using the Web Audio API.
    • Callbacks For All HTML5 Audio Events - All HTML5 Audio element events are able to be hooked into: https://www.w3schools.com/tags/ref_av_dom.asp
    • Time Based Callbacks - You can now run a method at a certain point within a piece of audio.
    • Re-structured Code - Everything is modular and easy to be extended and maintained.

    Breaking Changes

    AmplitudeJS 4.0 was one of the biggest releases thus far. We tried to limit the breaking changes, but in order to scale for the future we had to make a few. I should have every change documented below and the reason why the change was made.

    All AmplitudeJS Attributes Have HTML5 Dataset Prefix

    In order to make AmplitudeJS validated properly by w3 terms, we prefixed all of the attributes on AmplitudeJS elements to have the data- prefix. This makes all of the attributes compatible with the HTML5 dataset API: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset

    What this means is any time you are defining a specific element for a song or playlist, you will have to use data-amplitude-song-index or data-amplitude-playlist. In 3.x releases, these were just amplitude-song-index or amplitude-playlist. In order to work with 4.0 and above, you will have to update these references.

    Standard Attributes For Defining Elements

    In versions 3.x, we had a variety of different attributes to define an element based on it's level of use. For example, if we had a global play/pause button it'd be amplitude-main-play-pause="true" as an attribute. This got really cumbersome with multiple elements existing on either a global level (controlling the entire player), a playlist level (controlling functions within a playlist), a song level (controlling an individual song), and a song in playlist level (controlling a song within a playlist). Now everything is based on a combination of attributes. These are as follows:

    • Global Level: class="amplitude-{specialized-class}"
    • Playlist Level: class="amplitude-{specialized-class}" data-amplitude-playlist="{playlist}"
    • Song Level: class="amplitude-{specialized-class}" data-amplitude-song-index="{songIndex}"
    • Song In Playlist: class="amplitude-{specialized-class}" data-amplitude-song-index="{songIndex}" data-amplitude-playlist="{playlist}"

    These combinations work for all elements that are in AmplitudeJS. Now there are some elements that don't span all of the scopes. Let's take an amplitude-volume-up element. This only works on the global level. It wouldn't make sense to have individual playlist volumes.

    Playlist Song Indexes Are Scoped To Playlist

    In versions 3.x song indexes are now scoped to playlists. What this means is that when you use data-amplitude-song-index on a song display IN a playlist, it references the index of the song in the playlist instead of the songs array. For example if song index 1 is used on the 'Hip Hop' playlist, it references song index 1 within that playlist. Before it was the index in the songs array.

    Next And Previous Buttons Only Work In Playlists If Playlist Is Active

    So there are two levels of next and previous buttons. The global level which will react to the state of the player and the playlist level. If a global level next button or previous button is clicked, it will either go to the next/previous song in the songs array if no playlist is active, or the next/previous song in the playlist if a playlist is active. Now on the playlist level the buttons only go to the next/previous song in the playlist when clicked and ONLY if the playlist is active. If you click a next/previous button on a playlist that isn't active, it doesn't do anything. It will only print a debug message if debug is turned on.

    Autoplay Configuration Has Been Removed

    Most browsers do not support autoplay features anymore. The functionality to set up AmplitudeJS for autoplay has been removed. If you initialize with autoplay, it will just be ignored.

    That should be the migrations! If you ran into anything, please reach out and we can lend a hand!

    Bug Fixes

    • Fixes #303
    • Fixes #293
    • Fixes #283
    • Fixes #288
    • Fixes #291
    Source code(tar.gz)
    Source code(zip)
    v4.0.0.zip(3.36 MB)
  • v3.3.1(Aug 22, 2018)

    New Features

    • Allows for delay between songs
    • Allows for user to dynamically update meta data

    Bug Fixes

    • Returns proper songs from get songs in playlist
    • Fixed issue where song won't play after song sliding and mute
    • Set next fires when adding a song
    • Allow starting playlist song
    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Jun 19, 2018)

    New Features

    • Added two new example players
    • Autofill with metadata
    • Add songs to playlists dynamically
    • Logic implemented to continue after next song ends
    • Added playlist_changed and time_updated callbacks

    Bug fixes

    • #228
    • #230
    • #232
    • #233
    • #234
    • #236
    • #238
    • #239
    • #240
    • #242
    • #243
    • #244
    • #245
    • #247
    • #248
    • #250
    • #251
    • #252
    • #253
    • #255
    • #256
    • #257
    • #258
    • #259
    • #260
    • #261
    • #263
    • #264
    • #266
    Source code(tar.gz)
    Source code(zip)
  • v3.2.3(Nov 16, 2017)

  • v3.2.2(Nov 16, 2017)

  • v3.2.1(Oct 26, 2017)

    Enhacements

    • Added two examples

    Bug Fixes

    • Fixed documentation issues
    • Added continue_next to the config to disabled playlist functionality if wanted
    • Updated repeat functionality so the playlist won't repeat unless it's on. Also adjusted some of the example styles and functionality.
    • Changed songs to be an array instead of an object by default. Fixes #196
    • Added the re display of elements when a new song has been added. Fixes #183
    Source code(tar.gz)
    Source code(zip)
    amplitude.js(203.67 KB)
    amplitude.min.js(54.19 KB)
  • v3.2.0(Sep 28, 2017)

    Lots of new features added in this release. We focused on improving the access to the core of AmplitudeJS and added a few fun things along the way!

    • Added key bindings for AmplitudeJS actions
    • Amplitude.getSongs()
    • Amplitude.getSongsInPlaylist( playlistKey )
    • Amplitude.getSongsState()
    • Amplitude.getSongsStatePlaylist( playlist )
    • Amplitude.getActiveIndexState()
    • Amplitude.getVersion()
    • Amplitude.getBuffered()
    • Amplitude.getSongPlayedPercentage()
    • Amplitude.setSongPlayedPercentage( percentage )
    • Added song HTML 5 progress element for more control on styling
    • Removed song time visualization and replaced with progress element. No more markup being added!
    • Added song buffered progress bar
    Source code(tar.gz)
    Source code(zip)
    amplitude.js(203.69 KB)
    amplitude.min.js(53.90 KB)
  • v3.1.0(Jun 21, 2017)

    New Features

    • Officially added browser support to README (#71)
    • We included an official minified version of amplitude.js in the /dist directory (#68)
    • We now have example players for you in the /examples directory (#87)
    • Added Pause Callback (#37)
    • Add method to expose setting track time as percentage (#81)
    • You can now move to next or previous song by using Amplitude.next(),Amplitude.prev(), Amplitude.next( playlistIndex ), or Amplitude.prev( playlistIndex ) (#103)
    • Every user settable variable in the config has a getter and a setter publicly exposed. This will give full control at all times to the developer/designer of the functionality of AmplitudeJS. (#80)

    Bug fixes

    • Fixed issues with repeat behavior (#98 & #74)
    • Adjusted HTMLMediaElement.currentTime to a finite floating-point value (#95)
    Source code(tar.gz)
    Source code(zip)
    amplitude.js(196.34 KB)
    amplitude.min.js(51.12 KB)
  • v3.0.2(May 24, 2017)

  • v3.0.1(May 24, 2017)

    New Features

    • Complete code-base restructure focused on modern Javascript development techniques and bundled together using webpack. There is little to no migration necessary from 2.0 to 3.0.
    • Playlists: All of the media on the page can be organized into playlists through the songs array
    • Multiple Playlist Support: Multiple playlists can share the same page
    • We made it much easier on how to contribute to the AmplitudeJS project

    Bug Fixes

    • Numerous, numerous bug fixes

    Removed

    • Web Audio API visualization capability: This will be re-added as a plugin in future releases with more flexibility and control of the visualizations.
    Source code(tar.gz)
    Source code(zip)
    amplitude.js(190.44 KB)
  • v2.2(Sep 10, 2015)

  • v2.0.0(May 4, 2015)

  • v1.0(Apr 9, 2015)

Owner
Server Side Up
Quality tutorials & resources. No BS.
Server Side Up
HTML5

One file. Any browser. Same UI. Author: John Dyer http://j.hn/ Website: http://mediaelementjs.com/ License: MIT Meaning: Use everywhere, keep copyrigh

MediaElement.js 8k Dec 27, 2022
HTML5

One file. Any browser. Same UI. Author: John Dyer http://j.hn/ Website: http://mediaelementjs.com/ License: MIT Meaning: Use everywhere, keep copyrigh

MediaElement.js 8k Jan 8, 2023
Audio visualizer library for javascript. Create dynamic animations that react to an audio file or audio stream.

Wave.js Audio visualizer library for javascript. Installation Install With CDN <script src="https://cdn.jsdelivr.net/gh/foobar404/wave.js/dist/bundle.

Austin Michaud λ 497 Dec 21, 2022
Video.js - open source HTML5 & Flash video player

Video.js - HTML5 Video Player Video.js is a web video player built from the ground up for an HTML5 world. It supports HTML5 video and Media Source Ext

Video.js 34.8k Jan 5, 2023
A web video player built for the HTML5 world using React library.

video-react Video.React is a web video player built from the ground up for an HTML5 world using React library. Installation Install video-react and pe

null 2.4k Jan 6, 2023
This is a simple web based media player for playing video and audio. Build with pure HTML, CSS and Javascript. No framework or library included.

Aim-Player This is a simple web based media player for playing video and audio. Build with pure HTML, CSS and Javascript. No framework or library incl

Aim Mikel 2 Jun 27, 2021
The HTML5 video player for the web

Flowplayer website | demos | docs For the impatient Download Flowplayer Unzip Drop the folder under your server Minimal setup <!DOCTYPE html> <head>

Flowplayer 1.9k Dec 30, 2022
Music-Player - Music player application built with HTML, CSS and vanilla JavaScript

Music-Player Music player application built with HTML, CSS and vanilla JavaScrip

Karthik Umashankar 1 Feb 10, 2022
SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

WordPress-Plugin-SrsPlayer SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc. Usage First, you should get your own video stream

ossrs 3 Jul 27, 2022
SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

ossrs 12 Oct 15, 2022
An online stem player. Inspired by but not affiliated with YEEZY TECH X KANO Stem Player.

Stem Player Online An online stem player. Inspired by but not affiliated with YEEZY TECH X KANO Stem Player. https://stemplayeronline.com See the proj

Luke Weiler 23 Nov 13, 2022
Buzz, a Javascript HTML5 Audio library

Buzz is a small but powerful Javascript library that allows you to easily take advantage of the new HTML5 audio element. It tries to degrade silently on non-modern browsers.

Jay Salvat 1.2k Dec 10, 2022
:musical_score: ts-audio is an agnostic library that makes it easy to work with AudioContext and create audio playlists in the browser

ts-audio · ts-audio is an agnostic and easy-to-use library to work with the AudioContext API and create Playlists. Features Simple API that abstracts

Evandro Leopoldino Gonçalves 284 Dec 25, 2022
Movie focused HTML5 Player

Movie focused HTML5 Player

Bruno Vieira 1.6k Dec 29, 2022
A simple HTML5, YouTube and Vimeo player

Plyr is a simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo media player that supports modern browsers. Checkout the demo - Do

Sam Potts 23.1k Jan 3, 2023
Accessible HTML5 Video Player

Accessible HTML5 Video Player What is it? A lightweight HTML5 video player which includes support for captions and screen reader accessibility. For de

PayPal 2.4k Jan 5, 2023
HTML5 fmp4 live stream (ll-fmp4) player written in TypeScript

umataste HTML5 fmp4 live stream (ll-fmp4) player written in TypeScript Feature Playback for fmp4 stream Extremely low latency of less than 0.1 second

もにょ~ん 5 Oct 21, 2022
This project was created to help discord.js developers start their own bot, you can take this project as a basic for your bot and add things to it as you want. 🙂

Discord.js Starter-Bot A small & basic discord.js bot to help you get started ??️ This project was created to help discord.js developers start their o

Strike 3 Nov 29, 2022
Radio player for audio tracks in a tezos wallet.

Hicathon 2021 | WG7 7.2 - Galleries and collections Minimal galleries for exhibitions The Team: Name Role Discord Username Twitter Username Wallet Tea

Sean Cooper 23 Jul 11, 2022