Vivace

De Pontão Nós Digitais
Revisão de 19h33min de 17 de fevereiro de 2013 por VilsonVieira (discussão | contribs) (Nova página: % % Hello! Here's how this works: % % You edit the source code here on the left, and the preview on the % right shows you the result within a few seconds. % % Bookmark this page and sh...)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegaçãoIr para pesquisar

% % Hello! Here's how this works: % % You edit the source code here on the left, and the preview on the % right shows you the result within a few seconds. % % Bookmark this page and share the URL with your co-authors. They can % edit at the same time! % % You can upload figures, bibliographies, custom classes and % styles using the files menu. % % If you're new to LaTeX, the wikibook at % http://en.wikibooks.org/wiki/LaTeX % is a great place to start, and there are some examples in this % document, too. % % We're still in beta. Please leave some feedback using the link at % the top left of this page. Enjoy! % \documentclass[12pt]{article}

\usepackage[english]{babel} \usepackage[utf8x]{inputenc} \usepackage{amsmath} \usepackage{graphicx}

\title{Mixagem colaborativa na Web} \author{ labmacambira }

\begin{document} \maketitle

\begin{abstract} Tecnologias Web têm se apresentado como um catalisador para o uso criativo de mídias na Internet. Embora essas tecnologias tenham sido historicamente usadas em aplicações visuais, há recentemente uma preocupação em desenvolver ferramentas -- como a Web Audio API -- para o processamento de áudio em navegadores Web. Procurando aproveitar e contribuir para o desenvolvimento destas tecnologias agregando valor social e artístico, desenvolvemos Vivace, uma linguagem e ambiente de performance áudiovisual colaborativa, onde intérpretes trocam experiências de \emph{live coding} para composição, edição e mixagem de materiais visuais e sonoros. Apresentamos neste artigo algumas implicações deste ambiente no campo da produção musical, bem como as características técnicas no que tange as tecnologias Web para áudio e por fim reflexões de seu uso desenvolvimentos futuros. \end{abstract}

\section*{}

O termo \emph{live coding}~\cite{nilson2007live,collins2003live} remete a ambientes de performance artística, onde intérpretes com computadores improvisam códigos de programação, criando sínteses sonoras e gráficas, edição de arquivos de áudio ou vídeo, e diferentes estratégias para cativar um público\footnote{Em geral algumas dessas estratégias compreendem a projeção da tela do computador em que se improvisa e o uso de dispositivos sensíveis a dados do ambiente ou atividades humanas ou como se mexer, falar, tocar; no entanto nosso espaço é insuficiente para tratar das diferentes expressões no \emph{live coding}, porém vale ressaltar que seu maior objetivo é incentivar a desmistificação do código, especialmente quando levado à expressão artística, tornando o artista e sua arte exposta ao público.}

No Brasil, a prática de \emph{live coding} vem sendo difundida apenas nos últimos anos. Em Novembro de 2011, como projeto selecionado para o Festival Contato, o trio \emph{FooBarBaz} fez sua primeira apresentação onde três \emph{live coders} executavam: 1) manipulação de listas numéricas em um arquivo de texto, criando operações musicais como retrogradação e transposição; 2) manipulação de materiais sonoros temporalmente largos, contribuindo para grandes arcos expressivos; 3) mixagem dos sinais de áudio através de gestos manuais, captados por uma câmera e interpretados como controles de estereofonia. Ao que sabemos, essa também foi a primeira apresentação de \emph{live coding} em nosso país, para um grande público.

Baseados nas experiências citadas, o LabMacambira.sf.net\footnote{Grupo de desenvolvedores de software livre, onde o trio FooBarBaz foi embrionado.} criou Vivace: uma linguagem e ambiente baseado em tecnologias Web dedicada a performance colaborativa no campo do áudiovisual. Neste artigo faremos uma breve reflexão dos processos envolvidos na atividade de edição e mixagens tradicionais, comparados com o uso das tecnologias \emph{Web} para edição e mixagem, e uma proposta colaborativa destas atividades no Vivace, bem como suas características técnicas.

\section{EDIÇÃO E MIXAGEM: UMA REVISÃO DE CONCEITOS E FERRAMENTAS}

Os campos de produção musical e visual compartilham destes termos, onde cada um possui seus conceitos, ferramentas e técnicas para desenvolver obras artísticas. Neste trabalho trataremos daqueles que fazem parte do campo de produção musical, e suas implicações com o uso do aplicativo desenvolvido.

\begin{figure}[htpb]

 \begin{center}
   \includegraphics[scale=.4]{mix_chain.png}
   \caption{Etapas do processo de produção musical (retirado de IZHAKI)}
   \label{figure:mix_chain}
 \end{center}

\end{figure}

Segundo \cite{izhaki2008mix}, edição é uma etapa antes do processo de mixagem, onde podemos subdividir em duas categorias:

\begin{itemize}

   \item seletiva: processo de seleção dos materiais sonoros mais adequados, bem como o processo de combinar os materiais escolhidos em um \emph{take} mestre.
   \item corretiva: processo onde se corrige partes defeituosas dos materiais escolhidos, que podem ter causas diversas: má performance do intérprete, captação inadequada, entre outros.

\end{itemize}


Sobre mixagem, \cite{izhaki2008mix} apresenta duas definições:

\begin{itemize}

   \item Uma etapa do processo de produção musical no qual os materiais - amostrados ou sintetizados - são balanceados, tratados e combinados entre si em um formato multicanal, mais comumente em estereo de dois canais.
   \item Uma apresentação de emoções, idéias criativas e performance 

\end{itemize}

Em produções independentes, essas atividades podem ser de responsabilidade de uma única pessoa. Em grandes estúdios geralmente se dividem entre o compositor, arranjador, produtor musical e engenheiros de som. De maneira bastante superficial, os dois últimos utilizarão o computador, a mesa de som e monitores como ferramentas para gravação, edição, mixagem e materização dos materiais musicais.

No computador podemos encontrar diferentes \emph{softwares}: \emph{workstations} (como ProTools, Logic, Nuendo), que pode conter em si mesma todas as ferramentas, bem como \emph{plugins} para síntese e/ou tratamento dos materiais sonoros.

Durante o \emph{live-coding}, buscamos agrupar as atividades de \emph{composição}, \emph{edição} e \emph{mixagem}\footnote{Essas três atividades agrupadas é algo que experenciamos durante o \emph{live-coding}: o material escrito (código-fonte) é interpretado pelo computador e logo em seguida transformado em material sonoro por processamento de áudio digital (DSP)} e compartilhar com intérpretes/espectadores. Os processos acima deixam de ser separados, a edição deixa de ser apenas seletiva ou corretiva, a mixagem deixa de ser apenas uma maneira de balançear os materiais; o \emph{liv Agrupamos as duas primeiras em um processo de edição de arquivos de texto, enquanto que separamos a terceira em uma interface mais gestual e orgânica.


\section{VIVACE}

"Uma da mais influenciáveis invenções do homem - a \emph{Internet} - é talvez o maior catalisador da atividade musical" \cite{izhaki2008mix}. Esta afirmação - publicada em 2008 - engloba tecnologias como as que permitiram o compartilhamento de arquivos e \emph{streaming} de dados, abrindo perspectivas para produção e divulgação de músicas. Por outro lado não existiam ainda tecnologias \emph{web} que permitissem que a própria produção musical fosse realizada na \emph{Internet}. Em Vivace, viabilizamos um espaço virtual compartilhado como meio para edição e mixagem em performances artísticas.

Neste ambiente pressupomos a manipulação de \emph{vozes}, que são representações de amostras em formato \emph{.wav} e/ou \emph{.mp4}. Com uso das tecnologias \emph{Web Audio API, share.js e dat.GUI}, desenvolvemos um sistema para edição e mixagem colaborativa:

\begin{figure}[htpb]

 \begin{center}
   \includegraphics[scale=.4]{fig_vivace.png}
   \caption{O ambiente vivace}
   \label{fig:vivace}
 \end{center}

\end{figure}

A figura acima apresenta:

\begin{itemize}

   \item Edição de um código-fonte (que chamaremos de vivace-lang), responsável pela manipulação dos materiais sonoros.
   \item Um mixer compactado com um controle básico de estereofonia (ganho, panoramização, equalizador de 3 bandas).

\end{itemize}

Abaixo, temos uma definição das vozes em código javascript. Para cada voz um nome, o arquivo a ser utilizado, e seu tipo. Para este artigo, trataremos apenas o que concerne ao processamento dos sinais de áudio.

\begin{verbatim} Vivace.environment = [

       {name: 'bass3', fileName: 'bass.wav', type: 'audio'},
       {name: 'beat2', fileName: 'dj.wav', type: 'audio'},
       {name: 'clap1', fileName: 'clap.wav', type: 'audio'}
       {name: 'eyes', fileName: 'eyes.mp4', type: 'video'}

]

  1. Das variáveis acima,
  2. colocaremos aqui as ativa pelo código

Vivace.voices = {} \end{verbatim}

\subsection{VIVACE-LANG}

Vivace-lang é uma linguagem de domínio específico, parte do ambiente Vivace. A criação de uma nova linguagem proporciona o uso de construções sintáticas flexíveis que permitem compor, editar e mixar as vozes de maneira simples e mais familiar a músicos e até mesmo pessoas sem treinamento musical ou computacional. Essa liberdade em se ter uma linguagem que atenda à necessidades técnicas e artísticas permite uma maior flexibilidade de improvisação. E a improvisação, por conseguinte, encontra lugar comum nas práticas de \emph{live coding}. Ter uma linguagem de sintaxe simples, com poucas regras e comandos, diminuem a ocorrência de erros durante a sessão de \emph{live coding}.

\subsection{EDIÇÃO COM VIVACE-LANG}

Durante a edição do código vivace-lang, realizamos operações comuns na prática de composição musical (reverter, inverter, transpor), aplicadas aos \emph{frames} das amostras de áudio \cite{fabbri2013}:

"Seja a sequência T{i} = \{t1 \dots tN\} um conjunto ordenado de amostras reais separadas (...) uma [amostra sonora] de duração delta se apresenta como uma sequência de t amostras

https://ubuntuone.com/2GUARZyGf8wDCqt5HhidEx Equação 2.1

No Vivace caracterizamos a essas amostras digitais, propriedades de notas musicais. Canonicamente, as notas possuem ao menos duração, volume, altura e timbre.(LACERDA in FABBRI, p.35); adicionamos também um processo de síntese granular para cada voz, onde controlamos durações de grãos. Todas propriedades (duração, posição da amostra, tamanho dos grãos) são passíveis de serem tratadas quantitativamente (ROEDERER in FABBRI).

Através do vivace-lang, o usuário pode definir para as propriedades um conjunto de valores numéricos de inteiros e/ou decimais:

\begin{itemize}

   \item \emph{pos}: posições da amostra (no buffer da voz) a serem tocadas, em segundos.
   \item \emph{dur}: durações da amostra selecionada na voz, em segundos.
   \item \emph{gdur}: durações de cada grão sonoro, da voz, em segundos.

\end{itemize}

Esses valores podem ser \emph{literais}, \emph{operados} ou \emph{gerados}:

\begin{verbatim} foo.pos = [1, 2, 3] foo.pos = [.1, .2, .3] reverse foo.pos = [1, 2, 3] inverse foo.pos = [1, 2, 3] transpose +2 foo.dur = [2, 3, 4] foo.dur = [2, 3, 4] reverse foo.dur = [2, 3, 4] inverse foo.dur = [2, 3, 4] transpose +1

  1. podemos gerar esses valores

foo.pos = [1/i+1 for i in [1, 2, 3]]

  1. ou combina-los com as operações

foo.dur = [1/i+1 for i in [1, 2, 3]] reverse \end{verbatim}

\subsection{MIXAGEM COM VIVACE-LANG}

Definimos algumas propriedades para mixagem no vivace-lang:

\begin{itemize}

   \item \emph{amp}: ganho da voz;
   \item \emph{pan}: panoramização da voz em um sistema estereofônico de dois canais;
   \item \emph{high, medium, low}: um equalizador de três bandas: altos, mfiltros do tipo \emph{Biquad}; 
   \item \emph{reverb}: uma máquina de convolução para gerar \emph{reverbs} artificiais

\end{itemize}

Diferente das propriedades anteriores, estas requerem simples valores (no caso de \emph{amp} e \emph{pan}) e um dicionário (um conjunto de dados referentes a propriedades de um filtro):

\begin{verbatim} foo.amp = 1 bar.amp = 0.5 baz.amp = 0.25

foo.pan = -1 #Esquerdo bar.pan = 0 #centro baz.pan = 1 #direito

foo.high = (freq: 2000, Q: 0.5, amp: 0.75) bar.medium = (freq: 800, Q: 1, amp: 0.4) baz.low = (freq: 200, Q: 0.5, amp: 0.67) \end{verbatim}

\subsection{MIXAGEM COM dat.GUI}

Compreendemos também que este ambiente pode não ser totalmente familiar a músicos ou engnehieor de som, e utilizar apenas o vivace-lang tornaria a experiência menos frutífera. Para isso, com uso da biblioteca \emph{dat.GUI}\cite{datGUI12}, construímos uma pequena interface gráfica que lembra uma mesa de som, constituída de \emph{sliders}. As mesmas propriedades comentadas no item acima se encontram na interface.

\section{Web Audio API}

Antes da API Web Audio, a única forma de manipular áudio era usando plugins (como \emph{Flash}). É Escrita em código nativo (C++ e Assembly) para garantir performance máxima no processamento de áudio em navegadores \emph{web}\footnote{Atualmente, poucos navegadores tem suporte completo e utilizamos aquele distribuido pelos desenvolvedores \emph{webkit} (i.e. \emph{Safari} e \emph{Chromium})}. É baseada no paradigma de \emph{grafos de unidades de áudio}, onde se especifica uma coleção de nós e rotinas de conexão e desconexão entre eles (figura \ref{figure:graph}). AtualEntre algumas de nossas motivações com Web Audio API, estão a síntese, ganho, equalização, expansão multicanal (estereofonia de 2.0 e 5.1 canais) e efeitos (reverb):

\begin{figure}[htpb]

 \begin{center}
   \includegraphics[scale=.5]{fig_chain.png}
   \caption{Grafo de unidades de áudio e roteamento entre elas no Vivace}
   \label{figure:graph}
 \end{center}

\end{figure}

\subsection{WEB AUDIO API E VIVACE}

Na figura \ref{figure:graph} temos representado uma corrente de nós para cada voz no Vivace. A estratégia utilizada para rotear os nós, foi criar uma definição de um \emph{mixer} (com as propriedades \emph{gain, pan, high, medium, low}) e aplicá-la através de uma simples sintaxe de grafos:

\begin{verbatim}

  1. O CONTEXTO DE AUDIO

Vivace.audiocontext = new webkitAudioContext()

  1. UMA DEFINIÇÃO DE UM MIXER

_mixerDef = () ->

       this.pan = 0                            
       this.gain = Math.sqrt(2)           
       this.high = 2000 
       this.Q_high = 0.5
       this.gain_high = 0
       this.medium = 2000
       this.Q_medium = 0.5
       this.gain_medium = 0
       this.low = 2000
       this.Q_low = 0.5
       this.gain_low = 0
  1. PROCESSO DE ROTEAMENTO (FEITO PARA CADA VOZ)
  2. PODEMOS ROTEAR NA FORMA:

method = "source=>low=>medium=>high=>gain=>pan=>destination"

router: (voicename, buffer, mxDef=_mixerDef, routingMethod=method) ->

   #get audio src
   voice = Vivace.voices[voicename]
               
   #create a src node with provided buffer
   source = voice.audionodes.src = Vivace.audiocontext.createBufferSource();
   voice.audionodes.src.buffer = buffer
   
   #to each audio parameter, create an appropriate AudioNode
   _mix = new mxDef()
   RoutingMethods.apply voice.audionodes, _mix, routingMethod

\end{verbatim}

\section{REFLEXÕES SOBRE VIVACE}

Na seção 1 apresentamos conceitos referentes as práticas de produção musical, mais especificamente edição e mixagem; mostramos também que estes processos podem ser separados entre diferentes profissionais. Cada um pode escolher entre fazer seu trabalho sozinho ou compartilhar com seus colegas. Este fazer requer diferentes técnicas e ferramentas edição e mixagem, e o computador se apresenta como

No Vivace buscamos utilizar

\begin{itemize} \item redução das atividades de configuração de \emph{software}: o usuário necessista apenas compor, editar e/ou mixar;

   \item compartilhamento dos processos de criação, edição e mixagem;
   \item com o uso do vivace-lang usuários podem elaborar pequenas formas lógicas de apresentar um material sonoro;
   \item com o uso da interface de mixagem, os usuários podem fazer pequenos ajustes no tratamento sonoro das vozes;

\end{itemize}

Entre os pontos negativos, enumeramos:

\begin{itemize}

   \item o usuário não configura os arquivos a serem usados pelas vozes
   \item falta de uma seção de ajuda, instruindo como usar o Vivace

\end{itemize}

\section{CONCLUSÕES}

Apresentamos aqui \bibliographystyle{aes} % style aes.bst \bibliography{bib} % bibliography file in bibtex format \end{document}


% adicionar no bib:

%@article{nilson2007live, % title={Live coding practice}, % author={Nilson, Click}, % journal={Proceedings of New Interfaces for Musical Expression (NIME)}, % year={2007} %}

%@article{collins2003live, % title={Live coding in laptop performance}, % author={Collins, Nick and McLean, Alex and Rohrhuber, Julian and Ward, Adrian}, % journal={Organised Sound}, % volume={8}, % number={03}, % pages={321--330}, % year={2003}, % publisher={Cambridge Univ Press} %}