Java 为什么赢了';我的音频剪辑播放不一致吗?
我正在尝试制作一个drum循环编辑器,我有一个名为Sounds的类和一个运行我的主方法的类,目前使用的只是测试Sounds类 以下是我的主要课程:Java 为什么赢了';我的音频剪辑播放不一致吗?,java,audio,Java,Audio,我正在尝试制作一个drum循环编辑器,我有一个名为Sounds的类和一个运行我的主方法的类,目前使用的只是测试Sounds类 以下是我的主要课程: private static Sounds sounds; public static void main(String args[]){ while(true){ //yes, i realize I shouldn't do this. it's only for testing sounds.play(Sounds.B
private static Sounds sounds;
public static void main(String args[]){
while(true){ //yes, i realize I shouldn't do this. it's only for testing
sounds.play(Sounds.BASS);
sounds.play(Sounds.CLOSED_HIHAT);
pause(500);
sounds.play(Sounds.CLOSED_HIHAT);
pause(500);
sounds.play(Sounds.SNARE);
sounds.play(Sounds.CLOSED_HIHAT);
pause(500);
sounds.play(Sounds.OPEN_HIHAT);
pause(500);
}
}
public static void pause(long time){
try{
Thread.sleep(time);
}catch(Exception ex){}
}
这是我的声音课:
import java.applet.Applet;
import java.applet.AudioClip;
public class Sounds{
static AudioClip[] sounds ={
Applet.newAudioClip(Sounds.class.getResource("bass.wav")),
Applet.newAudioClip(Sounds.class.getResource("snare.wav")),
Applet.newAudioClip(Sounds.class.getResource("closed hihat.wav")),
Applet.newAudioClip(Sounds.class.getResource("closed hihat.wav")),
Applet.newAudioClip(Sounds.class.getResource("open hihat.wav")),
Applet.newAudioClip(Sounds.class.getResource("low floor tom.wav")),
Applet.newAudioClip(Sounds.class.getResource("high floor tom.wav")),
Applet.newAudioClip(Sounds.class.getResource("low tom.wav")),
Applet.newAudioClip(Sounds.class.getResource("low mid tom.wav")),
Applet.newAudioClip(Sounds.class.getResource("high mid tom.wav")),
Applet.newAudioClip(Sounds.class.getResource("high tom.wav")),
Applet.newAudioClip(Sounds.class.getResource("crash 1.wav")),
Applet.newAudioClip(Sounds.class.getResource("crash 2.wav")),
Applet.newAudioClip(Sounds.class.getResource("ride.wav")),
Applet.newAudioClip(Sounds.class.getResource("ride bell.wav")),
Applet.newAudioClip(Sounds.class.getResource("china.wav")),
Applet.newAudioClip(Sounds.class.getResource("splash.wav"))
};
//index constants
protected static int BASS=0;
protected static int SNARE=1;
protected static int CLOSED_HIHAT=2;
protected static int PEDAL_HIHAT=3;
protected static int OPEN_HIHAT=4;
protected static int TOM1=5;
protected static int TOM2=6;
protected static int TOM3=7;
protected static int TOM4=8;
protected static int TOM5=9;
protected static int TOM6=10;
protected static int CRASH1=11;
protected static int CRASH2=12;
protected static int RIDE=13;
protected static int RIDE_BELL=14;
protected static int CHINA=15;
protected static int SPLASH=16;
public void play(int soundIndex){
sounds[soundIndex].play();
if(soundIndex == Sounds.CLOSED_HIHAT || soundIndex == Sounds.PEDAL_HIHAT){
sounds[Sounds.OPEN_HIHAT].stop();
}
if(soundIndex == Sounds.RIDE_BELL){
sounds[Sounds.RIDE].stop();
}
}
}
我的问题是声音会播放,但不是每次都播放。通常会有一个hihat完全被忽略,主要是在有圈套或贝司演奏的节拍中
如果您打算自己复制我的项目来解决问题,您可以在这里获得我正在使用的wav文件的zip文件夹:提前感谢您的反馈。让一切顺利进行,不要停止 最后再睡几分钟,让一切都结束 您需要将文件剪切到播放所需的程度,并让播放全部内容-不是在wav中有5分钟,而是想播放2.5-这是不可预测的 因此,将文件缩减到所需的大小,并按您需要的顺序播放它们 否则,您必须更详细地测量文件的长度,播放需要多少字节等
补充:您可以转到AudioSystem,javax.sound.sampled包有点复杂,所以您需要阅读-让一切都播放出来,不要停止 最后再睡几分钟,让一切都结束 您需要将文件剪切到播放所需的程度,并让播放全部内容-不是在wav中有5分钟,而是想播放2.5-这是不可预测的 因此,将文件缩减到所需的大小,并按您需要的顺序播放它们 否则,您必须更详细地测量文件的长度,播放需要多少字节等
补充:您可以访问AudioSystem和javax.sound.sampled软件包,因为它有点复杂,所以您需要阅读-我不能在每个节拍之间留出几分钟,因为那样的话,程序实际上就无法使用了,我不能让打开的hihat在关闭的hihat或踏板hihat播放后继续播放,因为这不是鼓的工作方式。我的意思是在主旋律的和处睡眠(),所以没有遗漏任何东西。播放停止是不可预测的,它可能会被切断,这取决于运行时间而不是实际的持续时间-有没有更可靠的类,我可以使用声音,而不是音频剪辑?我需要精度和速度来实现我对这个项目的愿景,因为我基本上想制作一个完整的音乐编辑器,它允许无限的测量,可以以不同的节奏播放,具有不同的时间特征,并且可以有从整音符到32音符的任何地方,可以是点音符或三元组。你可以访问AudioSystem javax.sound.sampledI无法让AudioSystem为我工作,但是在研究它的过程中,我确实从javax.sound中找到了midi功能,我可能可以使用它,所以感谢您为我指出了正确的大致方向(javax.sound)。我不能在每个节拍之间留出几分钟,因为那样的话,程序实际上就无法使用了,我不能让打开的hihat在关闭的hihat或踏板hihat播放后继续播放,因为这不是鼓的工作方式。我的意思是在主旋律的和处睡眠(),所以没有遗漏任何东西。播放停止是不可预测的,它可能会被切断,这取决于运行时间而不是实际的持续时间-有没有更可靠的类,我可以使用声音,而不是音频剪辑?我需要精度和速度来实现我对这个项目的愿景,因为我基本上想制作一个完整的音乐编辑器,它允许无限的测量,可以以不同的节奏播放,具有不同的时间特征,并且可以有从整音符到32音符的任何地方,可以是点音符或三元组。你可以访问AudioSystem javax.sound.sampledI无法让AudioSystem为我工作,但是在研究它的过程中,我确实从javax.sound中找到了midi特性,我可能可以使用它,所以感谢您为我指出了正确的方向(javax.sound)。