我有一个很棒的音频可视化工具,它使用Processing 2.0a5和minim库创建,它使用fft来分析音频数据。
import ddf.minim.*;
import ddf.minim.analysis.*;
Minim minim;
AudioPlayer song;
FFT fft;
int col=0; // color, oscillates over time.
void setup()
{
size(498, 89);
// always start Minim first!
minim = new Minim(this);
// specify 512 for the length of the sample buffers
// the default buffer size is 1024
song = minim.loadFile("obedear.mp3", 2048);
song.play();
// an FFT needs to know how
// long the audio buffers it will be analyzing are
// and also needs to know
// the sample rate of the audio it is analyzing
fft = new FFT(song.bufferSize(), song.sampleRate());
}
void draw()
{
colorMode(HSB);
background(0);
// first perform a forward fft on one of song's buffers
// I'm using the mix buffer
// but you can use any one you like
fft.forward(song.mix);
col++;
if (255<col){col=0;} // loops the color
strokeWeight(8);
stroke(col, 255, 255);
// draw the spectrum as a series of vertical lines
// I multiple the value of getBand by 4
// so that we can see the lines better
for(int i = 0; i < fft.specSize(); i++)
{
line(i-160, height, i-160, height - fft.getBand(i)*2);
}
}
void stop()
{
song.close();
minim.stop();
super.stop();
}
所以现在我想做的是通过网址导入歌曲来源,比如说来自soundcloud。网址可能看起来像这样 - http://api.soundcloud.com/tracks/46893/stream?client_id=759a08f9fd8515cf34695bf3e714f74b返回128 kbps的mp3流。我知道JMF 2.1支持用于流式传输音频的URLDataSource,但我不确定JMF和processing / minim / fft能够很好地协同工作。我对java很陌生,但仍然不完全熟悉这些细节。我真的习惯了php和html。我还看到Soundcloud在其javascript SDK中有Soundmanager2流式集成。不确定这是否会提供任何可能的集成解决方案。
理想情况下,我想用php和html向用户提供soundcloud歌曲列表,点击后,我想用我自己的可视化工具播放这首歌,最好是我在处理中创建的歌曲。我正在努力让这个工作变得非常艰难,而我对java的无知绝对没有帮助。如果有可能的话,有什么建议可以实现这一目标吗?
答案 0 :(得分:1)
天哪! Minim的loadFile接受直接网址,就像我上面发布的文件名参数!我在这里找到了答案:code.compartmental.net/tools/minim/manual-minim有很多不同的文档链接,我想我错过了“手册”。无论如何,这太棒了。如果有人想要一个很酷的基于java的音频播放器和可视化工具,请随意窃取我(无论如何都是公开使用的代码)。