Inteface Gráfica para Computação Musical

5 respostas
C

Olá Pessoal!

Eu estou cursando faculdade para análise de sistemas, ainda estou no início, mas gostaria de saber se vocês conhecem algum livro na qual aborde programação voltada para a computação musical.

Vejo alguns programas com uma interface gráfica fantástica, com VUs, gráficos que se movimentam com a música, e não sei qual linguagem é mais utilizada para desenvolver esses programas e a interface gráfica…

Veja nesse vídeo um exemplo: http://www.youtube.com/watch?v=7tf6cU1ifqk. Um músico toca um teclado, ligado via cabo midi à placa de som do computador, o software interpreta a entrada do sinal das teclas, e emula o som de um violão, banjo…

Alguém saberia me explicar como funciona o desenvolvimento de um software nessa área de computação musical?

Outro exemplo, seria um afinador digital. Não faço a mínima idéia como o software é desenvolvido para interpretar o sinal áudio e fazer a conversão para digital, movimentando gráficos. Sem falar nos softwares para reconhecimento de voz.

Já pesquisei bastante na biblioteca de minha Faculdade e não encontrei nada do gênero. Já perguntei também todos os meus professores de programação e nenhum soube me explicar ou me indicar algum livro que aborde tal assunto…

Se alguém puder me ajudar, eu agradeço muito… pois tenho algumas idéias que queria colocar em prática, quando estiver chegando ao final do curso e já tiver conhecimento suficiente.

Obrigado!

5 Respostas

ViniGodoy

Isso aí pode ser facilmente programado com o Java 2D. Mas você vai precisar de um ilustrador.

Para a parte de sons. Existem basicamente dois formatos de som, o MID, que emula o SOM dos instrumentos e é tipicamente usado em teclados, e os formatos de wave (inclusive os compactados, como MP3 ou OGG), que simplesmente descrevem a onda sonora.
O pacote java.sound cobre os dois formatos. Se você quiser trabalhar com o primeiro, dê uma olhada na classe Sequencer. Ela é quem “orquestra” a execução das músicas.

Se quiser usar wave, você precisará conhecer um pouco da parte matemática. Para isso, busque algum livro de análise/processamento de sinais e entre em contato com os professores da engenharia elétrica (ou engenharia da computação). No java, a classe DataLine representa um canal de dados digitais. É com esse tipo de análise que você fará programas como o afinador de digital e o analisador de voz, que você comentou.

Outra boa opção para aplicações desse tipo é a biblioteca SDL, do C. Você pode usa-la com o C++. Ela também dá suporte aos dois formatos, e já vem com o descompactador de ogg. Uma das vantagens de manipular sons e outros arquivos de baixo nível no C++ é o fato de existir os tipos unsigned, comumente usados nesses formatos de arquivo.

C

ViniGodoy, primeiramente queria te agradecer por esclarecer parte das minhas dúvidas!

Mas você citou que irei precisar de um Ilustrador… Você diz isso porque irei precisar Desenhar o Layout do Programa? Porque pelo que vi no Netbeans, Eclipse, eles só vem com botões, caixas de texto, básicas. Realmente não vi ferramenta nenhuma para desenhar um layout pelo menos parecido com o programa que te enviei o link no youtube, inclusive ferramentas para se fazer gráficos que se movimentem com a entrada de sinal de áudio, etc… Você tem alguma apostila, livro ou video aula que ensine como desenvolver essa parte do layout, quando se trata de uma layout parecido com esse do link no youtube?

Seria algo parecido como desenhar um layout para web no Ilustrator e depois fatiar para linkar com o código? Desculpe-me a ignorância, mas nesse ponto do layout não entendi… Se for isso, pelo menos essa parte do layout, que com certeza vai ser a mais fácil, levando-se em consideração a complexidade do código, ja estaria resolvido. Pois já desenho a algum tempo e estou comprando um tablet para aprofundar mais em desenho digital.

Você citou o C++, nesse caso eu irei precisar de um conversor analogico/digital externo? ou daria para utilizar a própria placa de som para captar o áudio, e fazer a conversão analógico/digital via código? Mais uma vez, desculpe-me a ignorância, mas é porque fizemos alguns experimentos básicos em C, um display de 7 segmentos, na qual era utilizada via porta DB25 do computador. E quando se utiliza esse tipo de porta, (por favor me corrija se estiver errado, pois ainda tenho pouco conhecimento) se quisesse fazer um programa que captasse o áudio externo para executar algum comando, eu teria que acrescentar um conversor analogico/digital externo para isso. Daí o motivo de ficar um pouco confuso, quando se trata dessa conversão de analógico/digital…

Bom, por último, qual livro em C++ e Java você me indica? E você conhece algum site que aprofunde mais o assunto sobre as bibliotecas que você citou em Java e C++?

Mais uma vez obrigado! E por favor me corrija se disse alguma besteira…

ViniGodoy

Sim, para isso mesmo. A maior parte daqueles gráficos nada mais são que imagens.
Ele pode ter criado do zero, ou mesmo obtido por fotos do teclado (o que dispensaria um ilustrador).

É algo parecido com isso sim.

Se sua placa tem entrada para microfone, ela obviamente tem um conversor analógico/digital. Até pq, o sinal de voz é analogico e os arquivos de áudio no computador são digitais.
Seria impossível fazer diferente. Basta fazer o programa gravar o audio (usando para isso alguma API de som que você queria, como o DirectSound) e depois processar os dados.

crboguitar:
Bom, por último, qual livro em C++ e Java você me indica? E você conhece algum site que aprofunde mais o assunto sobre as bibliotecas que você citou em Java e C++?
Mais uma vez obrigado! E por favor me corrija se disse alguma besteira…

O meu site tem diversos tutoriais sobre Java 2D.

Se quiser usar a SDL, tem esses tutoriais aqui:
http://www.sdltutorials.com/
http://www.lazyfoo.net/SDL_tutorials/

Sobre indicação de livros, consulte o Roadmap C++ ou o RoadMap Java, também no meu site.

Você também vai querer procurar algum livro específico de Processamento de Sinais. Nesse caso, é melhor ver aí na sua faculdade, pois certamente deve ter algo já disponível na sua biblioteca.

C

ViniGodoy,

Mais uma vez muito obrigado! Realmente depois que escrevi aquilo a respeito da placa de som, que vi a besteira. Com certeza ela tem uma conversor analógico/digital…

Quando li sua 1ª resposta, fui pesquisar sobre Java 2D e o primeiro site que encontrei já foi o seu! E por sinal, um excelente site!

Agora sim! pelo menos sei por onde começar a estudar, graças a você! Apesar de ainda estar no início do meu curso, já tenho algumas idéias de projeto final, ligada a computação musical. Sei que não é facil, por isso já quero começar cedo. Por ser músico, isso irá ajudar um pouco também.

Te agradeço muito pelas dicas e parabéns pela boa vontade em ajudar iniciantes nesse fascinante mundo da programação!

Com certeza várias pessoas tem as mesmas dúvidas que eu, mas suas respostas irão ajudar bastante a ter uma iniciação correta nos estudos.

Abraço e tenha um ótimo final semana!

Marky.Vasconcelos

Para estudar a SDL, indico o http://www.lazyfoo.net/SDL_tutorials/ mesmo, link que ele o ViniGodoy me indicou a muito tempo quando tive curiosidade sobre jogos (que de certa forma é parecido com o que tem que fazer).

Criado 11 de dezembro de 2010
Ultima resposta 11 de dez. de 2010
Respostas 5
Participantes 3