1

我正在使用WebMScore来呈现乐谱的音频(它是在浏览器或节点中运行的 MuseScore 的一个分支)。

但是,我可以成功加载自己的本地 .sf2 或 .sf3 文件

尝试加载.sfz声音字体会抛出error 15424120. (并且 error.message 只是“未定义”。)

与在单个文件中包含声音和指令的 .sf2 和 .sf3 不同,.sfz 格式只是一个文本指令文件,它引用一个单独的样本文件夹。

我需要 .sfz 的原因是我需要能够以文本和编程方式编辑 .sfz 文件,而无需干预 Soundfont 生成器。

有没有办法使用 .sfz 的?我需要指定 Zerberus(Musescore .sfz 播放器)吗?我需要不同的文件结构吗? 请看下文。

我的环境是node js,测试用例和文件结构如下:

文件结构

Project Folder
    app.js
    testScore.mscz
    mySFZ.sfz
    samples
           one.wav
           two.wav
           etc.wav

测试用例 (与 .sf3 一起工作,与 .sfz 一起出错)

const WebMscore = require('webmscore');
const fs = require('fs');

// free example scores available at https://musescore.com/openscore/scores
const name = 'testScore.mscz';
const exportedPrefix = 'exported';
const filedata = fs.readFileSync(`./${name}`);

WebMscore.ready.then(async () => {
    const score = await WebMscore.load('mscz', filedata, [], false);
    await score.setSoundFont(fs.readFileSync('./mySFZ.sfz'));
    try { fs.writeFileSync(`./${exportedPrefix}.mp3`, await score.saveAudio('mp3')); } 
    catch (err) { console.log(err) } 
    score.destroy();
});
4

0 回答 0