我正在C#/ Asp.net/JavaScript(作爲網站)寫音頻可視化器。由於我的動畫應該隨着音樂順暢移動,所以我認爲在後面的代碼中預處理MP3會更有意義,將值/頻率寫入文本文件或其他東西,然後使用javascript讀取值並相應地修改動畫。基本上我想要做一些像這樣的事情吧:https://lh4.ggpht.com/Qhm4EeDUgVlvLcX4MiZ1idGDUo5cD5PmLAIZIfnJlilzU789OPXAUK_emJSOT3CK4Vs=h900 我需要某種數值來作爲酒吧的高度,它應該隨着音樂的繼續而改變。 我爲此使用Naudio。這裏是我的代碼:音頻可視化器C#
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using NAudio;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MP3toWAV(MapPath("~/Music/UctfnI6yUPM.mp3"), MapPath("~/Music/UctfnI6yUPM.wav"));
Strip(MapPath("~/Music/UctfnI6yUPM.wav"));
}
public void MP3toWAV(string file,string output)
{
using (NAudio.Wave.Mp3FileReader reader = new NAudio.Wave.Mp3FileReader(file))
{
NAudio.Wave.WaveFileWriter.CreateWaveFile(output, reader);
}
}
public void Strip(string path)
{
NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(path));
byte[] buffer = new byte[8192];
int read = 0;
StreamWriter writer = new StreamWriter(MapPath("~/Result.txt"));
while (wave.Position < wave.Length)
{
read = wave.Read(buffer, 0, 8192);
for (int i = 0; i < read/4; i++)
{
writer.Write(BitConverter.ToSingle(buffer, i * 4));
}
}
}
}
這裏有引擎收錄輸出的一部分:http://pastebin.com/Ve5tym20 我無法複製整個事情,因爲它是一個〜90MB的文本文件。 我不太清楚我應該如何使用這些數據,以及這是否是正確的數據。 我花了幾天的時間查找如何做到這一點。我已經看過Mark Heath關於自動調諧的文章,並且我也看了BandedSpectrumAnalyzer項目。我從文章中得到了很多我的代碼,但BandedSpectrumAnalyzer項目讓我感到困惑(我不知道它的部分是什麼) 幫助請???