@tmigone/pulseaudio

A TypeScript based client library for PulseAudio.

Usage no npm install needed!

<script type="module">
  import tmigonePulseaudio from 'https://cdn.skypack.dev/@tmigone/pulseaudio';
</script>

README

🎶 @tmigone/pulseaudio 🎶

NPM CI Coverage Status

@tmigone/pulseaudio is a TypeScript based client library for PulseAudio, the most popular sound server for Linux. This library allows you to easily build clients or applications that interact with a PulseAudio server over it's native protocol, for example media players/recorders, volume control applications, etc.

Features

  • Zero dependency fully typed TypeScript implementation of the PulseAudio client protocol
  • Extensive testing suite
  • Protocol features:
    • authentication - provide authentication data for the server
    • transport - connect over UNIX domain sockets or TCP sockets
    • introspection - query, modify and operate on PulseAudio objects like modules, sinks, sources, etc.
    • events - subscribe to server-side object events like a sink starting playback, etc.
    • (To be implemented) streams - manage audio playback and recording using Node.js streams

Installation

Install the library using npm:

npm install @tmigone/pulseaudio

Usage

import PulseAudio, { Sink } from '@tmigone/pulseaudio'

(async () => {
  // Connect using tcp or unix socket
  // const client: PulseAudio = new PulseAudio('unix:/run/pulse/pulseaudio.socket')
  const client: PulseAudio = new PulseAudio('tcp:192.168.1.10:4317')
  await client.connect()

  // Set volume of all sinks to 50%
  const sinks: Sink[] = await client.getSinkList()
  for (const sink of sinks) {
    await client.setSinkVolume(sink.index, 50)
  }

  // Close connection
  client.disconnect()
})()

Documentation

Visit the docs site for in depth documentation on the library API's.