Interactive Record Player

An experimental template with an interactive old school record player powered by the Web Audio API.

Today we’d like to share an experimental old school record player template with you. The idea is to tap into the incredibly awesome Web Audio API and see what we can do with it. The demo starts with an initial grid view, powered by Masonry. Once a grid item is clicked, a circle expands and covers the grid, revealing the selected album. Now we are in a slideshow view where we can browse through the records. Once we hit the play button, we load the songs of the record and then show the record player. The tonearm of the record player moves to the right position and the music starts playing. Each record has songs associated to each side of the LP and we can drag the tonearm to play from a certain position. Additionally, we can add some playful effects, like the scratchy vinyl noise or some acoustic impulse responses.

Attention: This demo is highly experimental — fearless browsers only!

Let’s have a look at the different views for this demo.

The initial view is the Masonry-powered grid that has some item offsets for an asymmetric look:

InteractiveRecordPlayer_1

Once a grid item is clicked, we show the single record with a Material Design-like effect of an expanding circle that hides the grid:

InteractiveRecordPlayer_2

The single record view is a slideshow where we can navigate between the records. Once the play button is pressed, we load the songs and show the player:

InteractiveRecordPlayer_3

Tiny break: 📬 Want to stay up to date with frontend and trends in web design? Subscribe and get our Collective newsletter twice a tweek.

Credits and Resources

We hope you enjoy this little experiment and find it inspiring!

Manoela Ilic

Manoela is the main tinkerer at Codrops. With a background in coding and passion for all things design, she creates web experiments and keeps frontend professionals informed about the latest trends.

Stay in the loop: Get your dose of frontend twice a week

Fresh news, inspo, code demos, and UI animations—zero fluff, all quality. Make your Mondays and Thursdays creative!

Feedback 39

Comments are closed.
  1. Mary Lou,

    You make me smile. I have an amazing use for this. Will post when live. It will make YOU smile.

    Showing some love from New Orleans

  2. The vinyl must rotate at 33 or 45 rpm and the pickup angle is wrong. correct those errors. Anyway , great work

  3. Mary Lou… i fell in love with you 🙂 (your works included)
    those are wonderful

  4. This website and Mary You is amazing, I was always looking for something like this! Keep up posting quality stuff like this!

  5. This BLEW my mind. Amazing work! Any way to sync records with associated tracks on Spotify?

  6. Hello! Excellent your work!
    I would like to take a doubt …
    When I open the site offline, the content not is open, it is only charging.
    Online this does not happen .. Why?
    Thx

  7. I can never get bored of seeing the awesome demos and tuts you share! Awesome work Mary!

    • This demo uses an API to fetch the mp3’s data, which is in the file “abbey-load.js”. This API doesn’t allow cross-origin requests, means you can’t use “file” protocol, only “http” is allowed. Try opening using WAMP or XAMP/ LAMP whatever you use for apache server/nginx server. It will work fine. 🙂

  8. Awesome Player.I am using this player into a wordpress theme.While Integrating this player I found that, before playing songs, the player need to load or download all the songs.Is there a way to play song while buffering (not downloading full song and then playing)?