2022-05-12
2908
#vanilla javascript
Iskander Samatov
106930
May 12, 2022 ⋅ 10 min read

Write an audio visualizer from scratch with vanilla JavaScript

Iskander Samatov I’m a technical lead at HubSpot based in Dallas-Fort Worth Metropolitan Area. When I have time, I enjoy working on SaaS products and writing programming articles at https://isamatov.com.

Recent posts:

featured image tsx extension

What is the difference between a .ts and .tsx file extension?

Examine the differences between the .ts and .tsx file types, their use cases, and best practices for a React TypeScript project.

Hussain Arif
Mar 27, 2025 ⋅ 8 min read
How To Use Try...catch For Error Handling In JavaScript

How to use try...catch for error handling in JavaScript

Learn how to use JavaScript try…catch for error handling, including syntax, advanced scenarios, and managing asynchronous code.

Ivy Walobwa
Mar 27, 2025 ⋅ 5 min read
Designing For Instant Feedback- The Doherty Threshold In UX

Designing for instant feedback: The Doherty Threshold in UX

The Doherty Threshold suggests that when feedback occurs within this timeframe, users feel more in control and remain engaged.

Chidera Nwankwagu
Mar 26, 2025 ⋅ 4 min read
what is pair programming

What is pair programming – and should you try it?

Learn what pair programming is, its benefits, and how real-world implementation can improve your software development process.

Andrew Evans
Mar 26, 2025 ⋅ 6 min read
View all posts

One Reply to "Write an audio visualizer from scratch with vanilla JavaScript"

  1. This was super helpful, but I noticed a slight error in the sample code under “Resizing the Bars” — the second loop requires some adjustments to actually render that half of the visualizer on page.

    I was able to get it working by:
    1. Resetting the value of x in between the two loops.
    2. Setting the X argument of the call to fillRect in the second loop to canvas.width / 2 + x.

    I see a different approach was taken as I examine the code further on in “Tuning the Performance”, which leverages two separate X values, but the result is the same.

Leave a Reply