2009-07-26 8 views

Répondre

8

Vous pouvez essayer d'interfacer en quelque sorte avec Timidity, qui est Open Source:

TiMidity ++ est un synthétiseur logiciel. Il peut lire des fichiers MIDI en les convertissant en données de forme d'onde PCM; donnez-lui des données MIDI avec des fichiers de données d'instruments numériques, puis il les synthétise en temps réel et les joue. Il peut non seulement jouer des sons, mais peut également enregistrer les formes d'onde générées dans des disques durs comme divers formats de fichiers audio.

FluidSynth est un plus récemment mis à jour projet Open Source dans la même veine:

FluidSynth est un synthétiseur logiciel en temps réel sur la base des spécifications SoundFont 2.

Vous pouvez télécharger gratuitement des SoundFonts (les données PCM réelles utilisées par ces synthétiseurs pour « rendre » les fichiers MIDI) des sites sur this list.

+0

Joli lien, Jacob. –

+0

Merci, l'a découvert il y a longtemps. Fonctionne bien avec les polices sonores de cette liste: http://en.wikipedia.org/wiki/SoundFont#Free_SoundFont_downloads – Jacob

+0

Jacob, super travail avec ces liens. Je suis sûr qu'ils seront utiles. J'aime particulièrement la fonctionnalité TiMidity ++: 'Lit les fichiers MIDI distants sur le réseau' Savez-vous où je peux trouver un fichier .exe? Je suis toujours foiré lors de la configuration des applications de linker C++ (je ne suis pas un grand programmeur C++) – vondip

8

MIDI files contiennent uniquement des informations de note et de contrôleur, pas de sons. Pour obtenir des sons à partir d'un fichier MIDI, vous devez passer le fichier à travers un synthétiseur de musique ou un échantillonneur, qui convertira les informations de note et de contrôleur en sons réels.

En pratique, cela signifie qu'aucun fichier MIDI donné n'a de son spécifique. Le son résultant de la conversion d'un fichier MIDI en audio varie en fonction de la qualité du synthétiseur ou de la bibliothèque d'échantillons et des sons sélectionnés pour effectuer la conversion.

De nombreuses cartes son ont la capacité de produire du son à partir de fichiers MIDI. Ils peuvent le faire car de nombreux fichiers MIDI suivent une norme appelée General MIDI specification. La spécification General MIDI fournit un moyen normalisé de mapper des assignations d'instruments spécifiques. Si votre fichier MIDI est conforme à cette norme, vous pouvez le jouer avec un générateur de sons General MIDI et vous attendre à ce qu'une caisse claire sonne comme une caisse claire, et non comme une trompette. Si vous avez un package de production musicale sophistiqué comme Cakewalk, vous pouvez y charger un fichier MIDI, et il utilisera ses bibliothèques de sons intégrées pour restituer un fichier son pour vous, et cela peut être fait plus rapidement que en temps réel (c'est-à-dire qu'il ne doit pas jouer le son à travers la carte son et capturer la sortie).

Je suppose que ce que j'essaie de dire, c'est qu'il y a beaucoup de pièces mobiles à cela. Il n'y a pas un seul morceau de code ou un module de classe qui le fera pour vous.

+0

Je souhaite être capable de lire des fichiers midi sur Silverlight, est-ce que j'expédie trop? – vondip

+0

Je ne pense pas que vous ayez besoin de convertir le MIDI en WAV pour le jouer en Silverlight. Si Silverlight ne peut pas gérer les fichiers MIDI en mode natif, vous pouvez accéder à l'API multimédia Windows pour lire les fichiers MIDI. – MusiGenesis

+0

Comment je fais ça? L'environnement de Silverlight ne me permet pas d'y accéder. Comment puis-je ajouter une référence com à l'API multimédia Windows? – vondip

0

Il y a un certain nombre de programmes que vous pouvez acheter qui feront cela (google "convertir midi en WAV"), mais je n'ai jamais rencontré de code .Net disponible publiquement qui le fait (je pense que certains de ces programmes sont écrits en .Net, mais le code source n'est pas disponible).

J'ai un ami en ligne qui travaille sur un convertisseur MIDI-WAV commercial, mais ce n'est pas dans .Net et il ne sera pas open source. Comme l'a mentionné Robert Harvey, ce n'est pas du tout une tâche simple, car il s'agit essentiellement d'écrire votre propre synthétiseur logiciel (une tâche qui m'est propre).

Questions connexes