Add .gitignore to exclude all node packages and lock files
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
const TARGET_NUMBER_OF_CHANNELS = 2;
|
||||
const TARGET_SAMPLE_RATE = 48000;
|
||||
function mixAudio(waves, length) {
|
||||
if (waves.length === 1 && waves[0].length === length) {
|
||||
return waves[0];
|
||||
}
|
||||
const mixed = new Int16Array(length);
|
||||
if (waves.length === 1) {
|
||||
mixed.set(waves[0].subarray(0, length));
|
||||
return mixed;
|
||||
}
|
||||
for (let i = 0; i < length; i++) {
|
||||
const sum = waves.reduce((acc, wave) => {
|
||||
var _a;
|
||||
return acc + ((_a = wave[i]) !== null && _a !== void 0 ? _a : 0);
|
||||
}, 0);
|
||||
// Clamp to Int16 range
|
||||
mixed[i] = Math.max(-32768, Math.min(32767, sum));
|
||||
}
|
||||
return mixed;
|
||||
}
|
||||
export const onlyInlineAudio = ({ assets, fps, frame, }) => {
|
||||
const inlineAudio = assets.filter((asset) => asset.type === 'inline-audio');
|
||||
if (inlineAudio.length === 0) {
|
||||
return null;
|
||||
}
|
||||
const expectedLength = Math.round((TARGET_NUMBER_OF_CHANNELS * TARGET_SAMPLE_RATE) / fps);
|
||||
for (const asset of inlineAudio) {
|
||||
if (asset.toneFrequency !== 1) {
|
||||
throw new Error('Setting the toneFrequency is not supported yet in web rendering.');
|
||||
}
|
||||
}
|
||||
const mixedAudio = mixAudio(inlineAudio.map((asset) => asset.audio), expectedLength);
|
||||
return new AudioData({
|
||||
data: mixedAudio,
|
||||
format: 's16',
|
||||
numberOfChannels: TARGET_NUMBER_OF_CHANNELS,
|
||||
numberOfFrames: expectedLength / TARGET_NUMBER_OF_CHANNELS,
|
||||
sampleRate: TARGET_SAMPLE_RATE,
|
||||
timestamp: (frame / fps) * 1000000,
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user