Linux下ALSA多通道USB声卡通道输出顺序不一致问题求助
Startech ICUSBAUDIO7D USB声卡ALSA 8通道输出映射顺序不稳定问题
我使用Startech ICUSBAUDIO7D USB声卡(通过lsusb识别为ID 0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device),在Linux系统中基于ALSA进行8通道输出编程。该声卡配有4个立体声接口,我已连接示波器用于调试。
当前问题:每次运行程序时,通道输出的映射顺序不一致。例如首次运行时第一个立体声接口输出的振幅为(0, 0.125),但下一次运行时该接口可能输出(0.75, 0.25),且通道并非按接口成对映射。
以下是我生成50Hz正弦波的Python代码(为便于示波器识别,每个通道设置了不同振幅):
import numpy as np import alsaaudio def sine_wave(amplitude=1, freq=50, sample_rate=48000): wave_len = sample_rate/freq samples = (amplitude * 32767 * np.sin(2 * np.pi * np.arange(wave_len) * freq / sample_rate)).astype(np.int16) return samples def eightchan(freq=50, sample_rate=48000): wave_len = sample_rate//freq frames = np.zeros((wave_len, 8), dtype=np.int16) samples = sine_wave() for c in range(8): frames[:wave_len,c] = samples[:wave_len]*(c/8) return frames.tobytes() if __name__ == '__main__': pcm = alsaaudio.PCM(device='surround71:CARD=ICUSBAUDIO7D,DEV=0', format=alsaaudio.PCM_FORMAT_S16_LE, channels=8, rate=48000, type=alsaaudio.PCM_PLAYBACK, periodsize=960, periods=1) frames = eightchan() while True: pcm.write(frames)
内容的提问来源于stack exchange,提问作者askvictor
相关产品推荐
相关产品推荐

