2011-02-17 4 views
2

Je comprends les concepts généraux pour cela, mais je suis très nouveau pour la programmation graphique Java.visualiseur de musique simple

L'idée est la suivante:
1. Récupérez les données d'octets d'un morceau et stockez-les dans un tableau d'octets.
2. Prenez un petit morceau de données d'octets, effectuez une FFT et obtenez une sorte de données utiles (différentes choses que vous pouvez faire une fois la FFT effectuée).
3. Envoyez ces données traitées à une fonction graphique qui l'utilisera d'une manière ou d'une autre pour toute visualisation active.

J'ai du mal à trouver comment faire 2 et 3 en temps réel. Je veux que les données traitées, la chanson jouée, et les données traitées influençant la fonction graphique dessinant actuellement tout en même temps. Je comprends comment faire ces choses séparément, mais je n'arrive pas à comprendre comment mettre tout cela ensemble.

Répondre

0

..Je comprends comment faire ces choses séparément, mais je n'arrive pas à comprendre comment les assembler.

Fils.

2

Les transformées de Fourier ne peuvent pas être effectuées en temps réel (pas même la variété Fast Fourier). Vous devez être en mesure de «diriger» la source de musique en lisant à l'avance pour générer l'histogramme de fréquence. Vous avez également besoin d'un échantillon de longueur non nulle pour analyser. Pour le faire paraître en temps réel, votre analyseur peut saisir des échantillons de, disons, une demi-seconde, dix fois par seconde (il y a donc un chevauchement important), calculer une FFT sur chacun, puis montrer la différence entre un échantillon commençant au point courant. la musique et la suivante (qui montrera la force des fréquences se produisant seulement pendant le 10ème de seconde tout en ayant toujours assez de signal pour effectuer une analyse significative).

Oui, vous aurez besoin de threads. Pas mal.

+0

Je ne comprends pas très bien pourquoi vous devez lire en avance. Si vous calculez une FFT de 2048 points à une fréquence d'échantillonnage de 44,1 kHz, le centre sera retardé de seulement 23 millisecondes, ce qui est inférieur à 1 image à 30 fps. Ou s'agit-il plus d'un problème de temps de calcul que d'un problème théorique? – Justin

+0

Temps de calcul; même une analyse FT rapide est un investissement informatique important. Vous pouvez le simplifier quelque peu en réduisant le nombre de bandes de fréquences à rechercher, mais chaque bande implique essentiellement le calcul d'une intégrale de la forme d'onde par rapport à une représentation sinusoïdale d'une onde à cette fréquence centrale. – KeithS