2011-01-08 46 views
4

我正在構建播放音符的Windows Phone 7應用程序。我想找到一些可以使用的.wav,.mp3或.midi文件。我環顧四周,但還沒有找到任何東西。有什麼建議去哪裏看?找到幾個八度音符的音調?

我也看過像NAudio和Midi.NET這樣的.NET框架來查看我是否可以通過編程方式生成音調,但我一直無法弄清楚如何去做。

回答

1

MIDI文件不包含聲音,它們只是描述一系列音符(和其他音樂控制)。計算機的MIDI驅動程序應該注意實際產生的聲音。如果你的Windows手機有一個驅動程序,那麼你應該可以使用Midi.NET來說「在X秒內播放一個C」,它會。

如果不是,您可以使用簡單的正弦函數合成純音來生成波形。對於實際的樂器,我不知道任何存儲庫 - 錄製它們需要昂貴的設備和精力,所以很少能夠免費使用它們。

3

您可以創建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; 
    } 
} 
1

谷歌「免費的SoundFonts」找到鋼琴,長笛,小提琴,鼓等

Soundfont單獨記錄儀的筆記是一個分享的samplers設計使用免費的音頻文件的通用格式。一般來說,你可以免費獲得的任何東西的質量都會從不可用到合理,並有一些顯着的高質量例外。

大多數聲音字體不會爲每個音符包含單獨的音頻文件。更常見的音色將包含每個八度的一個樣本。在這種情況下,您的應用程序需要能夠將音符移到正確的頻率。 (這並不困難,samplers是正常的方法。)

綜合(編程生成音調) - 我不知道你的應用程序做了什麼,但...正弦音調是簡單的聲音,很容易創造,但很快就會變得無聊聽到。可以創建更有趣的聲音,但聲音合成代碼很快就會變得複雜。我不建議編寫自己的綜合代碼,除非它是應用程序的核心部分。恕我直言,使用示例播放或使用MIDI會更好(如果Windows Phone 7具有良好的MIDI播放庫)。

Soundfont Archive