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

如何在P5.js中使用P5 Amplitude时静音指定音频输入

解决方法

完全可行,你只需要通过设置音频音量为0来让目标轨道静音,同时保持播放状态以获取振幅数据,具体修改如下:

核心修改点

  • 在播放kick、hats_1、tb303这三个音频前,调用setVolume(0)将它们的音量设为0,这样它们不会输出声音,但仍能正常播放并被p5.Amplitude捕获振幅。
  • 修正代码里的笔误:原本hats_1_amp.smooth(smoothing)被错误写成了kick_amp.smooth(smoothing),需要更正。

修改后的完整代码

let kick, kick_amp;
let hats_1, hats_1_amp;
let tb303, tb303_amp;
let full_track, full_track_amp;
let smoothing = 0.4;

function preload() {
  kick = loadSound('kick.mp3'); 
  hats_1 = loadSound('Hats 1.mp3'); 
  tb303 = loadSound('303.mp3'); 
  full_track = loadSound('full track clip.mp3'); 
}

function setup() {
  createCanvas(600, 600)

  // 设置kick音量为0后播放
  kick.setVolume(0);
  kick.play();  
  kick_amp = new p5.Amplitude();
  kick_amp.setInput(kick);
  kick_amp.smooth(smoothing);
  
  // 设置hats_1音量为0后播放,修正smooth方法调用对象
  hats_1.setVolume(0);
  hats_1.play();  
  hats_1_amp = new p5.Amplitude();
  hats_1_amp.setInput(hats_1);
  hats_1_amp.smooth(smoothing);

  // 设置tb303音量为0后播放
  tb303.setVolume(0);
  tb303.play();  
  tb303_amp = new p5.Amplitude();
  tb303_amp.setInput(tb303);
  tb303_amp.smooth(smoothing);

  full_track.play();  
  full_track_amp = new p5.Amplitude();
  full_track_amp.setInput(full_track);
  full_track_amp.smooth(smoothing);
}

function draw() {
  background(0);
  let kick_vol = kick_amp.getLevel();
  ellipse( width*0.25,height/2, kick_vol*100, kick_vol*100);

  let hats_1_vol = hats_1_amp.getLevel();
  ellipse(width*0.75, height/2, hats_1_vol*100, hats_1_vol*100);

  let tb303_vol = tb303_amp.getLevel();
  ellipse(width*0.5, height*0.25, tb303_vol*100, tb303_vol*100);

}

// Click on the web page to start audio 
function touchStarted() {
  getAudioContext().resume();
}

补充说明

  • setVolume(0)仅会关闭音频的输出音量,不会影响播放进度或振幅数据的采集。
  • 建议确保所有音频文件同步播放,否则可视化效果会和完整轨道不同步,可通过play()方法的时间参数来对齐播放时机。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:35:40