누군가가 나를 도울 수 있는지 궁금합니다. 저는 현재 미학 프로젝트를 위해 FFT를 사용하는 처리를 사용하는 프로젝트에 참여하고 있습니다. 내가하고 싶은 것은 사용자가 노래를 가져올 수 있고, fft가 반응하여 노래를 기반으로 다른 색상을 표시하는 시각화 도구 역할을하도록 허용하는 것입니다. 내가 겪고있는 문제는 fft 자체를 작동시킬 수 없다는 것입니다. fft를 인식하도록 처리하려면 어떻게해야합니까?처리 중 fft 사용
여기는 내가 사용하고있는 fft 코드입니다.
fft = new FFT(song.bufferSize(), song.sampleRate());
//DRAW FFT
fft.forward(song.mix);
colorMode(HSB, 255);
void wavewave() {
float spread = map(450, 0, width, 1, 21.5);
float x = 0;
for (int i = 0; i < song.sampleRate() && x < width; i += spread)
{
x = i/spread;
stroke(map(fft.getFreq(i), 0, 256, 0, 360) * 2, //Hue
255, //Saturation
255); //Brightness
line(x, 512, x, 512 - fft.getFreq(i) * 4);
}
//map(value, minimum1, maximum1, minimum2, maximum2);
x = 0;
for (int i = 0; i < song.sampleRate() && x < width; i += spread)
{
x = i/spread;
stroke(map(fft.getFreq(i), 0, 256, 0, 360) * 2, //Hue
255, //Saturation
255); //Brightness
line(x, 512, x, 512 + fft.getFreq(i) * 4);
}
}
나는 당신이 어떤 구문 오류를 갖고있는 것 같다 오류
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
import java.io.File;
import java.io.FilenameFilter;
color waveColor;
int waveIncr = 0;
int counter = 0;
int songCounter = 0;
int fadeLevel = 10;
float buttonX;
float buttonY;
float buttonW;
float buttonH;
Minim minim;
AudioPlayer player;
FFT fft;
ArrayList<Songs> s;
int k;
String filename;
boolean isSelected = false;
void setup() {
s = new ArrayList();
textSize(24);
frame.setResizable(false);
background(255);
size(600, 600);
fill(0);
stroke(0);
noFill();
buttonW = 200;
buttonH = 50;
buttonX = width - width/2 - buttonW/2;
buttonY = height/2 - buttonH/2;
// Minim stuff
minim = new Minim(this);
}
void draw() {
background(255);
fill(0);
rectMode(CORNER);
rect(buttonX, buttonY, buttonW, buttonH);
fill(255);
textAlign(LEFT);
text("Import File", buttonX+35, buttonY+30);
if (isSelected) {
// s.get(k).waveform();
s.get(k).wavewave();
}
}
void mouseClicked() {
if (mouseX>buttonX && mouseX < buttonX+buttonW && mouseY > buttonY && mouseY < buttonY+buttonH) {
selectInput("Import music file", "fileSelected");
}
}
/* Taken from Processing.org */
void fileSelected(File selection) {
if (selection == null) {
println("Window was closed or user hit cancel");
}
else {
filename = selection.getAbsolutePath();
s.add(new Songs(player, filename, "Filename"));
isSelected = true;
}
}
// stop minim and the player.
void stop() {
player.close();
minim.stop();
super.stop();
}
class Songs {
AudioPlayer song;
String directory;
String songName;
Songs(AudioPlayer song, String directory, String songName) {
song=minim.loadFile(directory);
this.song=song;
this.songName=songName;
song.play();
}
fft = new FFT(song.bufferSize(), song.sampleRate());
//DRAW FFT
fft.forward(song.mix);
colorMode(HSB, 255);
void wavewave() {
float spread = map(450, 0, width, 1, 21.5);
float x = 0;
for (int i = 0; i < song.sampleRate() && x < width; i += spread)
{
x = i/spread;
stroke(map(fft.getFreq(i), 0, 256, 0, 360) * 2, //Hue
255, //Saturation
255); //Brightness
line(x, 512, x, 512 - fft.getFreq(i) * 4);
}
//map(value, minimum1, maximum1, minimum2, maximum2);
x = 0;
for (int i = 0; i < song.sampleRate() && x < width; i += spread)
{
x = i/spread;
stroke(map(fft.getFreq(i), 0, 256, 0, 360) * 2, //Hue
255, //Saturation
255); //Brightness
line(x, 512, x, 512 + fft.getFreq(i) * 4);
}
}
}
최소한의 작업 예제로 코드를 줄이고 사용중인 언어가 포함 된 태그를 추가하십시오. – siritinga
그것을 줄이려면 아무 것도 없습니다. 코드에서 작동하지 않는 유일한 것은 fft입니다. 태그에 대해서는 이미 처리 중입니다. – user3565990
최소한으로는 모든 그림, 마우스 클릭, 파일 로딩 등을 제거하는 것입니다. 문제가있는 FFT 통화 만 남기고 가짜 데이터로 전화를 걸면됩니다. 그리고 언어 태그에 의해 당신이 사용하는 Java 나 다른 언어를 의미했기 때문에 사람들이 그 질문을 찾도록 도울 것입니다. – siritinga