Initial Commit
This commit is contained in:
63
packages/media/audio/audio-analysis-pitch/tests/helpers.ts
Normal file
63
packages/media/audio/audio-analysis-pitch/tests/helpers.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { AudioDocument } from "@suaveplan/audio-core";
|
||||
|
||||
export function buildSineDoc(
|
||||
freq: number,
|
||||
sampleRate: number,
|
||||
durationSamples: number,
|
||||
channels = 1
|
||||
): AudioDocument {
|
||||
const data: Float32Array[] = [];
|
||||
for (let c = 0; c < channels; c++) {
|
||||
const arr = new Float32Array(durationSamples);
|
||||
for (let i = 0; i < durationSamples; i++) {
|
||||
arr[i] = Math.sin((2 * Math.PI * freq * i) / sampleRate);
|
||||
}
|
||||
data.push(arr);
|
||||
}
|
||||
const doc = new AudioDocument({
|
||||
sampleRate,
|
||||
channels,
|
||||
sourceLength: 0,
|
||||
});
|
||||
doc.push(data);
|
||||
return doc;
|
||||
}
|
||||
|
||||
export function buildSilentDoc(
|
||||
sampleRate: number,
|
||||
durationSamples: number,
|
||||
channels = 1
|
||||
): AudioDocument {
|
||||
const data: Float32Array[] = [];
|
||||
for (let c = 0; c < channels; c++) {
|
||||
data.push(new Float32Array(durationSamples));
|
||||
}
|
||||
const doc = new AudioDocument({
|
||||
sampleRate,
|
||||
channels,
|
||||
sourceLength: 0,
|
||||
});
|
||||
doc.push(data);
|
||||
return doc;
|
||||
}
|
||||
|
||||
export function buildChordDoc(
|
||||
pitches: number[],
|
||||
sampleRate: number,
|
||||
durationSamples: number
|
||||
): AudioDocument {
|
||||
const arr = new Float32Array(durationSamples);
|
||||
for (let i = 0; i < durationSamples; i++) {
|
||||
let s = 0;
|
||||
for (const f of pitches)
|
||||
s += Math.sin((2 * Math.PI * f * i) / sampleRate);
|
||||
arr[i] = s / pitches.length;
|
||||
}
|
||||
const doc = new AudioDocument({
|
||||
sampleRate,
|
||||
channels: 1,
|
||||
sourceLength: 0,
|
||||
});
|
||||
doc.push([arr]);
|
||||
return doc;
|
||||
}
|
||||
Reference in New Issue
Block a user