Alterar a taxa de amostragem no ALSA

Alterar a taxa de amostragem no ALSA

Sou um audiófilo de informática, usei Windows (com ASIO4ALL) e OSX para áudio. Agora estou fazendo do Ubuntu 13 meu áudio HTPC/Stereo. Para começar, desativei o áudio do Pulse e usei o GooMusicplayer com ALSA.

Meu DAC é capaz de 24 bits 96 kHz. Não consigo encontrar uma configuração para o ALSA definir a taxa de amostragem de saída. Como posso configurá-lo?

Responder1

Por padrão, o Alsa usa a mesma taxa de amostragem e formato da fonte. No entanto, é possível forçar a taxa de amostragem para cima (ou para baixo).

Aqui está uma maneira de fazer isso. (em/etc/asound.confou~/.asoundrc)

pcm.device{
        format S24_LE
        rate 96000
        type hw
        card 0
        device 0
}

Em seguida, basta tornar esse pcm escravo de outro, como o seu pcm padrão (estéreo) (aviso: o formato de 24 bits não funcionará a menos que você tenha uma placa compatível, normalmente uso S32_LE, que funciona na maioria das placas).

pcm.!default{
    type plug
    slave.pcm "device"
}

o acima, entretanto, funcionará apenas para fontes estéreo (então, se você tocar em uma fonte 5.1 que por padrão usará surround51 pcm, as coisas ficarão um pouco mais complicadas)

A única maneira que conheço (e uso pessoalmente) sobre como forçar a taxa de amostragem de fontes não estéreo é retirar partes deeste asound.conf/asoundrc(link morto) e modificando-os. (Nota: eu não escrevi esse arquivo sozinho)

(Você pode encontrar meuasound.confnesta questão e apenas copie-a diretamente, em vez de passar pelo incômodo de modificá-la manualmente abaixo)

Primeiro copie o pcm "dmixed" e modifique sua seção de hardware para a taxa de amostragem e formato desejados.

Em seguida, copie os pcms !default, surround40 e surround51 como estão. Isso irá efetivamente misturar toda a saída e converter a taxa de amostragem de todas as fontes 2.0, 4.0 e 5.1 para a taxa de amostragem definida no dmixed pcm.

Nesse arquivo de configuração você também pode achar o pcm "upmix20_51" interessante, pois é uma maneira eficaz de mixar fontes 2.0 para 5.1, duplicando seletivamente os sons para os outros canais. Se você quiser usá-lo você terá que mudar o tipo dele de "plug" para "route" e então defini-lo como escravo do pcm padrão.

pcm.!default{
    type plug
    slave.pcm "upmix20_51"
}

Como o "surround51" que aquele pcm usa usa "dmixed" como escravo, a taxa de amostragem forçada também se aplicará a este pcm.

Infelizmente, do jeito que as coisas estão agora, as fontes mono só serão emitidas pelo alto-falante esquerdo, mas isso dificilmente é um problema, já que as fontes de som mono são raras nesses pais. O exemplo que acabei de dar seria exatamente como eu tenho o meu próprioasound.confconfigurado, aproveite se você tiver uma configuração de alto-falante 5.1 e quiser forçar taxas de amostragem de 96 kHz.

Em teoria, eu pensaria que forçar a taxa de amostragem não resultará em nada para você (pois é um pensamento absurdo que isso melhoraria a qualidade do áudio de sua fonte, que tinha uma taxa de amostragem mais baixa), como tal, você será um é muito melhor configurar o aplicativo para usar saída de 96 kHz.

Mas para mim tive alguns problemas com sons crepitantes (em jogos específicos, como Xcom: Enemy Unknown) se não forçasse a frequência de 96 kHz ou 44,1 kHz. Visto que não perco nada ao forçar 96 kHz (não aumenta nem diminui a qualidade das fontes de 44,1/48 khz), foi uma solução perfeita.

Responder2

A taxa de amostragem do dispositivo é por padrão aquela que o aplicativo configurou para ele, ou seja, a taxa de amostragem do arquivo original.

Responder3

As outras respostas estão um tanto corretas.

A maioria das placas de som não possui multicanal por padrão. Se você possui uma daquelas placas que possui mixer multicanal - provavelmente não precisa ler aqui. ALSA faz mixagem de vários sons em software.

De um modo geral, são possíveis 2 opções:

  1. Ignore a saída do software de mixagem e você poderá desfrutar de uma gama maior de som (taxa de amostragem e taxa de bits mais altas, por exemplo, canalizando para 6 ou mais alto-falantes).

    Apenas um programa pode funcionar com placa de som!

  2. Habilite a mixagem de software e perca alguma qualidade que você provavelmente não notará de qualquer maneira. (Asus Xonair DX com Sennheiser HD598 testado, não notou nenhuma diferença, usou flacs de taxa de amostragem de 6 canais de 96 khz e 2 canais de 192 khz).

    Mais de um programa pode funcionar dessa maneira! Não sou um audiófilo, veja bem, ainda não.

A segunda opção é habilitada por padrão se o seu hardware não suportar a mixagem de vários fluxos ao mesmo tempo.

OBSERVAÇÃO:Há também uma terceira opção. ALSA pode ser configurado com reamostragem em software, mas pela minha experiência, embora seja possível ajustar todos os aplicativos para serem reamostrados para a taxa de amostragem e taxa de bits máximas mais altas - ele introduziu um atraso perceptível em jogos FPS, o que NÃO É OK para um jogador. (mais ou menos um terço de segundo, quando atirei as balas da arma, o que me irritou muito).

Esteja ciente de que a terceira opção provavelmente não é prática por alguns motivos:

  1. Não testei bem, mas acho que alguns aplicativos ainda podem ter problemas.
  2. A maioria das coleções de áudio tem taxa de amostragem de 44,1/44 khz com taxa de bits de 16, a menos que você use muito FLAC, mas mesmo assim, o FLAC precisa ter uma taxa de amostragem mais alta.
  3. up-sampling NÃO oferece melhor qualidade de som (teoricamente fornece, mas se você usar fones de ouvido baratos - você não notará, tenho 99% de certeza).
  4. o atraso nos jogos é muito real, a menos que eu tenha feito algo errado no meu .asoundrcarquivo.

Para tornar as coisas mais confusas, pode ficar ainda pior no bom sentido. Você pode criar "dispositivos" com configurações diferentes (canais/taxa/taxa de amostragem/saída física e configuração de entrada). E alguns aplicativos podem usar dispositivos criados manualmente, outros não. Isso me irrita muito.

Os mais notórios e problemáticos: flash player.

Esta resposta é verdadeira para quem não usa fones de ouvido conectados por USB. Eles têm suas próprias placas de som integradas e eu tenho conhecimento limitado sobre isso, provavelmente é mais verdadeiro para aqueles com placas de som integradas na placa-mãe. Ainda pode ser aplicado a fones de ouvido USB, mas considere tudo com cautela. Eu estou supondo que provavelmente cerca de 10% de todas as placas de som produzidas estariam usando mixagem de hardware de qualquer maneira, já que o hardware não teria essa opção. A saída óptica é uma grande exceção. A saída óptica AFAIK não precisa de mixer. A desmultiplexação está acontecendo no "receptor", onde é feita no hardware. Não acredite apenas na minha palavra.

Responder4

Obrigado pela informação acima @Cestarian. Isso deve me ajudar a fazer com que a interface de áudio USB semi-profissional atinja a taxa de amostragem padronizada com minha gravação (96K). Acho muito esclarecedor configurar aquela máquina para o estúdio.

Para te ajudar, já que você me ajudou, vou responder a estas perguntas:

"Em teoria, eu pensaria que forçar a taxa de amostragem não resultará em nada para você (pois é um pensamento absurdo que isso melhoraria a qualidade do áudio de sua fonte, que tinha uma taxa de amostragem mais baixa), como tal, você será é muito melhor configurar o aplicativo para usar saída de 96 kHz.

Mas para mim tive alguns problemas com sons crepitantes (em jogos específicos, como Xcom: Enemy Unknown) se não forçasse a frequência de 96 kHz ou 44,1 kHz. Visto que não perco nada ao forçar 96 kHz (não aumenta nem diminui a qualidade das fontes de 44,1/48 khz), foi uma solução perfeita."

Existe uma aplicação em que você pegaria um sinal digital e o converteria em um multiplicador maior que o original: redução de jitter digital. Seria interessante descobrir a precisão de um computador em relação a um conversor de taxa de amostragem externo usado em estúdios de masterização para esse fim.

no segundo: imagem que deve haver um quadro de processamento que deve acontecer quando a taxa de amostragem é indefinida. Logicamente, ele teria que detectar os dados recebidos do disco rígido e depois formatá-los (se não estiver correto) no fluxo de dados, em vez de apenas enviá-los para o fluxo de dados. O som usa processamento em tempo real e não CPU. Mas como você também está amostrando, você pode corrigir o jitter da taxa de amostragem das fontes no arquivo de som do jogo.

informação relacionada