Pergunta

Quero desenvolver um editor de áudio usando Qt.Para isso, preciso traçar uma forma de onda da faixa de música que acho que deveria ser um gráfico da amplitude máxima do som versus tempo (corrija-me se estiver errado).

Atualmente, tenho usado o objeto da classe Phonon::AudioOutput como um coletor de áudio e o conectei ao meu objeto da classe Phonon::MediaObject para reproduzir o arquivo de áudio.

Agora, para desenhar a forma de onda, preciso saber a amplitude da trilha de áudio a cada segundo (ou mais) deste objeto AudioOutput para poder desenhar uma linha (usando QPainter) de comprimento proporcional à frequência do som em momentos diferentes e, portanto, obter minha forma de onda.

Então, por favor me ajude sobre como obter amplitude de trilhas de áudio em momentos diferentes.

Em segundo lugar, estou usando a maneira correta de traçar formas de onda de trilhas de áudio - traçando amplitudes de som em relação ao tempo, traçando linhas pelo objeto QPainter em um widget em momentos diferentes.

Obrigado.

Foi útil?

Solução

Existe um código que faz as duas coisas que você pergunta (calcular a amplitude de pico e traçar formas de onda de áudio) no Analisador de espectro exemplo que acompanha o Qt (no diretório demos/spectrum).

Captura de tela da demonstração do Spectrum Analyzer em execução no Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

Esta demonstração também calcula e exibe um espectro de frequência.Como outro comentarista aponta, isso é diferente de um gráfico de forma de onda:o espectro é um gráfico da amplitude em relação à frequência, enquanto a forma de onda representa a amplitude em relação ao tempo.

A demonstração usa QtMultimedia em vez de Phonon para capturar e renderizar áudio.Se você está interessado apenas em reproduzir áudio e não precisa gravá-lo, o Phonon pode ser suficiente, mas esteja ciente de que o suporte a streaming (ou seja, Phonon::MediaSource(QIODevice *)) não está disponível em todas as plataformas. QAudioInput e QAudioOutput por outro lado, são bem suportados, pelo menos para dados de áudio PCM, em todas as principais plataformas alvo do Qt.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top