Play/Stream/Record PCM audio data & Encode/Decode Opus to PCM audio data
npm install audify


npm install audify
`
_Most regular installs will support prebuilds that are built with each release._
_Prebuilds are available for Node/Electron versions that support N-API 5-9._
#### Requirements for source build
- Node or Electron versions that support N-API 5 and up (N-API Node Version Matrix)
- CMake
- A proper C/C++ compiler toolchain of the given platform
- Windows:
- Visual C++ Build Tools or a recent version of Visual C++ will do (the free Community version works well)
- Unix/Posix:
- Clang or GCC
- Ninja or Make (Ninja will be picked if both present)
Example
#### Opus Encode & Decode
`javascript
const { OpusEncoder, OpusDecoder, OpusApplication } = require("audify");
// Init encoder and decoder
// Sample rate is 48kHz and the amount of channels is 2
// The opus coding mode is optimized for audio
const encoder = new OpusEncoder(48000, 2, OpusApplication.OPUS_APPLICATION_AUDIO);
const decoder = new OpusDecoder(48000, 2);
const frameSize = 1920; // 40ms
const buffer = ...
// Encode and then decode
var encoded = encoder.encode(buffer, frameSize);
var decoded = decoder.decode(encoded, frameSize);
`
#### Record audio and play it back realtime
`javascript
const { RtAudio, RtAudioFormat } = require("audify");
// Init RtAudio instance using default sound API
const rtAudio = new RtAudio(/ Insert here specific API if needed /);
// Open the input/output stream
rtAudio.openStream(
{
deviceId: rtAudio.getDefaultOutputDevice(), // Output device id (Get all devices using getDevices)
nChannels: 1, // Number of channels
firstChannel: 0, // First channel index on device (default = 0).
},
{
deviceId: rtAudio.getDefaultInputDevice(), // Input device id (Get all devices using getDevices)
nChannels: 1, // Number of channels
firstChannel: 0, // First channel index on device (default = 0).
},
RtAudioFormat.RTAUDIO_SINT16, // PCM Format - Signed 16-bit integer
48000, // Sampling rate is 48kHz
1920, // Frame size is 1920 (40ms)
"MyStream", // The name of the stream (used for JACK Api)
(pcm) => rtAudio.write(pcm) // Input callback function, write every input pcm data to the output buffer
);
// Start the stream
rtAudio.start();
``