npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@tropicbliss/symphonia

v0.2.19

Published

An audio playback library for Node.js

Downloads

418

Readme

symphonia.js

A "way too simple" cross-platform zero dependency audio playback library for Node.js

Supported Platforms

  • Windows (x86-64)
  • Windows (i386) (32-bit)
  • macOS (x86-64)
  • macOS (arm64)
  • Linux (x86-64)

Supported Audio Formats

  • MP3
  • WAV
  • Vorbis
  • FLAC
  • MP4
  • AAC

Note

Take note that the node_modules generated by npm when installing this package is non-portable across platforms in order to save space. Thus, you'll need to run npm install when transferring your project between platforms in order for this package to work correctly (you should not be committing your node_modules anyway so for most use cases this shouldn't be a problem).

Lastly, when you call the functions for the first time it might take a few seconds for the computer to respond. This is perfectly normal behaviour as it might be caused by Windows Defender.

Credits

Usage

const axios = require('axios')
const fs = require('fs')
const symphonia = require('@tropicbliss/symphonia')

try {
  const buf = fs.readFileSync('chime.ogg') // Gets a Buffer
  symphonia.playFromBuf(buf, { speed: 1.0, volume: 1.0, isBlocking: true }) // The option object is optional. The speed and volume is both set to 1.0 and `isBlocking` is set to `true` by default.

  // You can also obtain buffers from a web request
  axios
    .get(URL)
    .then((res) => Buffer.from(res.data, 'binary'))
    .then((buf) => {
      symphonia.playFromBuf(buf)
    })

  // Play a sine wave at the frequency of 440Hz for 250ms
  symphonia.playFromSine(440.0, 250)
} catch (e) {
  console.log('Error playing audio: ', e)
}

Note that calling playFromX() without setting the isBlocking option parameter blocks the main thread by default, so pass false to isBlocking to make the methods non-blocking.

const fs = require('fs')
const symphonia = require('@tropicbliss/symphonia')

function playStuff() {
  const buf = fs.readFileSync('chime.ogg')
  const data = symphonia.playFromBuf(buf, { isBlocking: false })
  console.log("I'm not done yet, do something else to prevent this program from exiting!")
  data.controller.pause()
  data.controller.play()
  data.controller.stop()
}

try {
  playStuff()
} catch (e) {
  console.log('Error playing audio: ', e)
}