B-Format para Binaural & Estéreo UHJ
Use os três scripts contidos no arquivo zip anexo para converter em lote um diretório de áudio formato B para binaural e estéreo UHJ. Requer que o SuperCollider esteja instalado com os plugins padrão e que o quark "Ctk" esteja habilitado. O script shell principal também codifica versões mp3 dos arquivos binaurais e UHJ e, se este recurso for usado (não comentado), o sistema exigirá que o "lame" esteja instalado. O script do SuperCollider usa o ATK e é adaptado diretamente dos exemplos SynthDef e NRT para ATK.
Descompacte os scripts em um diretório, edite os caminhos para corresponder à sua instalação e distribuição do Linux no arquivo renderbinauralUHJ.sh, torne este arquivo executável e execute no diretório que contém os arquivos formato B para realizar as conversões.

Criar respostas ao impulso com Aliki
O procedimento a seguir mostra como fazer respostas ao impulso (IRs) em formato B com o software Linux Aliki, de Fons Adriaensen. Um manual de usuário detalhado está disponível para o Aliki, porém o guia apresentado aqui no escuta.org tem como objetivo mostrar como produzir IRs sem a necessidade de executar o software no campo e permite o uso de gravadores de áudio portáteis como o Tascam DR-680. O procedimento foi desenvolvido através de correspondência por email com Fons. Seu utilitário "bform2ald" está incluído aqui com permissão.
Equipamentos de Campo Utilizados:
-
Zoom H4n - para reprodução de sweep senoidal
-
Core Sound Tetramic, suporte e cabeamento
-
Gravador multicanal Tascam DR-680
-
Monitor de áudio amplificado Yorkville YSM1p com cabeamento para reproduzir saída do Zoom H4n
-
Bateria de chumbo-ácido selada de 12V e unidade de recarga
-
Inversor de energia adequado para o monitor
Procedimento:
1. Lance o Aliki no diretório onde deseja criar e armazenar seus arquivos de "sessão" e subdiretórios, selecione a janela "Sweep" e crie um arquivo de sweep com estes ou outros valores:
-
Taxa: 48000
-
Fade in: 0.1
-
Frequência inicial: 20
-
Tempo de "sweep": 10
-
Frequência final: 20e3
-
Fade out: 0.03
2. Selecione "Load" para carregar a varredura no Aliki e execute uma exportação como arquivo wav de 24 bits ou tipo de arquivo de sua escolha.
3. Importe a exportação "*-F.wav" no Ardour ou outro editor de som e insira um blip de 800Hz ou outro marcador de áudio 5 segundos antes do início. Insira algum silêncio antes do blip, pois alguns reprodutores (o Zoom H4n, por exemplo) podem perder alguns milissegundos iniciais dos arquivos na reprodução. Exporte o arquivo como arquivo estéreo de 24 bits 48kHz, já que o Zoom não aceita arquivos mono.
4. Importe o arquivo para o gravador Zoom H4n para reprodução.
5. No campo, conecte a saída de linha do Zoom H4n ao Yorkville YSM1p e reproduza o arquivo, gravando com o tetramic e o Tascam DR-680. No meu primeiro teste, gravei com o medidor indicando cerca de -16dB. Poderia ter dado mais ganho ao amplificador, mas o gabinete do alto-falante estava começando a vibrar com as baixas frequências.
6. O Tascam cria 4 arquivos mono. Use o script para converter para formato A e com o Tetrafile para converter para formato B com os dados de calibração do microfone (com configuração "def").
7. Instale e use o utilitário bform2ald (veja "Download attachments" abaixo) para converter a captura em formato B para o formato de arquivo nativo "ald" do Aliki.
8. Carregue a captura de varredura "ald" no Aliki. Entre no modo de edição e clique com o botão direito para posicionar um marcador no início do blip. Use a exibição logarítmica para facilitar o posicionamento. Uma vez posicionado, clique com o botão esquerdo em "Time ref" para zerar a localização do blip, então deslize o marcador para a marca de 5 segundos e novamente clique com o botão esquerdo em "Time ref" para zerar a localização do início da captura.
9. Clique com o botão direito uma segunda vez um pouco à direita do marcador azul de início. Isso criará um segundo marcador cor de oliva, marcando o ponto em que um fade-in de cosseno elevado começando no marcador azul atingirá ganho unitário. Quando posicionado, clique com o botão esquerdo em "Trim start". Diminua o zoom e arraste os dois marcadores para o final da captura para executar um fade out da mesma forma com "Trim end". Use a visualização logarítmica para auxiliar neste processo.
10. Salve esta captura editada no diretório editado com "Save section".
11. Selecione "Cancel" e depois "Load" para recarregar a captura recém-editada no diretório editado, então selecione "Convol". Nesta janela, selecione o arquivo de varredura original usado para criar a captura no diálogo "Sweep". Digite "0" no campo "Start time" e no campo "End time" digite um número em segundos que represente o tempo de reverberação esperado mais dois ou três segundos a mais. Finalmente, selecione apply para executar a deconvolução, então execute um "Save section" para salvar a IR completa no diretório "impresp".
12. Selecione "Cancel" e "Load" para carregar o impulso recém-criado no diretório "impresp", então entre no modo de edição. O impulso pode não estar visível, então use as ferramentas de zoom e na visualização Log, identifique o primeiro pico na IR que deve aparecer logo após 0 segundos. Este pico deve representar o som direto. Embora possamos decidir não manter este pico, vamos usá-lo agora para normalizar a IR para que um envio aux pós-fader de 0 dB para o convolver reproduza a proporção correta de som direto para reverberação ao usar "tail IRs" ou IRs sem o impulso direto (veja 13 abaixo). Para normalizar, clique com o botão direito para posicionar o marcador azul no pico, então clique com o botão esquerdo em "Time-ref" para zerar o início do impulso direto e shift-clique em "Gain / Norm".
13. A IR completa criada acima no passo 12, contendo o impulso do sinal direto bem como os das primeiras reflexões e da cauda difusa, pode ser convoluída com uma fonte anecóica para posicionar essa fonte no campo sonoro. Se usada desta forma, o sinal "seco" da fonte não deve ser misturado com o sinal "molhado" ou convoluído e não haverá controle sobre o grau de reverberação.
Se, no entanto, os primeiros 10ms da IR forem silenciados (usando os marcadores azul e oliva e "Trim start" no Aliki para fazer fade in do silêncio pouco antes dos 10ms, por exemplo), o sinal anecóico pode ser posicionado no campo sonoro incluindo o sinal seco na mixagem (panoramizado por meios ambisônicos para uma posição correspondente à da fonte original na IR) e variando o ganho no sinal "molhado" ou convoluído para ajustar o nível de reverberação e reforçar a posição aparente da fonte virtual através das primeiras reflexões codificadas na IR.
Outra alternativa é silenciar os primeiros 120ms da IR para criar uma chamada "tail IR". Isso remove completamente a informação das primeiras reflexões da IR e permite que o som seja movido livremente por panoramização ambisônica. O nível de reverberação é ajustável, porém não haverá informação das primeiras reflexões para auxiliar na localização da fonte virtual pelo ouvinte ou para contribuir com a ilusão de sua "naturalidade".
Uma quarta possibilidade é usar uma tail IR em conjunto com várias IRs para diferentes localizações. Essas IRs codificando apenas primeiras reflexões, aquelas ocorrendo entre 10 e 120ms, poderiam ser escolhidas, por exemplo, para corresponder às posições de músicos específicos em um palco. O engenheiro primeiro panoramizará o sinal seco de uma fonte em uma posição particular, então misturará o sinal molhado derivado da convolução com a IR das primeiras reflexões para a localização correspondente e adicionalmente enviará um feed do sinal seco para uma tail IR global comum a todas as fontes.
Criar Arquivos de Áudio em Formato B com Core Sound Tetramic e Tascam DR-680 no Linux
O script e outras configurações detalhadas nesta página convertem arquivos mono gerados por um Tascam DR-680 com um microfone soundfield Core Sound Tetramic para arquivos wav de 4 canais em formato B. É necessário que o Tascam DR-680 esteja configurado para salvar as gravações como arquivos de som mono nos canais 1, 2, 3 e 4 e que esses números de canal correspondam às cápsulas correspondentes no Tetramic. O script também requer que os arquivos de calibração do Tetramic estejam instalados (veja abaixo) e a instalação adicional dos seguintes programas de Fons Adriaensen:
tetraproc-0.8.2.tar.bz2
jconvolver-0.9.2.tar.bz2 (inclui o utilitário necessário "makemulti")
Fons Adriaensen oferece um serviço gratuito de calibração para Tetramics que gera arquivos de calibração específicos para cada microfone baseados em dados fornecidos com o microfone na compra. Veja "TetraProc / TetraCal" e "Serviço de calibração para TetraMic da Core Sound" nesta página para mais informações.
Execute o script em um diretório contendo os arquivos mono. Altere os caminhos e nomes dos arquivos de configuração no script conforme necessário. Use o argumento de linha de comando --elf para habilitar resposta de frequência baixa estendida na saída em formato B (-3dB em 40Hz) ou nenhum para usar o roll-off padrão em 80Hz.
O script de formato B está contido no anexo "mono2bformat.zip" abaixo. Alternativamente, copie o seguinte código:
#!/bin/bash
#Converts dated mono files generated by a Tascam DR-680 with a Coresound Tetramic ambisonic microphone to B-format 4-channel wav files. Run this script in directory containing the mono files. Change paths as necessary. Use the command line argument --elf to enable extended low frequency response in the b-format output (-3dB at 40Hz) or none to use the default roll-off at 80Hz.
if [ "$1" = "--elf" ]; then
config="elf"
else
config="def"
fi
[ -d aformat ] || mkdir aformat
[ -d bformat ] || mkdir bformat
for file in *.wav
do
base=${file:0:11}
channelnumber=${file:15:1}
if [ "$channelnumber" = "1" ]; then
command="/usr/local/bin/makemulti --wav --24bit $file"
fi
if [ "$channelnumber" = "2" ]; then
command="$command $file"
fi
if [ "$channelnumber" = "3" ]; then
command="$command $file"
fi
if [ "$channelnumber" = "4" ]; then
command="$command $file $base"
suffix="a-format.wav"
command=$command$suffix
$command
aformatfile=$base$suffix
mv ./$aformatfile ./aformat
if [ "$config" = "elf" ]; then
suffix="b-format_elf.wav"
else
suffix="b-format.wav"
fi
bformatfile=$base$suffix
if [ "$config" = "elf" ]; then
/usr/local/bin/tetrafile --fuma --wav --hpf 20 /home/iain/.tetraproc/CS2293-elf.tetra aformat/$aformatfile bformat/$bformatfile
else
/usr/local/bin/tetrafile --fuma --wav --hpf 20 /home/iain/.tetraproc/CS2293-def.tetra aformat/$aformatfile bformat/$bformatfile
fi
fi
done
rm -r aformat
exit 0