我正在使用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();
});