Question

Je souhaite développer un éditeur audio en utilisant Qt.Pour cela, je dois tracer une forme d'onde de la piste musicale qui, je pense, devrait être un tracé de l'amplitude maximale du son en fonction du temps (veuillez me corriger si je me trompe).

Actuellement, j'utilise l'objet de classe Phonon :: AudioOutput comme récepteur audio et je l'ai connecté à mon objet de classe Phonon :: MediaObject pour lire le fichier audio.

Maintenant, pour dessiner la forme d'onde, j'ai besoin de connaître l'amplitude de la piste audio à chaque seconde (ou presque) à partir de cet objet AudioOutput afin de pouvoir tracer une ligne (à l'aide de QPainter) de longueur proportionnelle à la fréquence sonore à différents moments et donc, obtenir ma forme d'onde.

Alors, s'il vous plaît, aidez-moi sur la façon d'obtenir l'amplitude des pistes audio à différents moments.

Deuxièmement, est-ce que j'utilise la bonne manière de tracer les formes d'onde des pistes audio - en traçant les amplitudes du son en fonction du temps en traçant des lignes par objet QPainter sur un widget à différents moments.

Merci.

Était-ce utile?

La solution

Il existe un code qui fait les deux choses que vous demandez (calculer l'amplitude maximale et tracer les formes d'onde audio) dans le Analyseur de spectre exemple fourni avec Qt (dans le répertoire demos/spectrum).

Capture d'écran de la démo Spectrum Analyzer exécutée sur Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

Cette démo calcule et affiche également un spectre de fréquences.Comme le souligne un autre commentateur, ceci est distinct d'un tracé de forme d'onde :le spectre est un tracé de l'amplitude en fonction de la fréquence, tandis que la forme d'onde représente l'amplitude en fonction du temps.

La démo utilise QtMultimedia plutôt que Phonon pour capturer et restituer l'audio.Si vous êtes uniquement intéressé par la lecture audio et que vous n'avez pas besoin de l'enregistrer, Phonon peut suffire, mais sachez que la prise en charge du streaming (c'est-à-dire Phonon::MediaSource(QIODevice *)) n'est pas disponible sur toutes les plateformes. QAudioInput et QAudioOutput en revanche sont bien supportés, au moins pour les données audio PCM, sur toutes les principales plateformes ciblées par Qt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top