Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@breakfast-dlc/visualize

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@breakfast-dlc/visualize

Visualize is a library that uses the Web Audio API to create live audio visualizations in the browser.

  • 0.2.0
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Visualize

Visualize is a library that uses the Web Audio API to create audio visualizations in the browser.

Installation

You can add Visualize as a package using npm

npm install @breakfast-dlc/visualize

or you can add it to a page using a script tag.

<script src="https://cdn.jsdelivr.net/npm/@breakfast-dlc/visualize@0.2.0/dist/index.js"></script>

Usage

To import the library

import * as Visualize from "@breakfast-dlc/visualize";

or you can import specific visualizer classes.

import { Oscillope } from "@breakfast-dlc/visualize";

Getting Started

Creating a Visualizer

Visualizers require an AnalyserNode and a canvas element. Visualize will automatically create these for you.

//Create visualizer
let visual = new Visual.FrequencyGraph();

//Add canvas to document
let container = document.getElementById("container");
container.append(visual.canvas);

//Connect audio source to visualizer
let audio = document.getElementById("audio");
let mediaSource = visual.audioContext.createMediaElementSource(audio);
mediaSource.connect(visual.analyser);

You can also assign your own AnalyserNode and canvas element

//Create AnalyserNode
let audioContext = new window.AudioContext();
let analyser = audioContext.createAnalyser();

//Connect audio to analyser
let audio = document.getElementById("audio");
let mediaSource = audioContext.createMediaElementSource(audio);
mediaSource.connect(analyser);

//Get canvas element
let canvas = document.getElementById("canvas");

//Create visualizer
let visual = new Visualize.FrequencyGraphBlocks({ analyser, canvas });

Visualizer Properties

All visualizers have the following properties:

  • analyser {AnalyserNode}: The AnalyserNode the visualizer will use to get data about the audio.
  • canvas {HTMLCanvasElement}: The canvas element the visual will use to render the visual.
  • fps {number}: The frames per second that the visualition should run at. Defaults to the highest possible fps in the browser, which is typically around 60 fps.
  • aspectRatio { {height: number , width: number } }: The aspect ratio to use when sizing the canvas. Defaults to 16:9.
  • backgroundColor {string | string[]}: The background color to use for the visualization.
  • color {string | string[]}: The foreground color to use for the visualization.

All properties can be set directly

let visual = Visualize.Oscillope();
visual.analyser = customAnalyser;
visual.canvas = customCanvas;
visual.lineWidth = 5;
visual.backgroundColor = ["#333333", "#DDDDDD"];
visual.color = "aqua";

as well as set when the object is created.

let visual = Visualize.Oscillope({
    analyser: customAnalyser,
    canvas: customCanvas,
    lineWidth: 5,
    backgroundColor: ["#333333", "#DDDDDD"],
    color: "aqua",
});

Available Visualizers

Here is a list of all available visualizers as well as any additional properties they may have:

Oscillope
  • lineWidth {number}: The width of the Oscillope's line in pixels.
FrequencyCurve
  • lineWidth {number}: The width of the Frequency Curve's line in pixels.
  • fillColor {string | string[]}: The color / array of color to fill the space under the curve.
FrequencyGraph
  • columnCount {number}: The number of columns or bars to use in the visualization.
  • gap {number}: The amount of space (in pixels) between each column.
FrequencyGraphBlocks
  • columnCount {number}: The number of columns or bars to use in the visualization.
  • rowCount {number}: The number of blocks each column will be split into.
  • gap {number}: The amount of space (in pixels) between each column and each row.

Visualizer Callbacks

You can add a callback to a visualizer that will run at a specific point each time a frame of the visualization is rendered.

let visual = new Visualize.FrequencyCurve({ analyser, canvas });
visual.addCallback("setUpForeground", (canvasContext) => {
    canvasContext.shadowColor = "#CCCCCC";
    canvasContext.shadowBlur = 15;
});
Available Callback Events
  • setUpForeground: Runs right before the foreground element is rendered.

Examples

Live Examples

View a live example here.

Code Snippets

Connect a visualizer to an HTML audio element:

//Get audio element
let audio = document.getElementById("audio");

//Create Visualizer
let visual = new Visualize.FrequencyGraphBlocks.fromMediaElement(audio);
visual.backgroundColor = ["#333333", "#CCCCCC"];
visual.color = ["orange", "gold", "yellow"];

//Add canvas to document
document.getElementById("container").append(visual.canvas);

//Start Audio
audio.play();

Make a visualizer fill an html element:

let container = document.getElementById("container");
let visual = new Visualize.Oscillope();
container.append(visual.canvas);
visual.aspectRatio = {
    width: container.clientWidth,
    height: container.clientHeight,
};

Resize a visualizer when the window resizes:

let visual = new Visualize.FrequencyGraph({ analyser, canvas });

window.addEventListener("resize", () => {
    visual.resize();
});

Keywords

FAQs

Package last updated on 20 Jun 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc