c# - Console.Beep可以替代Win8 x64吗?

标签 c# audio

我需要在特定时间内播放特定频率。 Console.beep对此非常理想,但win8 x64不支持。 SO上有一些文章建议编写和播放WAV,但这并不理想。有没有更好,更合适的方法?

最佳答案

Beep 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();
        }
      }
    }
  }

音符的频率
Octave-->  0    1     2     3     4     5      6      7
Note      ---------------------------------------------
C         16   33    65   131   262   523   1046   2093

C#        17   35    69   139   277   554   1109   2217

D         18   37    73   147   294   587   1175   2349

D#        19   39    78   155   311   622   1244   2489

E         21   41    82   165   330   659   1328   2637

F         22   44    87   175   349   698   1397   2794

F#        23   46    92   185   370   740   1480   2960

G         24   49    98   196   392   784   1568   3136

G#        26   52   104   208   415   831   1661   3322

A         27   55   110   220   440   880   1760   3520

A#        29   58   116   233   466   932   1865   3729

B         31   62   123   245   494   988   1975   3951

关于c# - Console.Beep可以替代Win8 x64吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19735342/

相关文章:

ios - Cordova |从 iOS 上的麦克风获取直播

c# - asp.net从后面的代码播放声音文件

java - Android MediaPlayer 链接

django - 在浏览器上录制音频

c# - 使用 C# 在 Artemis 上发送请求响应消息

c# - Json.NET 在没有父级的情况下序列化对象属性

c# - 过滤和 ICollectionView 过滤器 WPF

c# - Identity Server 3 访问 token 验证库无法验证从 Identity Server 4 生成的 token

javascript - 如何使用HTML5和JS选择具有唯一ID的音频文件URL?

c# - 在运行时设置服务 URL