【问题标题】:Audio generation software or .NET library音频生成软件或 .NET 库
【发布时间】:2010-11-24 05:07:04
【问题描述】:

我需要能够在 c# 应用程序中播放某些音调。我不在乎它是即时生成它们还是从文件中播放它们,但我只需要某种方法来生成不仅音量和频率可变,而且音色可变的音调。如果我用来生成这些音调的任何东西都有很多音色预设,那将特别有用,如果这些音色听起来不是全部都是 midi-ish 那就更棒了(这意味着其中一些听起来可能是实际乐器的录音)。

有什么建议吗?

【问题讨论】:

    标签: c# audio generator


    【解决方案1】:

    你不妨看看我的问题Creating sine or square wave in C#

    特别是使用NAudio 是一个不错的选择

    【讨论】:

      【解决方案2】:

      这篇文章帮助我完成了类似的事情: http://social.msdn.microsoft.com/Forums/vstudio/en-US/18fe83f0-5658-4bcf-bafc-2e02e187eb80/beep-beep

      特别是 Beep 类:

      public class Beep
      {
        public static void BeepBeep(int Amplitude, int Frequency, int Duration)
        {
          double A = ((Amplitude * (System.Math.Pow(2, 15))) / 1000) - 1;
          double DeltaFT = 2 * Math.PI * Frequency / 44100.0;
      
          int Samples = 441 * Duration / 10;
          int Bytes = Samples * 4;
          int[] Hdr = {0X46464952, 36 + Bytes, 0X45564157, 0X20746D66, 16, 0X20001, 44100, 176400, 0X100004, 0X61746164, Bytes};
          using (MemoryStream MS = new MemoryStream(44 + Bytes))
          {
            using (BinaryWriter BW = new BinaryWriter(MS))
            {
              for (int I = 0; I < Hdr.Length; I++)
              {
                BW.Write(Hdr[I]);
              }
              for (int T = 0; T < Samples; T++)
              {
                short Sample = System.Convert.ToInt16(A * Math.Sin(DeltaFT * T));
                BW.Write(Sample);
                BW.Write(Sample);
              }
              BW.Flush();
              MS.Seek(0, SeekOrigin.Begin);
              using (SoundPlayer SP = new SoundPlayer(MS))
              {
                SP.PlaySync();
              }
            }
          }
        }
      }
      

      可以如下使用

      Beep.BeepBeep(100, 1000, 1000); /* 10% volume */
      

      【讨论】:

        【解决方案3】:

        CodeProject 上有一篇很受欢迎的文章,内容如下: http://www.codeproject.com/KB/audio-video/CS_ToneGenerator.aspx

        你也可以看看这个帖子: http://episteme.arstechnica.com/eve/forums/a/tpc/f/6330927813/m/197000149731

        【讨论】:

          【解决方案4】:

          为了让您生成的音调听起来不“midi-ish”,您必须使用真实的样本并回放它们。试着找一些好的真实乐器样本库,比如http://www.sampleswap.org/filebrowser-new.php?d=INSTRUMENTS+single+samples%2F

          然后,当您想从它们中创作旋律时,只需相对于原始采样频率交替播放频率即可。

          如果您觉得这个答案有用,请给我留言。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-05-20
            • 2023-03-05
            • 2017-07-08
            • 1970-01-01
            • 2012-09-18
            • 2012-02-19
            • 1970-01-01
            相关资源
            最近更新 更多