You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tone.js Sampler加载完成后替换指定音符对应的音频文件

结论

Tone.Sampler 未提供公开的 API 直接替换已加载完成的单个音符对应音频样本,所有样本在初始化加载完成后会存储在 Sampler 内部私有属性中,无对外修改入口。

推荐解决方案

方案1:重新创建 Sampler 实例(生产环境首选)

该方案符合官方 API 设计逻辑,兼容性最强,无版本适配风险,操作成本极低。
你可以保留原有除A1样本外的所有配置,仅修改A1对应的url后生成新实例,待新实例加载完成后销毁旧实例即可实现无缝切换,示例代码如下:

// 原有实例先保留引用
const oldSampler = sampler;
// 初始化新实例,仅修改A1对应的文件地址
const newSampler = new Tone.Sampler({
    urls: {
        A1: "new_one.mp3", // 替换为你的新mp3文件地址
        A2: "two.mp3",
    },
    baseUrl: "https://example.com/",
    onload: () => {
        // 新实例加载完成后销毁旧实例释放内存
        oldSampler.dispose();
        // 覆盖原有sampler变量,后续操作直接使用sampler即可
        sampler = newSampler;
        // 测试新样本
        sampler.triggerAttackRelease("A1", 0.5);
    }
}).toDestination();

方案2:修改内部私有属性(仅测试场景适用)

如果不想重新创建实例,可以直接操作Sampler的私有_buffers属性完成单个样本替换,但该属性属于非公开API,不同Tone.js版本可能存在命名、逻辑差异,生产环境使用存在兼容性风险,示例代码如下:

// 替换A1对应的音频样本,加载完成后即可生效
sampler._buffers.get("A1").load("https://example.com/new_one.mp3");

内容的提问来源于stack exchange,提问作者mark mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:45:03