我找到了我转换的例子,它是AudioVSTToolbox
这是我的结果:http: //puu.sh/4mWU8.png
(我正在复制我的 Winamp 主题 :))
使 Spectrum Analyzer 从该工具箱工作所需的最低要求如下:
- 'NAudio-Visualizing' 文件夹的所有内容(波形的东西除外,除非你想要它)。
- CommonUtils\ColorUtils.cs
- CommonUtils\ExtendedGraphics.cs
- CommonUtils\MathUtils.cs
- CommonUtils\MidiUtils.cs
- CommonUtils\Audio\NAudio\AudioUtilsNAudio.cs
- CommonUtils\Audio\NAudio\NAudio.dll
- CommonUtils\FFT\AudioAnalyzer.cs
- CommonUtils\FFT\FFTWindows.cs
- CommonUtils\FFT\LomontFFT.cs
- CommonUtils\FFT\ExocortexDSP\Complex.cs
- CommonUtils\FFT\ExocortexDSP\ComplexF.cs
- CommonUtils\FFT\ExocortexDSP\Fourier.cs
- CommonUtils\FFT\ExocortexDSP\FourierDirection.cs
如果转换为 VB .Net,我在这里使用了转换器。虽然它不能正确转换所有内容,但需要以下值得注意的修复:(不幸的是,我不记得我所做的所有更改,这并不难,您可以搜索您可能遇到的任何转换问题)
- 在类中从任何语句中
MathUtils移除并添加到方法中。returnYield return ...Iterator
- 将类更改
MathUtils为模块以修复扩展错误。
- 用 .修复
Case语句...,Else。
var从For Each语句中删除。
- 在
ExtendedGraphics类中,将命名空间重命名System.Drawing.Extended为,AudioSystem.Drawing.Extended因为它与命名空间冲突System。
我个人做了一些改变:
添加字段:
Private m_Volume As Single = 0.2F 'Desired default volume
Private audioFileReader As AudioFileReader
Private fadeInOut As FadeInOutSampleProvider
Private m_fadeDuration As Integer = 250 'Desired fading duration
在OpenFileMethod 中,将Try语句中的 all 更改为:
waveOutDevice = New WaveOutEvent() With { _
.DesiredLatency = definedLatency _
}
audioFileReader = New AudioFileReader(path)
ActiveStream = DirectCast(audioFileReader, WaveStream)
inputStream = New WaveChannel32(ActiveStream)
fadeInOut = New FadeInOutSampleProvider(New WaveToSampleProvider(inputStream))
audioFileReader.Volume = Volume()
sampleAggregator = New SampleAggregator(m_fftDataSize)
AddHandler inputStream.Sample, AddressOf inputStream_Sample
waveOutDevice.Init(New SampleToWaveProvider(fadeInOut))
ChannelLength = inputStream.TotalTime.TotalSeconds
FileTag = TagLib.File.Create(path)
GenerateWaveformData(path)
CanPlay = True
在Pause()方法更改waveOutDevice.Pause()为fadeInOut.BeginFadeOut(fadeDuration())
在Play()方法中,在CanPlay声明中:
fadeInOut.BeginFadeIn(fadeDuration())
waveOutDevice.Play()
要将图形的样式更改为条形,在自定义频谱分析器控件的代码中,将默认值更改Public DoSpectrumGraph As Boolean = True为False。然后,您可以更改其上方的字段以根据需要设置条形样式。
在该Event Overrides地区,您可以更改颜色/绘图方法。