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.

  1. 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.

  2. 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.

image01

image02

  1. 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.

image04

image05

image06

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.

image07

image08

  1. 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!

image03

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.