2011-01-08 19 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