変換元の例を見つけました。それはAudioVSTToolbox でした
これが私の結果です:http://puu.sh/4mWU8.png
(私はWinampのテーマをコピーしています:))
そのツールボックスからスペクトル アナライザーを動作させるために最低限必要なものは次のとおりです。
- 「NAudio-Visualizing」フォルダのすべてのコンテンツ (必要な場合を除き、Waveform のものを除く)。
- 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
クラス内のreturn
すべてのYield 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
OpenFile
メソッドで、Try
ステートメント内のすべてを次のように変更します。
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
、色/描画方法を変更できます。