好吧,所以我在处理中弄乱了一个简单的fft可视化,并认为每次播放不止一首歌曲会很有趣。最后,我手动添加了 3 首歌曲,并在鼠标单击时使用预定义的字符串在歌曲之间随机更改。我想添加其余的电脑音乐,但每次我想在我的草图中添加新歌曲时,我都必须将其名称复制并粘贴到草图中的字符串中。似乎有很多不必要的工作
有没有办法让处理扫描文件夹,识别里面有多少文件,并将所有文件名复制到字符串中?我找到了一个名为sDrop的库,用于处理1.1,它允许您直接将文件拖放到草图中。但是,这在处理版本2 +中似乎不再存在。
这是我当前播放音乐的工作代码的简单版本:
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
AudioPlayer player;
Minim minim;
String [] songs = {
"song1.mp3",
"song2.mp3",
"song3.mp3",
};
int index;
void setup() {
size(100, 100, P3D);
index = int(random(songs.length));
minim = new Minim(this);
player = minim.loadFile(songs[index]);
player.play();
}
void draw() {
}
void mouseClicked() {
index = int(random(songs.length));
player.pause();
player = minim.loadFile(songs[index]);
player.play();
}
如果有人有建议或可以指导我学习一个好的教程,那就太好了。谢谢!
假设你在Java模式下使用它,那么你可以使用Java API:https://docs.oracle.com/javase/8/docs/api/
Java API 包含一个 File 类,该类包含多个用于读取目录内容的方法:https://docs.oracle.com/javase/8/docs/api/java/io/File.html
像这样:
ArrayList<String> songs = new ArrayList<String>();
File directory = new File("path/to/song/directory/");
for(File f : directory.listFiles()){
if(!f.isDirectory()){
songs.add(f.getAbsolutePath());
}
}
谷歌搜索"目录的java列表文件"会给你带来大量的结果。
只是为了补充凯文的工人的答案:
- 尝试使用
File.separator
而不是"/"或"\"。它做同样的事情,但它根据你为你使用的操作系统找出正确的方法,所以你可以在其他电脑上移动你的草图,并且仍然可以让它工作。 - 查看 Daniel Shiffman 附带的处理示例>主题>文件 IO>目录列表