USB声卡,频率修改遇到一些问题

[复制链接]
 楼主| xuqingli123 发表于 2019-9-17 11:19 | 显示全部楼层 |阅读模式
本帖最后由 xuqingli123 于 2019-9-17 11:21 编辑

USB声卡,频率修改后,传输的数据响应也会跟着修改,但是44100在双听到全速的时候,每帧要传输44100*4/1000,但是结果不是整数,这会不会影响数据之间的传输呢?现在48K时候,用扫频信号进行扫频,听不出来有什么问题,但是把频率修改成44100时候,每次扫频,在扫频结尾都会出现滋啦的声音。
394645065 发表于 2019-9-17 22:37 | 显示全部楼层
44.1kHz传输是这样的,前9帧,每帧传44个sample, 第10帧传45个sample.
zhs2007 发表于 2019-9-18 13:34 来自手机 | 显示全部楼层
楼上正解!
jinxuan97 发表于 2019-9-19 09:24 | 显示全部楼层
USB 的Sample Rate控制是个太关键的问题了, 搞定他你就是Expert!
zhs2007 发表于 2019-9-20 10:30 来自手机 | 显示全部楼层
确实!电脑采样率和声卡采样率会有ppm级别的误差,如果不做处理,累积一段时间会有噪声。专业声卡一定要做采样率匹配微调。这里面道道很多。
 楼主| xuqingli123 发表于 2019-10-8 09:41 | 显示全部楼层
394645065 发表于 2019-9-17 22:37
44.1kHz传输是这样的,前9帧,每帧传44个sample, 第10帧传45个sample.

你好,有44.1K播放的程序吗,能否给一份,我按照这个意思改了两天还是没有改好。
jinxuan97 发表于 2019-10-9 11:42 | 显示全部楼层
xuqingli123 发表于 2019-10-8 09:41
你好,有44.1K播放的程序吗,能否给一份,我按照这个意思改了两天还是没有改好。 ...

        if ( (counter%10) == 0)        //for 44.1kHz sample rate, 44100 x 2 Channel x 2 Bytes /1000 ms = 176.4 Bytes
        {
                counter = 0;
                len = 180; //0xb4
        }
        else
        {        len = 176; //0xb0
        }
 楼主| xuqingli123 发表于 2019-10-15 08:40 | 显示全部楼层
本帖最后由 xuqingli123 于 2019-10-15 08:43 编辑
jinxuan97 发表于 2019-10-9 11:42
if ( (counter%10) == 0)        //for 44.1kHz sample rate, 44100 x 2 Channel x 2 Bytes /1000 ms = 176.4 B ...

这样修改了数据长度,DMA每次接收或者发送的长度也要跟着这个长度修改吗?我是跟着修改的,是不行的,但是如果不修改,DMA每次传输的数据长度还是176,和没修改一样的啊             if(a<9)
                {
                        /* Prepare Out endpoint to receive next audio packet */
                        DCD_EP_PrepareRx(pdev,
                                                      AUDIO_OUT_EP,
                                                       (uint8_t*)(IsocOutWrPtr),
                                                        176);
                        a++;
                }
                else
                {
                        /* Prepare Out endpoint to receive next audio packet */
                        DCD_EP_PrepareRx(pdev,
                                                     AUDIO_OUT_EP,
                                                      (uint8_t*)(IsocOutWrPtr),
                                                      180);
                        a=0;
                }


 楼主| xuqingli123 发表于 2020-4-8 16:54 | 显示全部楼层
jinxuan97 发表于 2019-10-9 11:42
if ( (counter%10) == 0)        //for 44.1kHz sample rate, 44100 x 2 Channel x 2 Bytes /1000 ms = 176.4 B ...

你好,这样接收电脑上面的数据,然后对应的播放是怎样的,现在发现我设置的播放是不正确的。求指教,我现在是把接收到的数据存在一个BUFF里面,然后每次从BUFF里面取出指定长度的数据,进行播放。但是在播放的过程中存在哒哒的声音,以为是数据重叠,把BUFF继续改大,哒哒声时间间隔还是没有改变,找不到原因。问一下,你是怎么播放的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

174

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部