输入源是通过国家乐器连接的麦克风。传入信号格式为(IEEEFloat,每秒51200个样本,100ms读取周期),并表示为数组double[] samples
。对于每100毫秒,来自麦克风的输入信号为双[]。如何在Windows机器中使用默认声卡播放此信号。
public void Open()
{
var _format = new WaveFormatChunk
{
SamplesPerSecond = Convert.ToUInt32(51200),
BitsPerSample = 32,
Channels = 1,
FormatEncoding = WaveFormatEncoding.IeeeFloat
};
_waveOutDevice = new WaveOut
{
DesiredLatency = 100
};
_waveProvider = new BufferedWaveProvider(_format.ToWaveFormat());
_waveOutDevice.Init(WaveProvider);
}
public void Consume(double[] samples)
{
var bytes = samples.ToBytes();
_waveProvider.AddSamples(bytes, 0, bytes.Length);
}
public void Play()
{
_waveOutDevice.Play();
}
只有声音听到的声音可以是每100毫秒点击一次(针刺)。麦克风不能听到声音或任何其他声音。这有什么不对吗?
答案 0 :(得分:0)
看起来您可能错过了从64位IEEE Float到32位IEEE Float的转换......除此之外,代码看起来很合理。
答案 1 :(得分:0)
此代码非常完美。我的错。我的输入不正确。