gpt4 book ai didi

java - 为什么我的音频剪辑播放不一致?

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:10 24 4
gpt4 key购买 nike

我正在尝试制作一个鼓循环编辑器,我有一个名为 Sounds 的类和一个运行我的 main 方法的类,当前用于测试 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.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){}
}

这是我的声音类(class):

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();
}
}
}

我的问题是声音会播放,但不是每次都会播放。通常,踩镲完全被排除在外,主要是在还有军鼓或贝斯演奏的节拍中。

如果您打算尝试制作自己的项目副本以尝试找出问题,您可以在此处获取我正在使用的 wav 文件的 zip 文件夹:
http://www.mediafire.com/download/q1iok0dji4d228w/drum_wav_files.zip

预先感谢您的任何反馈。

最佳答案

让一切顺利进行,不要停止

最后睡几分钟,让一切顺利进行

您需要将文件剪切到播放所需的精确度并让其全部播放 - wav 中没有 5 分钟,但想要播放 2.5 - 这是不可预测的。

因此,将文件缩减为所需的内容,并按照您需要的顺序播放它们。

否则你必须更详细地测量文件的长度,需要播放多少字节等

添加:您可以转到 AudioSystem 和 javax.sound.sampled 包,它有点复杂,因此您需要阅读 -

关于java - 为什么我的音频剪辑播放不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34542994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com