我一直在使用C ++对Atmel微控制器进行合成器项目,但我对时序缺乏了解,因为ctime
库使用整数毫秒参数(如果它甚至可以在Atmel上工作),但我需要输出(例如)频率高达44100Hz的方波,这显然会将输出状态从-1
改变为1
,其周期比毫秒短88.2倍。
现在我正在学习使用C#构建PC音频应用程序。所以,有我的问题:
1
和-1
值以及任何响度)输出到您的PC声音设备?答案 0 :(得分:0)
基本步骤:
准备(在内存中)"声音文件"例如两个通道(每个16位)和44.1 kHz的采样率(CD速率)。
将这些字节发送到DC转换器,通常称为"音频设备"
您可以使用NAudio
等库来执行此操作。
答案 1 :(得分:0)
通常,PC音频设备要求您发送特定缓冲区大小的PCM个数据包(例如200ms)。
对于44100的采样率,您将11025个样本(每个通道)放入缓冲区,并通过存储托管库的DirectSound等API将其发送到音频设备。或者,您可以直接使用Windows Core Audi API。还有很多其他的。
无需单独控制每个样本。
样本可以是8/16/24/32/64位列表中的任何内容,并存储在特定的数据类型中,例如:
unsigned byte
8位样本 short
或Int16
Int32
或float
代表 32位样本 您必须告诉您的音频设备您要发送多少个频道(SampleRate
)的样本(SampleSize
)的样本数量(ChannelNum
),同意缓冲区大小并去!