Skip to content

Recappi/sdk

Repository files navigation

@recappi/sdk

https://github.com/Recappi/sdk/actions/workflows/CI.yml

Usage

Recording system audio

Both input and output devices are recording, mixed into a single audio stream.

import { writeFile } from "node:fs/promises";
import { setTimeout } from "node:timers/promises";

import { ShareableContent } from "@recappi/sdk";
import { createWavBuffer } from "@recappi/sdk/encode-wav";

const WavBuffers = [];

let totalLength = 0;

const session = ShareableContent.tapGlobalAudio([], (err, samples) => {
  if (err) {
    console.error("Error capturing audio:", err);
    return;
  }
  WavBuffers.push(samples);
  totalLength += samples.length;
});

console.info("Recording audio for 5 seconds...");

await setTimeout(5000); // Record for 5 seconds

session.stop();

console.info(
  `Recording stopped. Writing ${totalLength} samples to output.wav...`,
);

const { buf: contactedBuffer } = WavBuffers.reduce(
  ({ buf, offset }, cur) => {
    buf.set(cur, offset);
    return {
      buf,
      offset: offset + cur.length,
    };
  },
  {
    buf: new Float32Array(totalLength),
    offset: 0,
  },
);

console.log(`Creating WAV buffer ...`);

const wavBuffer = Buffer.from(
  createWavBuffer(contactedBuffer, {
    sampleRate: session.sampleRate,
    numChannels: session.channels,
  }),
);

await writeFile("output.wav", wavBuffer);

Playground

yarn install
yarn build
yarn workspace playground dev:server
yarn workspace playground dev:web

About

Cross platform audio capture SDK

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  
  •  

Packages

No packages published