web-dev-qa-db-fra.com

Création d'un visualiseur de musique

Alors, comment crée-t-on un visualiseur musical? J'ai regardé sur Google mais je n'ai vraiment rien trouvé qui parle de la programmation réelle; principalement des liens vers des plug-ins ou des applications de visualisation.

J'utilise iTunes mais je me rends compte que j'ai besoin de Xcode pour programmer (je suis actuellement déployé en Irak et je ne peux pas télécharger ce gros fichier). Donc en ce moment je suis juste intéressé à apprendre "la théorie" derrière, comme le traitement des fréquences et tout ce qui est nécessaire.

52
crystalattice

Lorsqu'un visualiseur lit un fichier de morceau, il lit les données audio en très peu de temps (généralement moins de 20 millisecondes). Le visualiseur effectue une transformation de Fourier sur chaque tranche, en extrayant les composantes de fréquence et met à jour l'affichage visuel à l'aide des informations de fréquence.

La façon dont l'affichage visuel est mis à jour en réponse aux informations de fréquence dépend du programmeur. Généralement, les méthodes graphiques doivent être extrêmement rapides et légères afin de mettre à jour les visuels au rythme de la musique (et ne pas enliser le PC). Au début (et toujours), les visualiseurs modifiaient souvent directement la palette de couleurs dans Windows pour obtenir des effets assez sympas.

Une caractéristique des visualiseurs basés sur les composants de fréquence est qu'ils ne semblent pas souvent très bien réagir aux "battements" de la musique (comme les coups de percussion, par exemple). Des visualiseurs plus intéressants et plus réactifs peuvent être écrits qui combinent les informations du domaine fréquentiel avec une conscience des "pics" dans l'audio qui correspondent souvent à des coups de percussion.

27
MusiGenesis

Pour créer BeatHarness ( http://www.beatharness.com ), j'ai 'simplement' utilisé une FFT pour obtenir le spectre audio, puis j'ai utilisé du filtrage et des détecteurs Edge/onset.

À propos de la transformation de Fourier rapide: http://en.wikipedia.org/wiki/Fast_Fourier_transform

Si vous êtes habitué aux mathématiques, vous voudrez peut-être lire la page de Paul Bourke: http://local.wasp.uwa.edu.au/~pbourke/miscivers/dft/

(Paul Bourke est un nom que vous voulez google de toute façon, il a beaucoup d'informations sur des sujets que vous voulez savoir en ce moment ou probablement dans les 2 prochaines années;))

Si vous voulez en savoir plus sur google détection de rythme/tempo pour Masataka Goto, il a écrit quelques articles intéressants à ce sujet.

Éditer:

Sa page d'accueil: http://staff.aist.go.jp/m.goto/ Lecture intéressante: http://staff.aist.go.jp/m.goto/PROJ /bts.html

Une fois que vous avez des valeurs pour par exemple les basses, les demi-teintes, les aigus et le volume (gauche et droite), c'est à votre imagination de décider quoi en faire. Affichez une image, multipliez la taille par les basses par exemple - vous obtiendrez une image qui zoomera sur le rythme, etc.

20
Led

En règle générale, vous prenez une certaine quantité de données audio, exécutez une analyse de fréquence dessus et utilisez ces données pour modifier un graphique qui est affiché encore et encore. La façon évidente de faire l'analyse de fréquence est avec un FFT , mais simple détection de tonalité peut tout aussi bien fonctionner, avec un frais généraux de calcul inférieurs.

Ainsi, par exemple, vous écrivez une routine qui dessine continuellement une série de formes disposées en cercle. Vous utilisez ensuite les fréquences dominantes pour déterminer la couleur des cercles et utilisez le volume pour définir la taille.

13
Mark Bessey

Il existe différentes manières de traiter les données audio, la plus simple consiste simplement à les afficher sous forme de forme d'onde à évolution rapide, puis à y appliquer un effet graphique. De même, des choses comme le volume peuvent être calculées (et transmises en tant que paramètre à une routine graphique) sans effectuer de transformation de Fourier rapide pour obtenir des fréquences: il suffit de calculer l'amplitude moyenne du signal.

La conversion des données dans le domaine fréquentiel en utilisant une FFT ou autrement permet des effets plus sophistiqués, y compris des choses comme spectrogrammes . Il est trompeusement délicat de détecter des choses même assez "évidentes" comme le timing des battements de batterie ou la hauteur des notes directement à partir de la sortie FFT

La détection fiable des battements et de la tonalité sont des problèmes difficiles, surtout en temps réel. Je ne suis pas un expert, mais cette page passe en revue quelques exemples d'algorithmes simples et leurs résultats.

6
Chris Johnson

Si vous cherchez un petit téléchargement, un ensemble d'outils assez portable pour jouer (et une communauté enragée sur laquelle s'appuyer), je suggère le traitement ( http://www.processing.org ), en particulier - http://processing.org/learning/libraries/ sous ESS. Cela devrait vous emmener dans le terrier du lapin. Ne ferait pas un visualiseur iTunes, mais a été utilisé pour le prototypage: http://www.barbariangroup.com/software/magnetosphere qui est devenu le visualiseur iTunes par défaut.

5
Pragmaticyankee

Comme suggéré par @Pragmaticyankee, le traitement est en effet une manière intéressante de visualiser votre musique. Vous pouvez charger votre musique dans Ableton Live et utiliser un égaliseur pour filtrer les fréquences hautes, moyennes et basses de votre musique. Vous pouvez ensuite utiliser un plugin VST suivant pour convertir les enveloppes audio en MIDI CC, tels que Gatefish de Mokafix Audio (fonctionne sur Windows) ou le plugin midiAudioToCC de PizMidi (fonctionne sur mac). Vous pouvez ensuite envoyer ces MIDI CC à un outil matériel émettant de la lumière qui prend en charge le MIDI, par exemple des audio-tubes percussa. Vous pouvez utiliser un cube pour chaque fréquence que vous souhaitez afficher et attribuer une couleur au cube Jetez un oeil à ce post:

http://www.percussa.com/2012/08/18/how-do-i-generate-rgb-light-effects-using-audio-signals-featured-question/

2
John

Nous avons récemment ajouté des routines d'entrée de données audio basées sur DirectSound dans la bibliothèque de visualisation de données LightningChart . Le SDK LightningChart est un ensemble de composants pour Visual Studio .NET (WPF et WinForms), vous pouvez le trouver utile.

Avec le composant AudioInput, vous pouvez obtenir des échantillons de données de forme d'onde en temps réel à partir d'un périphérique audio. Vous pouvez lire le son à partir de n'importe quelle source, comme Spotify, WinAmp, un lecteur CD/DVD ou utiliser un connecteur d'entrée micro.

Avec le composant SpectrumCalculator, vous pouvez obtenir un spectre de puissance (conversion FFT) qui est pratique dans de nombreuses visualisations.

Avec le composant LightningChartUltimate, vous pouvez visualiser les données sous de nombreuses formes différentes, comme des graphiques de forme d'onde, des graphiques à barres, des cartes thermiques, des spectrogrammes, des spectrogrammes 3D, des lignes 3D, etc. et ils peuvent être combinés. Tout le rendu s'effectue via l'accélération Direct3D.

Nos propres exemples dans le SDK ont une approche scientifique, n'ayant pas vraiment beaucoup d'aspect de divertissement, mais il peut certainement être utilisé pour de superbes visualisations de divertissement.

Nous avons également un générateur de signaux configurable (balayages, configurations multicanaux, sinus, carrés, triangles et formes d'ondes de bruit, streaming WAV en temps réel et composants de sortie audio DirectX pour envoyer des données d'ondes à partir de haut-parleurs ou de sortie ligne.

Waveform and 3D spectrogram

Gradient bars [Je suis CTO des composants LightningChart, je fais ces trucs juste parce que j'aime ça :-)]

2
Pasi Tuomainen
  1. Concevoir un algorithme pour dessiner quelque chose d'intéressant à l'écran étant donné un ensemble de variables
  2. Concevez un moyen de convertir un flux audio en un ensemble de variables analysant des éléments tels que les fréquences de battements/minutes, différentes plages de fréquences, le ton, etc.
  3. Branchez les variables dans votre algorithme et regardez-le dessiner.

Une visualisation simple serait celle qui changerait la couleur de l'écran à chaque fois que la musique franchirait un certain seuil de fréquence. ou pour simplement écrire le bpm sur l'écran. ou simplement afficher un ociliscope.

consultez ceci article wikipedia

2
Omar Kooheji

VizKit par Heiko Wichmann semble être un sdk et un point de départ multiplateforme (3ème partie) très agréable (il utilise l'API Visualizer Apple publié il y a quelque temps).

Je viens de le compiler avec Xcode et il comprend également un projet de studio visuel. iTunes s'est écrasé une fois, mais a bien fonctionné après cela. Ce que j'aime jusqu'à présent: faibles dépendances (a dû fixer un chemin de framework sur mon env), beaucoup d'échantillons (EQ, spectre, pochette d'album, histogrammes), architecture très claire , licence agréable.

Également disponible sur Sourceforge .

1
owenfi

Lee Brimelow a n excellent tutoriel vidéo pour le faire en flash. Devrait vous orienter dans la bonne direction même si vous souhaitez l'implémenter en utilisant autre chose que flash.

MDN a un joli tutoriel aussi pour faire des visualisations avec l'API Web Audio.

1
Kristian J.

Ce lien fait exactement ce que vous voulez, et le code source peut être téléchargé: je l'ai trouvé vraiment utile: http://www.raywenderlich.com/36475/how-to-make-a-music-visualizer- in-ios

0
Jack Solomon

Accédez à http://developer.Apple.com/library/mac/#technotes/tn/tn2016.html . Il donne des informations sur les visualiseurs iTunes directement d'Apple et mentionne qu'iTunes peut vous donner des données de forme d'onde après FFT sans que vous n'ayez à travailler.

0
ughoavgfhw