JSFiddle - React, Tailwind, and code Playground
by realhunts
JavaScript
window.onload = function() {
const file = document.getElementById("file-input");
const canvas = document.getElementById("canvas");
const h3 = document.getElementById('name')
const audio = document.getElementById("audio");
file.onchange = function() {
///////// <CANVAS> INITIALIZATION //////////
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const ctx = canvas.getContext("2d");
///////////////////////////////////////////
const context = new AudioContext(); // (Interface) Audio-processing graph
let src = context.createMediaElementSource(audio); // Give the audio context an audio source,
// to which can then be played and manipulated
const analyser = context.createAnalyser(); // Create an analyser for the audio context
src.connect(analyser); // Connects the audio context source to the analyser
analyser.connect(context.destination); // End destination of an audio graph in a given context
// Sends sound to the speakers or headphones
/////////////// ANALYSER FFTSIZE ////////////////////////
analyser.fftSize = 16384;
// analyser.fftSize = 32768;
const bufferLength = analyser.frequencyBinCount; // (read-only property)
// Unsigned integer, half of fftSize (so in this case, bufferLength = 8192)
// Equates to number of data values you have to play with for the visualization
// The FFT size defines the number of bins used for dividing the window into equal strips, or bins.
// Hence, a bin is a spectrum sample, and defines the frequency resolution of the window.
const dataArray = new Uint8Array(bufferLength); // Converts to 8-bit unsigned integer array
// At this point dataArray is an array with length of bufferLength but no values
console.log('DATA-ARRAY: ', dataArray) // Check out this array of frequency values!
const WIDTH = canvas.width;
const HEIGHT = canvas.height;
console.log('WIDTH: ', WIDTH, 'HEIGHT: ', HEIGHT)
...