Como usar o ponto de extremidade síncrono do dispositivo de áudio USB?

3

Eu quero tocar o mesmo som em vários dispositivos de áudio USB em sincronia. A última vez que tentei algo assim foi em 2001 e foi bem-sucedida - e o par de Griffin iMics que usei naquela época ainda funciona nesse uso, mas eu quero mais canais agora.

Estou tendo problemas para fazer isso funcionar com dispositivos de áudio USB mais recentes. Eu tenho alguns dispositivos com chips C-Media, que criam muitos estalos e pops e saem de sincronia em relação aos iMics; outro dispositivo com um chip TI não crepita, mas ainda está fora de sincronia.

De acordo com minha compreensão de como o áudio USB funciona, os problemas de sincronização seriam consistentes com os iMics usando o clock síncrono e os outros usando o relógio assíncrono.

Agora, quando eu faço lsusb -v , vejo que cada um dos meus dispositivos expõe vários pontos de extremidade, alguns síncronos, outros assíncronos e outros adaptativos. Então eu preciso de alguma maneira para instruir o driver de áudio para usar o endpoint síncrono. É aí que estou preso.

  • Como posso saber quais endpoints estão sendo usados? lsof relatórios a /dev/snd/pcmXXXXX estão em uso, mas não tenho certeza se isso corresponde a algum endpoint específico. Posso ver informações sobre endpoints em /sys/bus/usb , mas não sei como saber se algum dos endpoints está ativo.
  • Como posso alterar qual endpoint é usado, configurando o ALSA ou alguma outra biblioteca? Eu tentei olhar através das fontes de ALSA mas não encontrei nenhuma peça que diga como ele seleciona qual endpoint usar.
por crowding 10.06.2014 / 08:19

1 resposta

3

A especificação USB define três modos de sincronização para pontos de extremidade isócrono: síncrono, assíncrono e adaptável.

Ninguém usa síncrono. Para pontos de extremidade de reprodução, adaptativo significa que o dispositivo funciona exatamente na velocidade em que o PC decide enviar os dados; Assíncrono significa que o dispositivo informa ao PC a rapidez com que deve enviar dados (isso é feito através de um segundo ponto final na outra direção).

Um dispositivo assíncrono geralmente possui três terminais isócronos: um ponto de extremidade de saída assíncrona para amostras de reprodução, um ponto de extremidade de entrada para dados de feedback de freqüência de reprodução e um ponto de extremidade de entrada assíncrona para amostras de captura. Ele também pode ter pontos de extremidade de interrupção e de volume para controle de mixer, MIDI e material específico do fornecedor.

O driver de áudio USB prefere um endpoint adaptável em um endpoint assíncrono, se possível. (Mas eu não sei de nenhum dispositivo atual que realmente tenha diferentes tipos de terminal para a mesma saída; os chips C-Media CM66xx certamente não possuem).

Portanto, se você quiser executar vários dispositivos na mesma velocidade, não poderá afetar nada com a configuração do software; você deve usar dispositivos que você sabe apoiar o modo adaptável.

    
por 10.06.2014 / 09:47