J'ai commencé un petit projet qui comprend travailler avec des fichiers MIDI. Je me demandais, est-ce qu'il y a du code C# ou VB.Net qui traite les transitions entre les fichiers MIDI et WAV?Comment puis-je convertir entre midi en wav/mp3 en C#?
Répondre
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.
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.
Je souhaite être capable de lire des fichiers midi sur Silverlight, est-ce que j'expédie trop? – vondip
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
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
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).
- 1. En écho en toute sécurité aux données MIDI en C#
- 2. Comment convertir des nombres entre hexadécimal et décimal en C#?
- 3. Comment convertir une chaîne en ascii en binaire en C#?
- 4. Convertir IntPtr en int * en C#?
- 5. C# convertir hexadécimal en ip
- 6. Comment convertir chaîne à LPWSTR en C++
- 7. C#: Comment convertir long en ulong
- 8. Comment convertir une chaîne en OctetString (C#)?
- 9. Comment convertir des nombres entre différentes bases en JavaScript?
- 10. Comment convertir un sbyte [] en octet [] en C#?
- 11. Comment convertir un DataTable en chaîne en C#?
- 12. Comment faire pour convertir Excel.Range.Interior.Color en System.Drawing.Color en C#?
- 13. Comment convertir une chaîne strings en chaîne en C++?
- 14. Comment convertir UTF-8 en UTF-16 en C?
- 15. Comment convertir un délégué en objet en C#?
- 16. comment convertir la chaîne en code en C#
- 17. Comment convertir un flux en octet [] en C#?
- 18. En C#, Comment convertir une chaîne hexadécimale en int?
- 19. Comment convertir datetime en timestamp unix en c?
- 20. Comment convertir l'adresse d'un int en pointeur char en C?
- 21. Comment convertir un double en chaîne en C++?
- 22. Comment "ralentir" un fichier MIDI (idéalement en Python)?
- 23. Prise en charge de Midi MediaElement dans Silverlight 3
- 24. Conversion entre les fuseaux horaires en C
- 25. C/C++: Comment convertir 6bit ASCII en 7bit ASCII
- 26. Comment faire pour convertir entre deux types de balisage de document avec regex en C#?
- 27. Comment convertir en datetime
- 28. Comment convertir longtemps en LPCWSTR?
- 29. convertir la chaîne en char c
- 30. Convertir un tableau d'octets en un tableau court en C#
Joli lien, Jacob. –
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
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