Audio 是否有一种方法可以使用振幅类实时分析来自外部源的音频数据?

Audio 是否有一种方法可以使用振幅类实时分析来自外部源的音频数据?,audio,processing,real-time,amplitude,Audio,Processing,Real Time,Amplitude,我正在处理3中的一个项目中工作,在这个项目中,视觉效果被歌曲的振幅所调制。然而,我想更进一步。我希望能够播放任何歌曲,甚至让乐队在麦克风房里演奏,并让我的视觉效果在播放时做出反应。现在,我必须告诉计算机使用草图文件夹中的歌曲,但显然这不是我想要做的 最终目标是在俱乐部环境中将我的视觉效果投射到墙上。为了避免拾取人群噪音,我认为从DJ室向计算机发送信号(可能使用音频接口)是有意义的。我不知道这对编写代码是否一定重要,但这正是我的想法所在。(这可能与前面提到的乐队创意有点不同…) 无论如何,如果任何

我正在处理3中的一个项目中工作,在这个项目中,视觉效果被歌曲的振幅所调制。然而,我想更进一步。我希望能够播放任何歌曲,甚至让乐队在麦克风房里演奏,并让我的视觉效果在播放时做出反应。现在,我必须告诉计算机使用草图文件夹中的歌曲,但显然这不是我想要做的

最终目标是在俱乐部环境中将我的视觉效果投射到墙上。为了避免拾取人群噪音,我认为从DJ室向计算机发送信号(可能使用音频接口)是有意义的。我不知道这对编写代码是否一定重要,但这正是我的想法所在。(这可能与前面提到的乐队创意有点不同…)

无论如何,如果任何人有任何关于如何做到这一点的好例子或信息,将不胜感激。我现在附上了我的代码截图。最后,我会让视觉效果更复杂,但你明白了

import processing.sound.*;

SoundFile sample;
Amplitude rms;

float smoothingFactor = 0.06;

float sum;

float x, y;
float xStep = 40;
float yStep = 200;
float a, a_;

int num = 400;

void setup(){
  size(1400,1000);
  
  sample = new SoundFile(this, "prettylights.mp3"); //to run code, load an audio file here
  sample.loop();
  rms = new Amplitude(this);
  rms.input(sample);
}

void draw(){
  background(20,20,30);
  strokeCap(CORNER);
  strokeWeight(xStep);
  
  sum += (rms.analyze() - sum) * smoothingFactor;
  
  float rms_scaled = sum * (height/2) * 3;
  
  int n=0;
  while (n<num) {
    stroke(255-255*cos(radians(a)),25,25,230-255*sin(radians(a)));
    line(x, y, x, y+yStep);
    //line(x, y,rms_scaled, rms_scaled);
    x+=xStep;
    if (x>width){
      x=xStep/2;
      y+=yStep;
    }
    if (y>=height){
      y=0;
      a=rms_scaled;
      //a=0;
    }
    n++;
    a+=a_;
  }
  a_+=0.1;
}
导入处理。声音。*;
声音文件样本;
振幅均方根值;
浮动平滑因子=0.06;
浮点数;
浮动x,y;
浮点xStep=40;
浮点数=200;
浮a,浮a,;
int num=400;
无效设置(){
规模(140011000);
sample=newsoundfile(这是“prettylights.mp3”);//要运行代码,请在此处加载音频文件
sample.loop();
rms=新振幅(本);
rms.输入(样本);
}
作废提款(){
背景(20,20,30);
冲程盖(转角);
冲程重量(xStep);
sum+=(rms.analyze()-sum)*平滑因子;
浮动rms_比例=总和*(高度/2)*3;
int n=0;
while(nwidth){
x=xStep/2;
y+=yStep;
}
如果(y>=高度){
y=0;
a=均方根值;
//a=0;
}
n++;
a+=a;
}
a_u+=0.1;
}

我想出来了!我只需要在课堂上使用音频

import processing.sound.*;
AudioIn in;

void setup() {
  size(640, 360);
  background(255);
    
  // Create the Input stream
  in = new AudioIn(this, 0);
  in.play();
}      

void draw() {
}

我知道了!我只需要在课堂上使用音频

import processing.sound.*;
AudioIn in;

void setup() {
  size(640, 360);
  background(255);
    
  // Create the Input stream
  in = new AudioIn(this, 0);
  in.play();
}      

void draw() {
}