MAC0499 - Trabalho de Formatura Supervisionado/Sistema de Acompanhamento Musical Automatizado

MAC0499 - Trabalho de Formatura Supervisionado

Sistema de Acompanhamento Musical Automatizado

Aluno: Roberto Piassi Passos Bodo
Orientador: Marcelo Gomes de Queiroz

Tema/Resumo

O trabalho proposto consiste no desenvolvimento de um sistema computacional de acompanhamento musical.

A criação desse tipo de sistema apresenta três problemas principais:

Essa abordagem foi proposta por Roger B. Dannenberg [1] em [2].

Para resolver os problemas apresentados acima, temos que considerar que o músico não irá tocar em um tempo regular e, por isso, temos que atualizar constantemente um "clock" virtual, afim de gerarmos o acompanhamento de forma correta.

Outro fato a se considerar é que o solista comete erros durante a execução da música. Assim, precisamos reconhecer esses erros e lidar com eles, de modo que o sistema se adapte e continue gerando o acompanhamento correto.

Mais um caso a ser considerado é a possibilidade do músico querer improvisar "em cima" da partitura original, improvisação essa que não deve afetar em nada o andamento da música (e consequentemente do acompanhamento gerado).

A primeira solução estudada em [2] propõe a utilização de um algoritmo de programação dinâmica, que encontra a maior subsequência comum entre a entrada do músico e a "partitura" com as notas esperadas. Nesse caso, representaremos tanto a entrada quanto a "partitura" como uma sequência de símbolos (representando notas ou eventos).

A solução acima deixa espaço para melhorias e o próprio autor [1], em parceria com Hirofumi Mukaino, apresenta um algoritmo mais robusto, encontrado em [3]. As melhorias apresentadas nesse "paper" serão consideradas na implementação do meu sistema.

A entrada do músico, inicialmente, será feita por instrumentos MIDI. A "partitura" e o acompanhamento vão ser obtidos a partir de um arquivo ".mid". A saída do sistema será uma série de eventos MIDI, que poderão ser convertidos para áudio por algum software de síntese, como o TiMidity++ [4].

Objetivos

A criação desse sistema pretende atender as necessidades de um músico solitário.

Imagine um estudante de Música que está treinando, pela primeira vez, um concerto para um instrumento solo qualquer. No início, algumas passagens são tocadas mais devagar e ficaria difícil acompanhar uma gravação de alguma orquestra. Pensando nisso, o sistema gera o acompanhamento conforme o ritmo do músico, na velocidade que ele desejar.

Podemos imaginar, também, um compositor que não tem um grupo de músicos para acompanhá-lo. Nesse caso, o sistema pode ser utilizado em um show para suprir essa falta.

Pensando nos dois casos acima, o sistema terá dois modos de execução: o de estudo e o de performance. No primeiro, todos os erros cometidos pelo usuário serão apresentados na tela. Já no segundo, esses possíveis erros serão ignorados, dando a liberdade do músico improvisar.

Atividades já realizadas

A primeira atividade realizada foi a escolha do tema. No final de 2008, entrei em contato com o prof. Marcelo Queiroz e, com ajuda dele, tive a oportunidade de conhecer melhor a área de Computação Musical. Muita informação foi obtida no livro The Computer Music Tutorial [5].

De todas as sub-áreas encontradas, escolhi a que lida com acompanhamento computadorizado e performance interativa. Para escolher, definitivamente, o tema da monografia, foi feita a leitura de alguns capítulos do livro Interactive Music Systems [6] e dos "papers" já citados no início desta página [2,3].

Com toda a literatura revisada e com o sistema já pré-definido passei para implementação do mesmo, começando pela entrada do sistema. Para isso, foi estudada a especificação de um arquivo ".mid" padrão (SMF - Standard MIDI File) e foi implementada uma biblioteca que lê esse tipo de arquivo e extrai as informações necessárias. Também foi estudado como lidar com MIDI online, em sistemas GNU/Linux, e foi criado um código que recebe eventos do controlador MIDI.

Pensando na escrita da monografia, estão sendo feitas anotações do que foi discutido em reuniões com o meu orientador e anotações sobre o desenvolvimento do código.

Cronograma de atividades

Com toda parte de entrada pronta, pretendo, até o final do mês de julho, estar com o algoritmo básico de acompanhamento implementado.

Já no segundo semestre, pretendo implementar as melhorias apresentadas em [3] e fazer uma série de testes, de preferência com mais de um usuário/músico.

A redação da monografia, seguindo a estrutura sugerida em [7], também fica para o segundo semestre.

Referências

1. Roger B. Dannenberg [http://www.cs.cmu.edu/~rbd/]

2. DANNENBERG, Roger. An On-Line Algorithm for Real-Time Accompaniment. Proceedings of the International Computer Music Conference ICMC'1985, Computer Music Association, 1985, p. 193-198.

3. DANNENBERG, Roger; MUKAINO, Hirofumi. New Techniques for Enhanced Quality of Computer Accompaniment. Proceedings of the International Computer Music Conference ICMC'1988, Computer Music Association, 1988, p. 243-249.

4. TiMidity++ [http://timidity.sourceforge.net/]

5. ROADS, Curtis. The Computer Music Tutorial. The MIT Press, 1996.

6. ROWE, Robert. Interactive Music Systems. The MIT Press, 1993.

7. http://www.ime.usp.br/~cef/mac499-09/rot-monografias.html