如何在 Java 中制作音量调高动画
How to make volume up down animation in Java
我正在开发一个音乐播放器,我快完成了。但我需要尝试一些东西,因为我看到有更多的商业音乐应用程序在播放音乐时使用不同类型的动画来提高和降低音量。
我需要这样的东西,
.
我该怎么做?有谁能够帮助我?提前谢谢你。
如果您通过 SourceDataLine 输出音频,则可以在处理音频数据时对其进行检查。在 Oracle Sound Trail 教程中,Using Files and Format Converters 页的 "Reading Sound Files" 部分中提供了一个有用的代码示例。代码中的重点用注释“// Here, do something useful
”
标记
此时您可以将字节转换为音频值,并将这些值用作 RMS 计算的一部分。 coversion 和 RMS 计算的详细信息应该是可搜索的——我知道我已经在 Whosebug 上看到了这两者的解释。
一旦计算出 RMS 值,就可以将其发送到处理图形可视化的独立线程。应采用松散耦合模式,以便最大限度地减少在音频线程上完成的工作量,并避免任何可能挂断音频的阻塞。
例如,可视化线程可以有一个 setRMSValue 方法,它只更新一个实例变量,而无需同步或任何类型的阻塞。音频处理线程可以在生成新的 RMS 数据点时自由调用此方法。可视化工具可以以您的动画速率同时读取当前实例变量。不需要 synchronization
。如果可视化线程跳过几个 RMS 数据点,应该没有问题。
我正在开发一个音乐播放器,我快完成了。但我需要尝试一些东西,因为我看到有更多的商业音乐应用程序在播放音乐时使用不同类型的动画来提高和降低音量。
我需要这样的东西,
我该怎么做?有谁能够帮助我?提前谢谢你。
如果您通过 SourceDataLine 输出音频,则可以在处理音频数据时对其进行检查。在 Oracle Sound Trail 教程中,Using Files and Format Converters 页的 "Reading Sound Files" 部分中提供了一个有用的代码示例。代码中的重点用注释“// Here, do something useful
”
此时您可以将字节转换为音频值,并将这些值用作 RMS 计算的一部分。 coversion 和 RMS 计算的详细信息应该是可搜索的——我知道我已经在 Whosebug 上看到了这两者的解释。
一旦计算出 RMS 值,就可以将其发送到处理图形可视化的独立线程。应采用松散耦合模式,以便最大限度地减少在音频线程上完成的工作量,并避免任何可能挂断音频的阻塞。
例如,可视化线程可以有一个 setRMSValue 方法,它只更新一个实例变量,而无需同步或任何类型的阻塞。音频处理线程可以在生成新的 RMS 数据点时自由调用此方法。可视化工具可以以您的动画速率同时读取当前实例变量。不需要 synchronization
。如果可视化线程跳过几个 RMS 数据点,应该没有问题。