Resumo: Efeitos sonoros em tempo real têm aplicação no desenvolvimento musical e podem ser implementados por meio de algoritmos de processamento de sinais segmentados em blocos de tamanho fixo. Nesse trabalho desenvolvemos a fundamentação teórica de técnicas de processamento de áudio associadas a efeitos populares como overdrive, pitch shifting e wah-wah, sendo também feita a implementação de plugins no padrão LV2 para cada um deles. Tais efeitos fazem uso de diversas formas de representação de sinais digitais, que podem ser processados diretamente na forma de onda (domínio do tempo) ou através de seus espectros (domínio da frequência), sendo que a conversão entre essas duas representações é feita através da transformada de Fourier. Para as técnicas abordadas temos duas categorias: as técnicas não-lineares e os filtros lineares. Da primeira categoria, estudamos as técnicas de waveshaping, time stretching e pitch shifting. Para filtros lineares, apresentamos noções sobre polos e zeros, e seus reflexos em relação às componentes de frequência que são enfatizadas ou retidas nas saídas dos filtros considerados. A bibliografia selecionada conta com livros introdutórios de computação musical como Elements of Computer Music e The Theory and Technique of Electronic Music, e com o livro DAFX: Digital Audio Effects, que é mais específico sobre efeitos digitais de áudio e processamento de sinais digitais. A verificação das implementações pode ser feita por meio da comparação entre métricas de saídas geradas para entradas simples. Comparamos as métricas que são fornecidas pela bibliografia, no caso dos modelos estudados, com as que são calculadas através das saídas geradas pelos plugins.
Abaixo temos um conjunto de arquivos de áudio que exemplificam as características dos plugins implementados.
Sem o efeito:
Com o efeito:
Sem o efeito:
Com o efeito:
Sem o efeito:
Com o efeito:
Sem o efeito:
Com o efeito:
Sem o efeito:
Com o efeito (alfa menor que 1):
Com o efeito (alfa maior que 1):
Sem o efeito:
Com o efeito:
Histórico
Minha aproximação com a música começou há 9 anos, quando decidi começar a fazer aulas de guitarra. Passei pouco mais de um ano e meio fazendo o curso e quanto mais praticava mais me interessava tanto por música quanto por guitarra. Nesse meio tempo, fui sendo apresentado a diversos efeitos populares de guitarra e passei a utilizá-los tanto na prática em casa quanto em eventuais apresentações. Minha prática musical foi especialmente intensa nos períodos do ensino fundamental II e do ensino médio, quando estudava na escola Liceu Camilo Castelo Branco. Essa prática foi sendo atenuada com a chegada do vestibular, dos anos conturbados que passei fazendo cursinho e das dificuldades que tive durante a graduação. Apesar disso, essa é uma parte da minha vida que de alguma forma sempre esteve presente.
Desafios
Apesar do meu interesse por música e tecnologia, durante a graduação não consegui fazer o curso de Computação Musical. Esse fato fez o tema ser bastante desafiador no começo do trabalho, pois houve um custo razoável para me acostumar com alguns dos princípios básicos de Computação Musical. Mas essa questão foi minimizada através da leitura da bibliografia e da assistência dada pelo professor Marcelo Queiroz.
Um dos maiores desafios do trabalho se apresentou durante a implementação do efeito de pitch shifting. Esse efeito pode ser implementado com a utilização de algoritmos de compressão/expansão da duração de um arquivo de áudio. O problema é que esses algoritmos não são implementáveis em tempo real por conta das limitações no tamanho da memória, dada pela imprevisibilidade da dimensão da entrada. Depois de mais de um mês passado, e várias discussões com o meu supervisor sobre o assunto, chegamos a uma solução em que armazenamos apenas 2 blocos da entrada (o anterior e o atual) e um pedaço do final da saída anterior, usada para não gerarmos descontinuidades entre os blocos de saída.
Disciplinas relevantes para o trabalho
Do ponto de vista teórico, como não fiz o curso de Computação Musical, a disciplina mais relevante foi Física II por ter introduzido conceitos sobre ondas.
Do ponto de vista prático, podemos destacar as disciplinas de Introdução à Computação e Princípios de Desenvolvimento de Algoritmos por terem possibilitado o aprimoramento do pensamento lógico, que foi muito valioso na evolução ao longo do curso. Também podemos destacar as disciplinas de Laboratório de Programação I e II por fornecerem conhecimentos sobre alguns utilitários Linux usados durante a implementação, além de noções sobre objetos, necessárias tanto para o entendimento do padrão LV2 quanto para o desenvolvimento dos plugins.