0

@tropicbliss/symphonia - npm

 1 year ago
source link: https://www.npmjs.com/package/@tropicbliss/symphonia
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

symphonia.js

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

Supported Platforms

  • Windows (x64)
  • macOS (x64)
  • macOS (ARM64)
  • Linux (x64)

Supported Audio Formats

  • Vorbis

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 }) // The second option object is optional. The speed and volume is both set to 1.0 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() blocks the main thread so use worker threads to make it non-blocking.

const { Worker, isMainThread, parentPort } = require("worker_threads");
const fs = require("fs");
const symphonia = require("@tropicbliss/symphonia");

if (isMainThread) {
    const worker = new Worker(__filename);
    worker.on("message", (msg) => console.log(msg))
} else {
    const buf = fs.readFileSync("chime.ogg");
    symphonia.playFromBuf(buf);
    parentPort.postMessage("finished playing");
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK