我正在構建播放音符的Windows Phone 7應用程序。我想找到一些可以使用的.wav,.mp3或.midi文件。我環顧四周,但還沒有找到任何東西。有什麼建議去哪裏看?找到幾個八度音符的音調?
我也看過像NAudio和Midi.NET這樣的.NET框架來查看我是否可以通過編程方式生成音調,但我一直無法弄清楚如何去做。
我正在構建播放音符的Windows Phone 7應用程序。我想找到一些可以使用的.wav,.mp3或.midi文件。我環顧四周,但還沒有找到任何東西。有什麼建議去哪裏看?找到幾個八度音符的音調?
我也看過像NAudio和Midi.NET這樣的.NET框架來查看我是否可以通過編程方式生成音調,但我一直無法弄清楚如何去做。
MIDI文件不包含聲音,它們只是描述一系列音符(和其他音樂控制)。計算機的MIDI驅動程序應該注意實際產生的聲音。如果你的Windows手機有一個驅動程序,那麼你應該可以使用Midi.NET來說「在X秒內播放一個C」,它會。
如果不是,您可以使用簡單的正弦函數合成純音來生成波形。對於實際的樂器,我不知道任何存儲庫 - 錄製它們需要昂貴的設備和精力,所以很少能夠免費使用它們。
您可以創建WAV文件自己使用NAudio使用這些文章中描述的技術:
,這裏是一個小樣本程序,讓你開始說根據八度音和12級音的半音計算頻率:
private WaveOut waveOut;
private WaveRecorder waveRecorder;
private void Button_Click(object sender, RoutedEventArgs e)
{
StartStopSineWave();
}
private void StartStopSineWave()
{
if (waveOut == null)
{
int octave = 1;
int note = 0;
var sineWaveProvider = new SineWaveProvider32();
sineWaveProvider.SetWaveFormat(16000, 1); // 16kHz mono
sineWaveProvider.Frequency = (float)(440 * Math.Pow(2, octave + note/12.0));
sineWaveProvider.Amplitude = 0.25f;
waveRecorder = new WaveRecorder(sineWaveProvider, "sample.wav");
waveOut = new WaveOut();
waveOut.Init(waveRecorder);
waveOut.Play();
}
else
{
waveOut.Stop();
waveOut.Dispose();
waveOut = null;
waveRecorder.Dispose();
waveRecorder = null;
}
}
谷歌「免費的SoundFonts」找到鋼琴,長笛,小提琴,鼓等
Soundfont單獨記錄儀的筆記是一個分享的samplers設計使用免費的音頻文件的通用格式。一般來說,你可以免費獲得的任何東西的質量都會從不可用到合理,並有一些顯着的高質量例外。
大多數聲音字體不會爲每個音符包含單獨的音頻文件。更常見的音色將包含每個八度的一個樣本。在這種情況下,您的應用程序需要能夠將音符移到正確的頻率。 (這並不困難,samplers是正常的方法。)
綜合(編程生成音調) - 我不知道你的應用程序做了什麼,但...正弦音調是簡單的聲音,很容易創造,但很快就會變得無聊聽到。可以創建更有趣的聲音,但聲音合成代碼很快就會變得複雜。我不建議編寫自己的綜合代碼,除非它是應用程序的核心部分。恕我直言,使用示例播放或使用MIDI會更好(如果Windows Phone 7具有良好的MIDI播放庫)。