我想要看起来像这样的东西。两种不同的颜色不是无用的。如何可视化音频数据?
audacity on mac http://audacity.sourceforge.net/about/images/audacity-macosx.png
我已经在两个int阵列,每一个用于左和右信道从立体声WAV音频数据(一个样品/毫秒)。我已经做了一些尝试,但他们看起来并没有像这样清晰,我的尝试变成了spikey或紧凑的团块。
任何建议吗?我在c#中工作,但psuedocode是可以的。
假设我们有
- 的函数的DrawLine(颜色,X1,Y1,X2,Y2)与
- 两个int阵列数据向右[]和左边的[] lenght大号
- 数据值在32767和-32768之间
如果您做出任何其他假设,只需在答案中写下它们即可。
for(i = 0; i < L - 1; i++) {
// What magic goes here?
}
这就是我申请the solution Han provided时的结果。 (只有一个频道)
alt text http://www.imagechicken.com/uploads/1245877759099921200.jpg
Audacity是开源的,所以你可以看看代码。我会假设像下面这样... func getHeight(v){return abs(v)* 32767/viewArea.height/2); samplesPerPixelColumn = samples.len/viewArea.width; for i = 1 to viewArea.width {avgV = Avg(samples [i-i + samplesPerPixelColumn]); colHeight = getHeight(avgV);如果avgV> = 0 DrawLine(black,i,viewArea.height/2,i,(viewArea.height/2)+ colHeight)else DrawLine(black,i,viewArea.height/2,i,(viewArea.height/2 ) - colHeight);你可能需要在那里做一些舍入/范围处理,但这应该是主要的。 – steamer25 2009-06-23 23:14:21
你为什么不把它写成答案。 – Nifle 2009-06-24 07:01:11