E ae galera, no java é possivel fazer comparação de som??
por exemplo eu plugo a guitarra no pc e abro um programa em java, a partir do momento que eu toco alguma nota, o programa reconhece a nota???
É possivel??? Teria que trabalhar com qual classe???
Você quer fazer um software para afinar um instrumento, ou um software para criar partituras a partir de uma música?
Ambas as coisas são complexas, mas a primeira é mais simples e a segunda é extremamente complexa.
De qualquer maneira, você não tem coisas “prontas” no Java, você precisa procurar um pouquinho no Google e talvez ache alguma coisa parecida com o que você quer em C++.
Aí você pode estudar os algoritmos usados, e talvez reimplementá-los em Java.
Consta no java Docs javax.sound.midi
Provides interfaces and classes for I/O, sequencing, and synthesis of MIDI (Musical Instrument Digital Interface) data.
javax.sound.sampled
Provides interfaces and classes for capture, processing, and playback of sampled audio data.
Se seu som for Midi da pra voce comparar com aquele pacote, se for sampled (mp3,wma,wav, etc…) acho que essa API nao vai te ajudar.
E pra constar, mp3 não é suportado nativamente no Java, voce precisa de uma SPI como o que o JavaZOOM fornece para mp3 e ogg.
[quote=Marky.Vasconcelos]Consta no java Docs javax.sound.midi
Provides interfaces and classes for I/O, sequencing, and synthesis of MIDI (Musical Instrument Digital Interface) data.
javax.sound.sampled
Provides interfaces and classes for capture, processing, and playback of sampled audio data.
Se seu som for Midi da pra voce comparar com aquele pacote, se for sampled (mp3,wma,wav, etc…) acho que essa API nao vai te ajudar.
E pra constar, mp3 não é suportado nativamente no Java, voce precisa de uma SPI como o que o JavaZOOM fornece para mp3 e ogg.[/quote]
quer dizer que eu teria que estudar mais as classes do pacote Midi??? ou entendi errado???
Justamente o contrário. Você quer gravar alguma coisa, não tocar um instrumento. O pacote MIDI, em última instância, serve para você tocar arquivos .MID (lembra daqueles tons polifónicos de celulares?)
[quote=entanglement]Justamente o contrário. Você quer gravar alguma coisa, não tocar um instrumento. O pacote MIDI, em última instância, serve para você tocar arquivos .MID (lembra daqueles tons polifónicos de celulares?)
[/quote]
A idéia inicial que eu tenho é plugar a guitarra no pc, e enquanto eu vou tocando vai saindo normal na caixa de som, mais ao mesmo tempo, no programa, tipo ele vai reconhecendo a nota e vai mostrando na tela qual eu estou tocando, mais pelo que percebi eu teria que criar uma biblioteca de som onde faz uma comparação ao que está tocando e faço algo conforme o resultado da comparação!!!
Entendeu?? É possivel??? :lol: no que eu devia estudar inicialmente???
Comparar Mid é facil por que as notas tem uma escala facil, mas como o entanglement disse eses sons parecem os toques polifonicos(que alias eram arquivos mids no celular).
Seu problema é mais complicado.
Voce precisa fora algo que analize som, precisa trabalhar com isso em streaming.
Não existe nada pronto para isso.
Começe estudando como ler o som entrando no computador e saindo pelo som, depois aplicar um analizer nisso ainda vai ser um problema.
A teoria é um bocadinho complexa, se você quiser saber.
É exatamente aquele caso de “criar partituras” que eu falei, já que você precisa reconhecer notas e acordes.
Para o caso relativamente simples de você usar uma flauta-doce (onde a forma de onda do som é quase exatamente sinusoidal e você tem frequências puras) já dá um bom trabalho.
No caso de uma guitarra, onde há um monte de harmônicas, é bem mais difícil determinar para um determinado som qual é a nota musical, ou acorde, correspondente.
Procure sobre “transformadas rápidas de Fourier”. A propósito, é exatamente isso que é usado naqueles modos de visualização de som onde aparece um gráfico de frequências.
Na televisão mostraram uns alunos de uma faculdade famosa de Engenharia (acho que é a Mauá) que fizeram exatamente isso , mas acho que em C++: a partir de uma música (no caso deles usaram exatamente uma flauta-doce) criar uma partitura. Foi uma equipe relativamente grande que fez o software, e eles ralaram bastante.
[quote=entanglement][quote=alexandref93]
A idéia inicial que eu tenho é plugar a guitarra no pc, e enquanto eu vou tocando vai saindo normal na caixa de som, mais ao mesmo tempo, no programa, tipo ele vai reconhecendo a nota e vai mostrando na tela qual eu estou tocando, mais pelo que percebi eu teria que criar uma biblioteca de som onde faz uma comparação ao que está tocando e faço algo conforme o resultado da comparação!!!
[/quote]
A teoria é um bocadinho complexa, se você quiser saber.
É exatamente aquele caso de “criar partituras” que eu falei, já que você precisa reconhecer notas e acordes.
Para o caso relativamente simples de você usar uma flauta-doce (onde a forma de onda do som é quase exatamente sinusoidal e você tem frequências puras) já dá um bom trabalho.
No caso de uma guitarra, onde há um monte de harmônicas, é bem mais difícil determinar para um determinado som qual é a nota musical, ou acorde, correspondente.
Procure sobre “transformadas rápidas de Fourier”. A propósito, é exatamente isso que é usado naqueles modos de visualização de som onde aparece um gráfico de frequências.
Na televisão mostraram uns alunos de uma faculdade famosa de Engenharia (acho que é a Mauá) que fizeram exatamente isso , mas acho que em C++: a partir de uma música (no caso deles usaram exatamente uma flauta-doce) criar uma partitura. Foi uma equipe relativamente grande que fez o software, e eles ralaram bastante.
[/quote]
cara, to começando a ficar espantado com essa idéia, não consegui entender nada esse “transformadas rápidas de Fourier”, mais não custar tentar :shock:
interessante, mas no caso não é comparar som, é descobrir o som, não?
relacionado a sol, eu tenho alguns métodos que carregam e tocam o som de acordo com o método, da de fazer até um pianozinho, ou de acordo com o toque do mouse, uma bateria…
gostaria de explorar este assutno tambem.
recentemente pensei em fazer um sintetizador de voz… onde o programa leria as strings com a separação de letras, formaria os sons…
[quote=raghy]interessante, mas no caso não é comparar som, é descobrir o som, não?
relacionado a sol, eu tenho alguns métodos que carregam e tocam o som de acordo com o método, da de fazer até um pianozinho, ou de acordo com o toque do mouse, uma bateria…
gostaria de explorar este assutno tambem.
recentemente pensei em fazer um sintetizador de voz… onde o programa leria as strings com a separação de letras, formaria os sons…
precisa um grande banco de dados na verdade.[/quote]
a idéia é vc tocando uma guitarra e automaticamente escreve as partituras e tablaturas(para leigos).
entao vc vai tocar este projeto, da para fazer open source, varias pessoas ajudando, ou mesmo uma equipe on line, muita coisa poderia ser feita assim, em tempos de internet.
podemos começar a trocar idéias e ver o que é possivel fazer.
acho que é mais fácil fazer reproduzir o som apartir de uma tablatura por exemplo… poderia ser um começo.
depois identificar o som é outra coisa.
qual interface gráfica
?
porém tem bastante coisa pronta neste sentido. qual é o intuito? estudo ?
[quote=raghy]entao vc vai tocar este projeto, da para fazer open source, varias pessoas ajudando, ou mesmo uma equipe on line, muita coisa poderia ser feita assim, em tempos de internet.
podemos começar a trocar idéias e ver o que é possivel fazer.
acho que é mais fácil fazer reproduzir o som apartir de uma tablatura por exemplo… poderia ser um começo.
depois identificar o som é outra coisa.
qual interface gráfica
?
porém tem bastante coisa pronta neste sentido. qual é o intuito? estudo ?[/quote]