2010-04-19 9 views
3

Je développe une application pour iPhone qui enregistre l'audio et enregistre ce fichier audio. J'ai besoin de créer une interface utilisateur similaire à celle de l'application Voice Memo avec un VU-mètre. J'ai implémenté du code pour enregistrer de l'audio, mais je n'ai aucune idée de la mise en œuvre du VU-mètre. Dans l'attente d'une réponse. Merci d'avance.Implémentation de VU mètres dans l'iphone

Répondre

5

Un VU-mètre affiche simplement l'amplitude à court terme du signal sur une échelle logarithmique (dB). Vous devez mesurer en continu l'amplitude (RMS) du signal sur un intervalle de temps court (par exemple 10 ms), puis convertir la magnitude RMS en dB et mettre à jour l'affichage du compteur.

RMS_signal (V) = sqrt(sum(x^2)/N) 

où N est le nombre d'échantillons (par exemple N = 441 pour un échantillon de 10 ms à la fréquence d'échantillonnage de 44,1 kHz)

Magnitude (dB) = 20.0 * log10(RMS_signal) + K 

où K est une constante d'étalonnage (dB offset).

Vous pouvez également ajouter un filtre passe-bas pour lisser l'amplitude affichée. Voir stackoverflow.com/questions/2167513.

4

Vous pouvez utiliser un framework OpenGL simple et facilement extensible gl-data-visualization-view pour afficher un compteur UV. Vous devez simplement ajouter GLDataVisualizationView, définir le type de visualisation comme compteur analogique et définir la valeur à visualiser.

+0

Salut mike-dutka! Merci pour votre code gl-data-visualization-view. C'est bien! Comment puis-je ajouter un filtre passe-bas à votre code? J'utilise en ce moment le code suggéré par sens-questions sur ce lien: http://stackoverflow.com/questions/9247255/am-i-doing-the-right-thing-to-convert-decibel-from-120 -0-à-0-120 est-il assez bon pour un swing niddle lisse? Merci pour votre temps! – Winston