API Docs

Module for discovering and controlling audio devices.

Finding devices

const all = hs.audiodevice.all();
const out = hs.audiodevice.defaultOutputDevice();
const mic = hs.audiodevice.defaultInputDevice();

Selecting a device

const usb = hs.audiodevice.findDeviceByName("USB Audio CODEC");
if (usb) usb.setDefaultOutputDevice();

Watching for system-level changes

Available events: "dOut" (default output changed), "dIn" (default input changed), "dSErr" (default alert sound device changed), "dev+" (a device was added), "dev-" (a device was removed).

var fn = function() { console.log("Default output changed") };
hs.audiodevice.on("dOut", fn);
// later…
hs.audiodevice.off("dOut", fn);

Types

This module provides the following types:

Properties

This module has no properties.

Methods

hs.audiodevice.all() -> HSAudioDevice[]

All audio devices attached to the system.
hs.audiodevice.all() -> HSAudioDevice[]
HSAudioDevice[]
An array of HSAudioDevice objects
const devs = hs.audiodevice.all()
devs.forEach(d => console.log(d.name))

hs.audiodevice.allOutputDevices() -> HSAudioDevice[]

All audio devices that have at least one output stream.
hs.audiodevice.allOutputDevices() -> HSAudioDevice[]
HSAudioDevice[]
An array of HSAudioDevice objects
const outputs = hs.audiodevice.allOutputDevices()

hs.audiodevice.allInputDevices() -> HSAudioDevice[]

All audio devices that have at least one input stream.
hs.audiodevice.allInputDevices() -> HSAudioDevice[]
HSAudioDevice[]
An array of HSAudioDevice objects
const inputs = hs.audiodevice.allInputDevices()

hs.audiodevice.defaultOutputDevice() -> HSAudioDevice

The current system default output device.
hs.audiodevice.defaultOutputDevice() -> HSAudioDevice
HSAudioDevice
An HSAudioDevice, or null if none is set
const out = hs.audiodevice.defaultOutputDevice()
console.log(out && out.name)

hs.audiodevice.defaultInputDevice() -> HSAudioDevice

The current system default input device.
hs.audiodevice.defaultInputDevice() -> HSAudioDevice
HSAudioDevice
An HSAudioDevice, or null if none is set
const mic = hs.audiodevice.defaultInputDevice()

hs.audiodevice.defaultEffectDevice() -> HSAudioDevice

The current system alert sound device.
hs.audiodevice.defaultEffectDevice() -> HSAudioDevice
HSAudioDevice
An HSAudioDevice, or null if none is set
const effect = hs.audiodevice.defaultEffectDevice()

hs.audiodevice.findDeviceByName(name) -> HSAudioDevice

Find the first audio device whose name matches the given string.
hs.audiodevice.findDeviceByName(name) -> HSAudioDevice
Name Type Description
name string The device name to search for
HSAudioDevice
An HSAudioDevice if found, null otherwise
const usb = hs.audiodevice.findDeviceByName("USB Audio CODEC")

hs.audiodevice.findDeviceByUID(uid) -> HSAudioDevice

Find the audio device with the given unique identifier.
hs.audiodevice.findDeviceByUID(uid) -> HSAudioDevice
Name Type Description
uid string The device UID to search for
HSAudioDevice
An HSAudioDevice if found, null otherwise
const dev = hs.audiodevice.findDeviceByUID("BuiltInSpeakerDevice")

hs.audiodevice.on(event, listener) -> None

Register a listener for a named system-level audio configuration event.
hs.audiodevice.on(event, listener) -> None
Name Type Description
event any The event to listen for
listener any Called when the event occurs
None
hs.audiodevice.on('dOut', () => console.log("Default output changed"))
hs.audiodevice.on('dev+', () => console.log("A device was added"))

hs.audiodevice.off(event, listener) -> None

Remove a previously registered system-level audio event listener.
hs.audiodevice.off(event, listener) -> None
Name Type Description
event any The event the listener was registered for
listener any The function originally passed to `on`
None
const onDefaultOutChange = () => console.log("changed")
hs.audiodevice.on('dOut', onDefaultOutChange)
// later…
hs.audiodevice.off('dOut', onDefaultOutChange)

hs.audiodevice.once(event, listener) -> None

Register a listener that fires at most once for a system-level audio configuration event.
hs.audiodevice.once(event, listener) -> None
Name Type Description
event any The event to listen for
listener any Called the next time a matching event occurs, then automatically removed
None
hs.audiodevice.once('dev+', () => console.log("First device-added event seen"))