macos-audio-devices

Get, set and configure the audio devices on macOS


Keywords
macos, swift, audio, devices, input, output, volume, mute, microphone, speaker, list, default
License
MIT
Install
npm install macos-audio-devices@1.2.0

Documentation

macos-audio-devices Actions Status

Get, set and configure the Audio Devices on macOS

Requires macOS 10.12 or later. macOS 10.13 or earlier needs to download the Swift runtime support libraries.

Run as CLI

Using npx

$ npx macos-audio-devices

Installing

$ npm install -g macos-audio-devices
$ audio-devices

Usage

Usage: audio-devices <command> [options]

Groups:
  output          Get or set the default output device
  input           Get or set the default input device
  volume          Get or set the volume of an output device

Commands:
  list            List the available audio devices
  help            Prints help information

Node API

Installation

$ npm install macos-audio-devices

Usage

const audioDevices = require('macos-audio-devices');

const outputDevices = audioDevices.getOutputDevices();
const targetDevice = outputDevices[0];

const defaultDevice = audioDevices.getDefaultOutputDevice();

if (defaultDevice.id !== targetDevice.id) {
  setDefaultOutputDevice(targetDevice.id)
}

if (targetDevice.hasVolume) {
  setOutputDeviceVolume(targetDevice.id, 0.5) // 50%
}

API

Device

id: number

The unique id of the device

uid: string

The UID of the device for the AVCaptureDevice API

name: string

The human readable name of the device

isOutput: bool

Whether the device is an output device

isInput: bool

Whether the device is an input device

hasVolume: bool

Whether the device supports volume. Only applicable to output devices.

volume: number

A number between 0 and 1 representing the volume setting of the device. Only applicable on output devices that have hasVolume of true.

getAllDevices(): Device[]

Get all the audio devices

getOutputDevices(): Device[]

Get all the output devices

getInputDevices(): Device[]

Get all the input devices

getDefaultOutputDevice(): Device

Get all the default output device

getDefaultInputDevice(): Device

Get all the default input device

setDefaultOutputDevice(deviceId: number): void

Set the default output device.

deviceId: number

The unique id of an output device

setDefaultInputDevice(deviceId: number): void

Set the default input device.

deviceId: number

The unique id of an input device

getOutputDeviceVolume(deviceId: number): void

Get the volume level of an output device that supports it. Throws an error if the device is not an output device or it doesn't support volume.

deviceId: number

The unique id of the supported output device

setOutputDeviceVolume(deviceId: number, volume: number): void

Set the volume level of an output device that supports it. Throws an error if the device is not an output device or it doesn't support volume.

deviceId: number

The unique id of the supported output device

volume: number

The volume level to set the device to. Must be between 0 and 1, otherwise and error will be thrown.

Contributing

If you want to use this and need more features or find a bug, please open an issue and I'll do my best to implement.

PRs are always welcome as well 😃