【问题标题】:How to make an audio stream in C#? (general)如何在 C# 中制作音频流? (一般的)
【发布时间】:2015-07-11 13:54:38
【问题描述】:

我一直在使用 C++ 在 Atmel 微控制器上做一个合成器项目,但我对时序缺乏了解,因为 ctime 库使用整数毫秒参数(如果它甚至可以在 Atmel 上工作),但我有一个需要输出(例如)频率高达 44100Hz 的方波,显然,这会将输出状态从 -1 更改为 1,周期比毫秒短 88.2 倍。

现在我正在学习使用 C# 构建 PC 音频应用程序。所以,有我的问题:

  1. 您将如何为应用程序在 C# 中精确地执行 1/88.2 毫秒的时间,例如使用时间比较函数和仅使用本机库(如果这实际上可能的话)?
  2. 如何将您的蒸汽(例如 1-1 值与任何响度)输出到 PC 的声音设备?

【问题讨论】:

    标签: c# audio waveform


    【解决方案1】:

    通常,PC 音频设备要求您以特定缓冲区大小(例如 200 毫秒)发送 PCM 数据包。

    对于 44100 的采样率,您将 11025 个采样(每个通道)放入缓冲区,并通过 API(例如 DirectSound)将其发送到音频设备,其中存在托管库。或者,您可以直接使用Windows Core Audi API。还有很多其他的。

    无需单独控制每个样本

    样本可以是 8/16/24/32/64 位列表中的任何内容,并以特定数据类型存储,例如:

    • unsigned byte 用于 8 位样本
    • shortInt16 用于 16 位样本
    • C#原生支持24位整数
    • Int32float 用于 32 位样本

    基本上,您必须告诉您的音频设备,您将发送多少个通道 (ChannelNum) 上的多少个样本 (SampleRate) 什么类型 (SampleSize),商定缓冲区大小然后开始!

    【讨论】:

    • 谢谢!我将实际使用的另一条信息!
    【解决方案2】:

    基本步骤:

    准备一个(在内存中)“声音文件”,例如两个通道(每个 16 位)和 44.1 kHz 的采样率(CD 率)。

    将这些字节发送到直流转换器,通常称为“音频设备”

    您可以使用像 NAudio 这样的库来执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 2016-07-07
      相关资源
      最近更新 更多