Je voudrais avoir quelque chose qui ressemble à ceci. Deux couleurs différentes ne sont pas nessaires.Comment visualiser des données audio?
audacity on mac http://audacity.sourceforge.net/about/images/audacity-macosx.png
J'ai déjà les données audio (un échantillon/milliseconde) à partir d'un wav stéréo dans deux tableaux int, un pour chaque canal gauche et à droite. J'ai fait quelques tentatives, mais elles ne semblent pas aussi claires que cela, mes tentatives se résument à un spikey ou à une masse compacte.
De bonnes suggestions? Je travaille en C# mais psuedocode est ok.
Supposons que nous avons
- une DrawLine fonction (couleur, x1, y1, x2, y2)
- deux tableaux int avec des données droite [] et à gauche [] de longueur L
- valeurs de données entre 32767 et -32768
Si vous faites d'autres hypothèses, écrivez-les simplement dans votre réponse.
for(i = 0; i < L - 1; i++) {
// What magic goes here?
}
Voici comment cela s'est passé lorsque j'ai appliqué the solution Han provided. (un seul canal)
alt text http://www.imagechicken.com/uploads/1245877759099921200.jpg
Audacity est open source, vous pouvez donc regarder le code. Je suppose quelque chose comme le suivant ... func getHeight (v) {return abs (v) * 32767/viewArea.height/2); samplesPerPixelColumn = samples.len/viewArea.width; pour i = 1 à viewArea.width {avgV = Avg (échantillons [i-i + samplesPerPixelColumn]); colHeight = getHeight (avgV); si avgV> = 0 DrawLine (noir, i, viewArea.height/2, i, (viewArea.height/2) + colHauteur) else DrawLine (noir, i, vueArea.height/2, i, (viewArea.height/2) - colHauteur); Vous aurez probablement besoin de faire un peu d'arrondi/plage de manipulation, mais cela devrait être l'essentiel. – steamer25
Pourquoi ne pas mettre cela dans une réponse. – Nifle
Je voulais vous donner quelque chose qui pourrait être immédiatement utile, mais ne pas être downvoted si une partie de celui-ci était éteint. Plus de pensées: Au lieu de lignes verticales, dessinez des diagonales entre le point précédent et le suivant ...En outre, si vous zoomez suffisamment, vous aurez plusieurs pixels par échantillon. – steamer25