以图形方式将声音表示为波

Posted

技术标签:

【中文标题】以图形方式将声音表示为波【英文标题】:representing sound graphically as wave 【发布时间】:2012-02-15 16:12:45 【问题描述】:

我创建了一个可以录制和播放声音的应用程序,我正在寻找一种显示简单波形的方法 表示录制的声音,不需要动画,只是一个简单的图表。

如果可以选择 wave 的一个子集当然更好 也播放该部分。

总结一下,我在找什么:

    一种将录制的声音以图形方式表示为波的方式(例如,在大胆中看到) 一种以图形方式选择波形表示子集的方法。

进一步澄清我在寻找什么:

    如果有这样的库,我会非常高兴:) 关于最适合用于处理图形绘制的组件的提示。 关于如何处理图形组件中的选择的提示。

【问题讨论】:

图表的轴应该是什么?数量与时间?时间积分量与频率? 测试版:是的,x 轴的时间,以及为 y 轴提供最佳表示(体积?)的任何东西。 您已经知道如何编写应用程序,并且我认为您知道如何操作声音文件,所以这是显示图形和/或 GUI 的问题。我不知道您对这些主题了解多少,所以我建议您编辑您的问题以澄清您需要帮助的内容。 (我对 ios 图形知之甚少,所以我可能帮不了你。) 我主要是在图形方面寻求帮助,即为此使用哪些组件以及为什么。添加了更多信息以澄清我的请求,感谢您的反馈,Beta。 @tommys 请检查我的更新答案 【参考方案1】:

我已经在另一个应用程序中这样做了,并且已经为此苦苦挣扎了一段时间......

您可以将音频文件的样本数除以显示图形所需的像素数。这给了你一个块大小。 对于所有“桶”,您计算最小值和最大值并根据所使用的样本分辨率显示它们。

如果需要,可以提供更多示例。


关于图形的东西: (我不是 iOS 开发人员,但我认为 Mac 编程并没有太大的不同。) 只需创建一个 NSView 的子类(在 iOS 中应该是 UIView )并覆盖 drawRect 方法。 然后只需创建一个函数,为您的文件传递一组值并在屏幕上绘制一堆线。这里不是黑魔法!!

这真的不是你需要图书馆的东西! 而且,作为另一个积极方面:如果你保持它足够通用,你总是可以重复使用它。

【讨论】:

谢谢,你的 override-strategy 听起来是个不错的方法。我猜想同一个类也可以捕获并存储一个表示通过捏合所做选择的 x 间隔,并在 drawRect 方法中使用这些坐标进行绘制和覆盖。很抱歉这么长的评论,但我有点忘乎所以:) 我总是喜欢帮忙!!特别是如果它在我的“家乡”。我还拥有音频工程文凭;)如果您需要更多信息,请联系我。最佳 开始按照您的建议实施图表,非常棒。我之前只使用 AVAudioPlayer 进行过简单的播放任务,因此对于如何阅读可用于绘图的 mp3 信息的任何帮助将不胜感激! 您必须先对其进行解码才能获得实际值。这个问题似乎正在解决这个确切的问题***.com/questions/6902730/… 我使用的是 mpg123 库,因为我使用的是 C++ 而不是 objc

以上是关于以图形方式将声音表示为波的主要内容,如果未能解决你的问题,请参考以下文章

关于FFMPEG 中I帧B帧P帧PTSDTS

如何以图形方式表示和操作 apache avro 架构

使用 C++ 使用 openGL 以图形方式表示堆积条形图

以图形方式将对象添加到 Core Data

以编程方式将文本注释添加到图形

JavaScript对象的图形表示(Tree-View)?