2017-10-09 52 views
2

我一直在通过文档寻找这个答案。我发现AudioKit可以在您录制或播放时实时绘制波形,但我想知道是否可以加载文件,并且可以完整地绘制波形,这样我就可以看到整个文件的波形而不会回放。AudioKit - 绘制文件的完整波形

任何帮助将不胜感激。即使只是一个指向我应该看什么对象的指针。

回答

2

您也可以使用目标C EZAudioPlot类,这是在AudioKitUI:

let file = EZAudioFile(url: url) 
guard let data = file?.getWaveformData() else { return } 

let waveform = EZAudioPlot() 
addSubview(waveform) 
waveform.frame = NSMakeRect(0, 0, 200, 20) 
waveform.plotType = EZPlotType.buffer 
waveform.shouldFill = true 
waveform.shouldMirror = true 
waveform.color = NSColor.black 
waveform.updateBuffer(data.buffers[0], withBufferSize: data.bufferSize) 

我没有对两种方法进行基准测试,但对于较长的文件,剧情版本速度非常快。对于立体声文件,请使用缓冲区[0]和[1]制作两个堆积的曲线图

2

有是在表操场例子在这里绘制的波形:http://audiokit.io/playgrounds/Basics/Tables/

基本上是:

let file = try AKAudioFile(readFileName: "drumloop.wav") 
let fileTable = AKTable(file: file) 
...UI set up... 
addView(AKTableView(fileTable)) 
+0

双通道文件的正确行为是什么?我注意到AKTable的实现只抓取第一个通道的数据。 – hhanesand

+0

@hhanesand您必须对文件数据进行一些预处理才能为每个通道获取两个数据集或对通道进行求和。目标是一组浮点数,您可以将其加载到表中以查看。这对AudioKit来说是一个不错的补充,它默认为“总和”视图,并且具有特定的频道视图。 –