Java 如何使用targetdataline提供的字节数组来获取有关音频的信息?

Java 如何使用targetdataline提供的字节数组来获取有关音频的信息?,java,audio,Java,Audio,我正在将电大提琴的音频输入电脑的麦克风端口,我希望我的程序能够理解何时没有输入音频,如果输入音频,播放的音符/频率是什么 我能够让大提琴通过targetdataline演奏,并在java中传到sourcedataline。根据,我还使用fft实现了一个实时频率检测部分,但它在大提琴上的效果不是很好。不过,当我吹口哨时,它确实表现得不错 如果您能给我一些指导,让我了解如何使用targetdataline和大提琴输出获得的信息来查看正在播放的内容,我将不胜感激。欢迎使用其他方法,例如使用不同的应用程

我正在将电大提琴的音频输入电脑的麦克风端口,我希望我的程序能够理解何时没有输入音频,如果输入音频,播放的音符/频率是什么

我能够让大提琴通过targetdataline演奏,并在java中传到sourcedataline。根据,我还使用fft实现了一个实时频率检测部分,但它在大提琴上的效果不是很好。不过,当我吹口哨时,它确实表现得不错

如果您能给我一些指导,让我了解如何使用targetdataline和大提琴输出获得的信息来查看正在播放的内容,我将不胜感激。欢迎使用其他方法,例如使用不同的应用程序

AudioFormat format=新的AudioFormat(AudioFormat.Encoding.PCM_-SIGNED,44100,16,2,4,44100,false);
试一试{
//制作用于写入的SourceDataLine
DataLine.Info=newdataline.Info(SourceDataLine.class,格式);
最终SourceDataLine sourceLine=(SourceDataLine)AudioSystem.getLine(info);
sourceLine.open(格式/*,#*/);
//#5800是迄今为止我用过的最小的
//制作TargetDataLine以便进入
info=新的DataLine.info(TargetDataLine.class,格式);
最终TargetDataLine targetLine=(TargetDataLine)AudioSystem.getLine(info);
targetLine.open(格式);

final byte[]buf=new byte[2048];//大提琴演奏和不演奏之间是否存在显著的音量差异?如果是,您可以使用均方根算法检查音量水平并作出反应。但是如果您受到大量背景噪音(与乐队现场演奏?)然后是IDK。但是让基本路径工作非常酷,让FFT实时工作。我希望在某个时候也能尝试一下。另外,你可以试着问一下,因为编码部分在这里不是一个问题,而不是找出一个好的DSP策略。是的,音量有很大的差异,所以检查大提琴何时从e targetdataline不会太难。因为大提琴有一个吉他输出,可以插入计算机,所以背景噪音应该不会太大。我会尝试现场显示与此视频类似的频率:。我也会在dsp部分询问。谢谢你的帮助!只是好奇,你也是大提琴手吗?另外,我建议/请求你发布一个链接到你在dsp区域重新发布的这个问题。是:)。我得到了它来显示频率。如果你想知道代码,请告诉我。拨弦时音高检测效果很好,但使用弓时,会出现多个频率峰值,因此准确度很低。因此,我不会将此发布到dsp部分。目标不是o通过大提琴的音符来演奏不同的乐器,但我最终可能会得到一个roli seaboard。大提琴演奏和不演奏之间是否存在显著的音量差异?如果是这样,你可以使用均方根算法来检查音量水平并作出反应。但是如果你听到大量背景噪音(与乐队现场演奏?)然后是IDK。但是让基本路径工作非常酷,让FFT实时工作。我希望在某个时候也能尝试一下。另外,你可以试着问一下,因为编码部分在这里不是一个问题,而不是找出一个好的DSP策略。是的,音量有很大的差异,所以检查大提琴何时从e targetdataline不会太难。因为大提琴有一个吉他输出,可以插入计算机,所以背景噪音应该不会太大。我会尝试现场显示与此视频类似的频率:。我也会在dsp部分询问。谢谢你的帮助!只是好奇,你也是大提琴手吗?另外,我建议/请求你发布一个链接到您在dsp区域中重新发布此问题。是:)。我用它来显示频率。如果你想知道代码,请告诉我。拨弦时音高检测效果很好,但使用琴弓时,会出现多个频率峰值,因此精度非常低。因此,我不会将此发布到DSP部分。目标是通过从ce获得音符来演奏不同的乐器罗,但我可能最终会得到一个罗利海岸。