我正在使用AVAudioPlayer在iphone中构建一个音乐应用程序,它正在成功播放音乐。
但现在我的要求是在音乐开始播放时在屏幕上生成一个波形(正弦/方形/数字/模拟),并在音乐文件结束后停止播放。
我该怎么做?
答案 0 :(得分:3)
也许您可以使用core-plot项目来绘制曲线。
答案 1 :(得分:0)
这是一篇非常好的博客文章,展示了如何绘制波形:Drawing Waveforms
它还包含有关如何处理大缓冲区数据减少的提示。
修改强>
这篇文章是为Mac OS X编写的,但由于它使用Quartz来显示波形,因此它在iPhone上运行良好。
答案 2 :(得分:0)
生成正弦波更容易。 好吧,我将正弦波实现到UIView drawrect方法中,如下所示:
float x=75;
float yc=50;
float w=0;
while (w<=rect.frame.size.width) {
CGPathMoveToPoint(path, nil, w,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+x/4, -yc,w+ x/2, y/2);
CGPathMoveToPoint(path, nil, w+x/2,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+3*x/4, y+yc, w+x, y/2);
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathStroke);
w+=x;
}
这里x是每个正弦波的宽度,而y是帧的高度。这将绘制数量的正弦波以适应整个UIViewFrame。它会产生清晰的正弦波,yc是控制手柄。试试你可能会喜欢它。
如果宽度即。 x类似于帧的宽度,然后将产生单个正弦波。
完整正弦波数=(帧宽)/(每个正弦波的'x'宽度) 现在,尝试根据音频功率调整波的幅度和频率。