【发布时间】:2023-03-22 23:23:01
【问题描述】:
我需要能够使用 C# 动态生成波形并播放它,无需任何外部库,也无需将声音文件存储在硬盘上。延迟不是问题;声音会在应用程序需要它们之前生成。
实际上,如果不是因为 Microsoft 表示 64 位版本的 Windows 不支持它,Console.Beep() 方法可能会满足我的需求。
如果我动态地生成自己的声音,我可以得到比简单的哔声更花哨的声音。例如,我可以从频率从 2 KHz 增加到 4 KHz 的三角波制作波形,同时音量衰减。我不需要花哨的 16 位立体声,只需 8 位单声道就可以了。我不需要对音量和音高进行动态控制,基本上只是在内存中生成一个声音文件并播放它而不存储它。
上一次我需要生成声音是在很多年前,在 Apple II、HP 工作站和我的旧 Amiga 电脑上。从那以后就不需要这样做了,似乎我描述的一些简单的事情变得更加复杂了。我很难相信如此简单的事情似乎如此困难。我看到的大多数答案都是指 NAudio 或类似的库,这不是该项目的选择(除了拉入整个库只是为了播放音调似乎是一种浪费)。
【问题讨论】: