showroomAudioInterface
Pequeno guia de como imprementar essa interface de áudio ao software que vai rodar durante a experiência do shoowroom.
Basicamente, teremos um programa rodando em paralelo à Unity que deve disparar os arquivos de áudios com as falas do personagem enquanto ajusta o volume de cada uma das caixas satélites baseado na posição do personagem na tela.
Passo-a-passo pra implementação.
-
O software que será a interface de áudio é uma aplicação desenvolvida em Pure Data (essa solução normalmente é chamada de patch). O puredata é um programa para síntese, análise e manipulação de som em tempo real, ou seja, não há diferença no seu funcionamente entre estar desenvolvendo e estar executando. O primeiro passo então é baixar o Pure Data que é open source e pode ser baixado para várias platamosmas nesse link aqui.
-
Antes mesmo de abrirmos o patch que será a interface de áudio é preciso fazer algumas configurações. São duas:
- Garantir que a checkbox DSP esteja ligada;
- Abrir as opções 'Audio Settings' (Media > Audio Settings) e no campo Sample rate: colocar o valor 48000. Isso porque os arquivos foram fechados nesse taxa de amostragem. IMPORTANTE! Nessa jenela é preciso apertar o botão Save All Settings. Isso garante que da próxima ves que o Pure Data for aberto ele mantenha essa configuração.
- O patch criado apresenta duas alternativas para distribuição de áudio. Uma delas necessita da instalação de dois externals: zexy e else. Para isso é preciso ir na opção 'Procurar por externals'(Ajuda > Procurar por externals), realizar a busca por ambos e instalar as versões mais recentes.
Após a instalação de ambos os externals, é recomendável adicionar ambos à inicialização do Pure Data na opção 'Inicialização'(Arquivo > Preferências > Inicialização). Deve-se adicionar um external por vez, aplicar as alterações, e reiniciar o Pure Data antes de abrir o arquivo do showroom.
- Agora basta abrir o arquivo "showroomAudioInterface.pd" no Pure Data, o que pode ser feito em File > Open. IMPORTANTE! É necessário que no mesmo arquivo do patch estaja a pasta 'audios' com todos os arquivos .wav dentro. E é isso! Essa janela já é patch funcional, pronto para receber comandos e controlar volume da saída de som nas caixas. No Pure Data a programação é feita criando objetos (que são essas caixinhas) e controlando o fluxo com conexões (que são essas linhas). Parece confuso, mas não será necessário mexer em nada aqui!
Esse programa fica constantemente "escutando" mensagens osc de 3 portas, cada uma com um propósito:
- Porta 9990, recebe comandos de reproduzir e interromper os áudios com as falas;
- Porta 9992, recebe a posição do personagem durante a experiência;
- Porta 9994, recebe informações para calibragem, isso é, informar ao programa onde as caixas de som estão posicionadas.
Adicionalmente o programa ainda manda um feedback assim que termina a execução de um arquivo:
- Porta 9991, envia avisos quando encerra a execução de algum arquivo.
Aqui um detalhamento de como interagir em cada uma dessas portas:
Porta 9990
Nessa porta espera-se receber comandos para tocar os áudios. Os comandos possíveis são /sr_17/play
para tocar um arquivo e /sr_17/stop
para se interromper a reprodução. Nesse mesmo canal ainda é possível enviar o comando /stop_all
para se interromper qualquer áudio que estiver rodando. Atente que nesse caso o trecho _"17" atua especificamente no arquivo de áudio "SHOWROOM_17.wav". É possível saber o código específico de cada arquivo de áudio na tabela a seguir:
Arquivo | Comando OSC | Início da fala |
---|---|---|
SHOWROOM_17.wav | /sr_17 |
"Oi de novo! Fica muito mais legal..." |
SHOWROOM_18.wav | /sr_18 |
"Sabia que ali no fundo tem até um estúdio de som?" |
SHOWROOM_18_2.wav | /sr_18_2 |
"Sabia que ali no fundo a gente vai ter um estúdio de som?" |
SHOWROOM_20.wav | /sr_20 |
"Ah! E você sabia que uma das maiores..." |
SHOWROOM_21.wav | /sr_21 |
"Na tela do meio, a gente tem o log e as transcrições..." |
SHOWROOM_22.wav | /sr_22 |
"E ali na última tela tá a jornada que você tá percorrendo..." |
SHOWROOM_23.wav | /sr_23 |
"Agora, deixa eu te contar um pouco mais sobre mim." |
SHOWROOM_24.wav | /sr_24 |
"Me mostra o que você tá a fim de conhecer agora..." |
SHOWROOM_25.wav | /sr_25 |
"Hummmm....não entendi." |
SHOWROOM_26.wav | /sr_26 |
"O bot? Boa escolha!" |
SHOWROOM_27.wav | /sr_27 |
"O OWI? Legal! Você vai adorar conhecer a Duda." |
SHOWROOM_28.wav | /sr_28 |
"Poxa, eu queria mesmo te mostrar esse outro canal." |
SHOWROOM_29.wav | /sr_29 |
"Legal! Vou te mandar uma mensagem de novo." |
SHOWROOM_30.wav | /sr_30 |
"Hum....pelo jeito não vai dar..." |
SHOWROOM_31.wav | /sr_31 |
"Fiquei muito feliz de passar..." |
SHOWROOM_31_2.wav | /sr_31_2 |
"Fiquei muito feliz de passar..." |
SHOWROOM_31_3.wav | /sr_31_3 |
"Fiquei muito feliz de passar..." |
SHOWROOM_32.wav | /sr_32 |
"Ô, Duda, representa a gente direitinho, ok?" |
SHOWROOM_33.wav | /sr_33 |
"Deixa comigo, Duda!" |
SHOWROOM_34.wav | /sr_34 |
"Pra terminar, vou te contar uma ótima notícia." |
Porta 9992
Essa porta deve receber constantemente a posição relativa do personagem, ou seja, deve ser atualizada dentro do loop da aplicação. Essa coordenada deve estar mapeada no espectro entre -100 e 100, onde -100 é a posição mais a esquerda em que o personagem pode aparecer na tela e 100 é a mais a direita.
O envio deser ser feito atravez do comando /charPos/xx
, onde ao invés de 'xx' deve haver o numero da posição do personagem mapeada.
Porta 9994
A configuração inicial desse patch considera as caixas satélites dispostas de forma equidistante onde a primeira está alinhada com o canto esquerdo da tela e a última, o canto direito. Mas caso as caixas estejam dispostas de outra forma, ou de maneira irregular, é possivel "calibrar" a posição das caixas.
Para isso foi feita a aplicação calibrar.exe onde o código fonte e arquivo executável se encontram na pasta p5Calibrar. Com esse programinha rodando é só seguir as instruções exibidas na tela.