Windows phone 7 找到几个八度音符的音调?

Windows phone 7 找到几个八度音符的音调?,windows-phone-7,Windows Phone 7,我正在构建一个Windows Phone 7应用程序来播放音符。我想找到一些好的.wav、.mp3或.midi文件,我可以使用。我到处找了找,但什么也没找到。有什么建议吗 我还研究了NAudio和Midi.NET等.NET框架,看看是否可以通过编程方式生成音调,但我一直不知道如何实现。Midi文件不包含声音,它们只描述一系列音符(和其他音乐控件)。计算机的MIDI驱动程序应该负责实际产生声音。如果您的Windows phone有一个驱动程序,那么您应该能够使用Midi.NET说“播放一个C,播放

我正在构建一个Windows Phone 7应用程序来播放音符。我想找到一些好的.wav、.mp3或.midi文件,我可以使用。我到处找了找,但什么也没找到。有什么建议吗


我还研究了NAudio和Midi.NET等.NET框架,看看是否可以通过编程方式生成音调,但我一直不知道如何实现。Midi文件不包含声音,它们只描述一系列音符(和其他音乐控件)。计算机的MIDI驱动程序应该负责实际产生声音。如果您的Windows phone有一个驱动程序,那么您应该能够使用Midi.NET说“播放一个C,播放x秒”,并且它会


如果没有,您可以通过使用简单的正弦函数生成波形来合成纯音。对于实际的仪器,我不知道有任何存储库-记录好它们需要昂贵的设备和努力,因此它们很少免费提供。

您可以使用这些文章中描述的技术自己创建WAV文件:

这里有一个小的示例程序,可以让您开始使用,它根据八度音阶和十二度音阶的半音阶计算频率:

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”,查找钢琴、长笛、小提琴、鼓等乐器单独录制的音符

是一种共享免费音频文件的通用格式,设计用于。一般来说,你会发现免费提供的任何东西的质量都会从不可用到合理不等,有几个显著的高质量例外

大多数soundfonts不会包含每个音符的单独音频文件。更常见的是,soundfonts每八度包含一个示例。在这种情况下,您的应用程序将需要能够将移位音符调高到正确的频率。(这不是很难做到,这是我们的正常做法。)

合成(以编程方式生成音调)-我不知道你的应用程序做什么,但。。。正弦音是简单的声音,很容易产生,但很快就会变得无聊。可以创建更多有趣的声音,但声音合成代码很快就会变得复杂。我不建议编写自己的合成代码,除非它是应用程序的核心部分。我想最好使用示例播放或使用MIDI(如果WindowsPhone7有一个好的MIDI播放库)