28 lines
891 B
TypeScript
28 lines
891 B
TypeScript
import { writeFile } from "node:fs/promises";
|
|
import { WavCodec } from "@suaveplan/audio-codecs";
|
|
|
|
/** Write a minimal mono 44.1 kHz WAV file for fixture purposes. */
|
|
export async function writeWav(path: string, samples = 256): Promise<void> {
|
|
const bytes = await WavCodec.encode([new Float32Array(samples)], {
|
|
sampleRate: 44_100,
|
|
bitDepth: 16,
|
|
format: "pcm",
|
|
});
|
|
await writeFile(path, bytes);
|
|
}
|
|
|
|
/** Write a noisy 44.1 kHz mono WAV file so loudness analyses report a value. */
|
|
export async function writeNoisyWav(
|
|
path: string,
|
|
samples = 44_100
|
|
): Promise<void> {
|
|
const buf = new Float32Array(samples);
|
|
for (let i = 0; i < samples; i++) buf[i] = Math.sin(i * 0.01) * 0.5;
|
|
const bytes = await WavCodec.encode([buf], {
|
|
sampleRate: 44_100,
|
|
bitDepth: 16,
|
|
format: "pcm",
|
|
});
|
|
await writeFile(path, bytes);
|
|
}
|