@futpib/paclient
v0.0.10
Published
PulseAudio client written in pure JavaScript for node.js
Downloads
79
Maintainers
Readme
Description
A PulseAudio client written in pure JavaScript for node.js.
Currently most commands are implemented. SHM/MemFD-related commands are not supported.
Table of Contents
Requirements
- node.js -- v6.0.0 or newer
Installation
npm install paclient
Examples
Subscribe to all server events
const PAClient = require('paclient');
const pa = new PAClient();
pa.on('ready', () => {
console.log('Ready');
pa.subscribe('all');
}).on('close', () => {
console.log('Connection closed');
}).on('new', (type, index) => {
pa[getFnFromType(type)](index, (err, info) => {
if (err) {
console.log(`Could not fetch ${type}, index ${index}: ${err.message}`);
return;
}
var name = info.name || info.description || '<unknown>';
console.log(`"${name}" (${type}) added`);
});
}).on('change', (type, index) => {
pa[getFnFromType(type)](index, (err, info) => {
if (err) {
console.log(`Could not fetch ${type}, index ${index}: ${err.message}`);
return;
}
var name = info.name || info.description || '<unknown>';
console.log(`"${name}" (${type}) changed`);
});
}).on('remove', (type, index) => {
console.log(`Removed ${type}, index #${index}`);
});
pa.connect();
function getFnFromType(type) {
var fn;
switch (type) {
case 'sink':
case 'card':
case 'source': fn = type; break;
case 'sinkInput':
case 'sourceOutput':
case 'client':
case 'module': fn = `${type}ByIndex`; break;
default:
throw new Error('Unexpected type: ' + type);
}
return 'get' + fn[0].toUpperCase() + fn.slice(1);
}
API
Client
Client events
ready() - A successful, authenticated connection has been made.
close() - The connection to the server has been closed.
new(< string >type, < integer >index) - A new entity has been added.
change(< string >type, < integer >index) - An existing entity has changed.
remove(< string >type, < integer >index) - An existing entity has been removed.
Client methods
(constructor)() - Creates and returns a new Client instance.
connect([< object >config]) - (void) - Attempts a connection to a server using the information given in
config
. If nopath
orhost
are supplied then connection details are autodetected using the same algorithm as the official PulseAudio client library. Validconfig
options are:path - string - Path to a UNIX socket of the server. Default: Autodetected
host - string - Hostname or IP address of the server. Default: Autodetected
port - integer - Port number of the server. Default:
4713
serverString - string - Server string in PULSE_SERVER syntax. Default: Autodetected
cookie - mixed - An explicit cookie value to use when authenticating with the server. This can either be a Buffer or a hex string of the appropriate length. Default: Autodetected
properties - object - A set of properties to associate with the client on the server. These can be seen by other clients. Default:
{ application: { name: 'paclient.js' } }
end() - (void) - If connected, this will close the connection to the server.
getModules(< function >callback) - (void) - Retrieves a list of loaded modules.
callback
has 2 parameters: < Error >err, < array >modules.getClients(< function >callback) - (void) - Retrieves a list of connected clients.
callback
has 2 parameters: < Error >err, < array >clients.getSinks(< function >callback) - (void) - Retrieves a list of available sinks (outputs).
callback
has 2 parameters: < Error >err, < array >sinks.getSources(< function >callback) - (void) - Retrieves a list of available sources (inputs).
callback
has 2 parameters: < Error >err, < array >sources.getSinkInputs(< function >callback) - (void) - Retrieves a list of available sink inputs (streams connected to outputs).
callback
has 2 parameters: < Error >err, < array >sinkInputs.getSourceOutputs(< function >callback) - (void) - Retrieves a list of available source outputs (streams connected to inputs).
callback
has 2 parameters: < Error >err, < array >sourceOutputs.getCards(< function >callback) - (void) - Retrieves a list of available cards (hardware devices that usually combine a single source (for recording) and a single sink (for playback)).
callback
has 2 parameters: < Error >err, < array >cards.getServerInfo(< function >callback) - (void) - Retrieves information about the server.
callback
has 2 parameters: < Error >err, < object >info.getModuleByIndex(< integer >index, < function >callback) - (void) - Retrieves a module by its index.
callback
has 2 parameters: < Error >err, < object >module.getClientByIndex(< integer >index, < function >callback) - (void) - Retrieves a client by its index.
callback
has 2 parameters: < Error >err, < object >client.getSink(< mixed >criteria, < function >callback) - (void) - Retrieves a sink by either its index (integer) or its name (string).
callback
has 2 parameters: < Error >err, < object >sink.getSource(< mixed >criteria, < function >callback) - (void) - Retrieves a source by either its index (integer) or its name (string).
callback
has 2 parameters: < Error >err, < object >source.getSinkInputByIndex(< integer >index, < function >callback) - (void) - Retrieves a sink input by its index.
callback
has 2 parameters: < Error >err, < object >sinkInput.getSourceOutputByIndex(< integer >index, < function >callback) - (void) - Retrieves a source output by its index.
callback
has 2 parameters: < Error >err, < object >sourceOutput.getCard(< mixed >criteria, < function >callback) - (void) - Retrieves a card by either its index (integer) or its name (string).
callback
has 2 parameters: < Error >err, < object >card.getSinkIndexByName(< string >name, < function >callback) - (void) - Retrieves the index for a sink given its
name
.callback
has 2 parameters: < Error >err, < integer >index.getSourceIndexByName(< string >name, < function >callback) - (void) - Retrieves the index for a source given its
name
.callback
has 2 parameters: < Error >err, < integer >index.setSinkVolumes(< mixed >criteria, < array >volumes, < function >callback) - (void) - Sets the volumes for each of a sink's channels.
criteria
can be an index (integer) or a name (string).callback
has 1 parameter: < Error >err.setSourceVolumes(< mixed >criteria, < array >volumes, < function >callback) - (void) - Sets the volumes for each of a source's channels.
criteria
can be an index (integer) or a name (string).callback
has 1 parameter: < Error >err.setSinkInputVolumesByIndex(< integer >index, < array >volumes, < function >callback) - (void) - Sets the volumes for each of a sink input's channels.
callback
has 1 parameter: < Error >err.setSourceOutputVolumesByIndex(< integer >index, < array >volumes, < function >callback) - (void) - Sets the volumes for each of a source output's channels.
callback
has 1 parameter: < Error >err.setSinkMute(< mixed >criteria, < boolean >muted, < function >callback) - (void) - Sets the muted status for a sink by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setSourceMute(< mixed >criteria, < boolean >muted, < function >callback) - (void) - Sets the muted status for a source by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setSinkInputMuteByIndex(< integer >index, < boolean >muted, < function >callback) - (void) - Sets the muted status for a sink input.
callback
has 1 parameter: < Error >err.setSourceOutputMuteByIndex(< integer >index, < boolean >muted, < function >callback) - (void) - Sets the muted status for a source output.
callback
has 1 parameter: < Error >err.setSinkSuspend(< mixed >criteria, < boolean >suspended, < function >callback) - (void) - Sets the suspended status for a sink by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setSourceSuspend(< mixed >criteria, < boolean >suspended, < function >callback) - (void) - Sets the suspended status for a source by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setDefaultSinkByName(< string >name, < function >callback) - (void) - Sets the default sink.
callback
has 1 parameter: < Error >err.setDefaultSourceByName(< string >name, < function >callback) - (void) - Sets the default source.
callback
has 1 parameter: < Error >err.killClientByIndex(< integer >index, < function >callback) - (void) - Terminates the connection of the specified client.
callback
has 1 parameter: < Error >err.killSinkInputByIndex(< integer >index, < function >callback) - (void) - Terminates a sink input.
callback
has 1 parameter: < Error >err.killSourceOutputByIndex(< integer >index, < function >callback) - (void) - Terminates a source output.
callback
has 1 parameter: < Error >err.loadModule(< string >moduleName, < string >argument, < function >callback) - (void) - Load a module.
callback
has 1 parameter: < Error >err.unloadModuleByIndex(< integer >moduleIndex, < function >callback) - (void) - Unload a module.
callback
has 1 parameter: < Error >err.moveSinkInput(< integer >index, < mixed >destSink, < function >callback) - (void) - Moves a sink input to a different sink identified by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.moveSourceOutput(< integer >index, < mixed >destSink, < function >callback) - (void) - Moves a source output to a different source identified by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setSinkPort(< mixed >criteria, < string >portName, < function >callback) - (void) - Sets the port for a sink identified by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setSourcePort(< mixed >criteria, < string >portName, < function >callback) - (void) - Sets the port for a source identified by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.setCardProfile(< mixed >criteria, < string >profileName, < function >callback) - (void) - Sets the profile for a card identified by either its index (integer) or its name (string).
callback
has 1 parameter: < Error >err.updateClientProperties(< object >properties, < string >mode, < function >callback) - (void) - Updates this client's server-side properties. The update behavior is governed by
mode
which can be one of:'set'
(any/all old properties are removed),'update'
(only add properties that do not already exist), or'replace'
(only overwrite property values for existing properties).callback
has 1 parameter: < Error >err.removeClientProperties(< array >propertyNames, < function >callback) - (void) - Removes specified properties from this client's server-side properties.
callback
has 1 parameter: < Error >err.subscribe(< mixed >events, < function >callback) - (void) - Sets the event subscription for events emitted by the server.
events
can either be a string or array of strings containing one or more of:'none'
,'all'
,'sink'
,'source'
,'sinkInput'
,'sourceOutput'
,'module'
,'client'
,'sampleCache'
,'global'
, or'card'
.callback
has 1 parameter: < Error >err.