Java MP3波形规范化

Java MP3波形规范化,java,javasound,waveform,Java,Javasound,Waveform,我一直在尝试生成大胆的波形。我使用了java sound api,并将实际的mp3表示为波形。你有没有什么数学函数可以应用到要绘制的数据集上,让它看起来更密集、更平滑 谢谢 编辑1: 移动平均线的建议(我使用了指数)效果很好,但是对我的限制(单线程)做的很好。除此之外,输出非常好 我最终实现了自己的一个小实现。我取一个区域的局部极大值,用一条直线连接到下一个区域的局部极大值。它速度快,输出效果好 编辑2: 连接 作者@Nicholas DiPiazza如果我没弄错的话,您已经知道了如何到达PCM

我一直在尝试生成大胆的波形。我使用了java sound api,并将实际的mp3表示为波形。你有没有什么数学函数可以应用到要绘制的数据集上,让它看起来更密集、更平滑

谢谢

编辑1:

移动平均线的建议(我使用了指数)效果很好,但是对我的限制(单线程)做的很好。除此之外,输出非常好

我最终实现了自己的一个小实现。我取一个区域的局部极大值,用一条直线连接到下一个区域的局部极大值。它速度快,输出效果好

编辑2: 连接
作者@Nicholas DiPiazza

如果我没弄错的话,您已经知道了如何到达PCM数据点,但是现在想要为它们拟合一条曲线。是吗

线性插值是最简单的方法。如果它不够光滑,我会感到惊讶。你们的抽样率是多少


我知道有高阶曲线也可以用来拟合数据点,这将使图形表示更加平滑。我不确定什么是表示音频波的最佳方式。我似乎还记得“立方插值”一词在音频中的流行。虽然不能确定,但计算起来有点粗糙。

要更快地获得更好的帮助,请发布一篇文章。但是要制作SSCCE,您需要热链接到J2SE()支持的声音文件,或者在运行时使用Java声音生成它。我代表MP3文件。创建有问题表示的轨迹的采样率为48000 Hz。插值将提供更多“中间”值。我没有这个问题,我有足够的样品。我的问题是,像soundcloud一样,这些曲目的纯粹表现形式不够华丽。因此,你可以有峰值、静音间隔等。理想的情况是将所有这些均匀化,使其看起来更平滑。声音云图只是PCM数据,不是吗?我见过的那些会变得很刺耳。SoundCloud可能会“规范化”数据,以便视觉垂直跨越显示,但我不认为还有其他事情要做。(你知道这意味着什么,对吧?例如,使用16位有符号PCM编码:将PCM值除以32767,然后调用显示器顶部1和底部-1。)数据平滑通常使用过滤函数或滚动平均值来完成,但这两者都会使视觉数据成为声音的不准确表示。我想我不明白你要什么。很抱歉我认为我没有正确地将其形式化,我的缺点:)我的问题在于过滤或滚动平均,我的目标是减少峰值。你对可能的过滤器有什么想法吗?(或图书馆)谢谢菲尔!你可以试试维基百科上关于“移动平均线”的这篇文章。简单地说,对于每个数据点,您将创建一个新的数据点,该数据点是其相邻N个数据点的平均值。使用的邻居越多,生成的直线越平滑。也可以对邻居进行加权,以便较近的邻居对平均值的影响最大。还有一篇关于“低通过滤器”的维基文章可能会有所帮助,但数学上可能会有问题。不过,在文章的末尾有一个算法,我编写了一次作为测试,它确实有效。祝你好运