estou planejando criar um software no android de reconhecimento de notas musicais,
para retornar se o som da nota musical está afinado ou desafinado.
Atualmente toco violino, e utilizo alguns aplicativos no android que dizem se a nota tocada está afinada ou não.
O problema é que em todos os aplicativos que baixei, todos tem um tempo de resposta demorado quando
as notas musicais se tornam mais curtas, principalmente em seminimas, colcheias, semicolcheias, fusas, semifusas… TODOS os aplicativos travam quando as notas tem pouco tempo de duração, por causa do pouco tempo de captura de som que o software possui.
Será que se fizesse um aplicativo para android em c++ poderia ser possível maximizar e melhorar a captura de notas musicais ?
Ou será que o problema está no nível do hardware, que tem que tem um smartphone com um captador mais poderoso e especifico para esse problema em si ?
O que dizem do android é que ele(ou os devices) ainda não é 100% bom pra este tipo de app, pq há um delay entre software e hardware, NÃO que seja isto que esta fazendo os app de afinar travarem.
[quote]O que dizem do android é que ele(ou os devices) ainda não é 100% bom pra este tipo de app, pq há um delay entre software e hardware, NÃO que seja isto que esta fazendo os app de afinar travarem.
Isso que gostaria de saber, se o delay é culpa do hardware que não é projetado para tal situação ou se é de software,
que não está maximizado para tal problema…
Já sim, utilizei muito esse gString, mas ele trava quando a nota é muito curta.
Mas de todos que comparei, o DaTurner Lite foi o que tem melhor resposta de afinação, superior ao gString, mas mesmo assim
ele falha em colcheias, e em algumas vezes em seminimas…
Sei que isso é algo viável, descobrir a nota pela frequência, mas o problema que pergunto é sobre como maximizar a velocidade de captura
dos sons que possuem menos de 1 segundo de intervalo. Se com uma implementação otimizada de c++ resolve o problema ou se é preciso ter um hardware muito sensível especifico para isso.
O que gostaria era de tocar qualquer música, e a cada nota, mesmo que à 120bpm fosse possível o aplicativo mostrar instantaneamente a afinação.
Cara, estranho isso… eu tb toco violino e sempre usei o celular pra afiná-lo… antes eu tinha um Droid2 e hoje eu tenho um iPhone4s em ambos sempre funcionou perfeito…, e olha que eu nem escolhi muito o aplicativo, baixei o primeiro free que apareceu… enquanto isso toque notas mais longas pra afinar, hehe.
Parece que estão melhorando esta latencia, no 4.1 e no 4.2 outra vez, aqui o oficial:
Low-latency audio
Android 4.2 improves support for low-latency audio playback, starting from the improvements made in Android 4.1 release for audio output latency using OpenSL ES, Soundpool and tone generator APIs. These improvements depend on hardware support ? devices that offer these low-latency audio features can advertise their support to apps through a hardware feature constant. New AudioManager APIs are provided to query the native audio sample rate and buffer size, for use on devices which claim this feature.
Caiu como uma mão na roda esse artigo. Realmente o buraco é mais embaixo.
Eu utilizo a versão 2.3, e mesmo que fizesse uma otimização, pelo jeito não iria resolver o problema.
Melhor comprar um hardware superior com o 4.2 que vai melhorar a latência para menos de 10 ms.
Não sei dizer se isso resolve o problema dos travamentos, mas vou pesquisar melhor.