10
votes

Jouer un fichier .wav dans .net

J'essaie d'écrire un programme d'échantillonneur, où chaque clé a un son différent (un fichier WAV).

Quelqu'un peut-il m'expliquer ou me donner un lien vers une explication où je peux apprendre à jouer des fichiers WAV?

Si cela importe, je travaille avec Microsoft Visual C # et en utilisant WinForms.


4 Réponses :


30
votes
SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath);
simpleSound.Play();

2 commentaires

peut mettre en pause et reprendre les fonctions pour cela?


Je ne sais pas être honnête, mais jetez un coup d'œil à ce joueur de niveau bas ... codeproject.com/kb/audio-video/cswavplay.aspx , et si vous utilisez .NET 3.5, vous pouvez utiliser MediaElement qui prend en charge la pause et la reprise.



5
votes

Utilisez FMOD, qui est simplement la meilleure bibliothèque de son de l'univers entier

Heureusement, ils semblent fournir une enveloppe C # pour la meilleure API audio que vous pourriez essayer d'imaginer et vous n'aurez pas à modifier une seule ligne de code pour que votre code fonctionne sur PlayStation ou Xbox ou quoi que ce soit Les développeurs sont à peu réactifs (vous signalez un bogue dans la soirée, allez au lit et la construction corrigée est disponible au fur et à mesure que vous vous réveillez) La documentation est lisible, compréhensible et énorme beaucoup d'exemples dans le SDK, ce qui rend inutile de fournir un didacticiel car la documentation est presque parfaite

La lecture d'une WAV avec FMOD ne représente que 5 lignes de code et, avec seulement 4 lignes, vous pouvez appliquer des effets tout en reliant la balance et le volume de la lecture à un moteur 3D (pour gérer les intersections entre le point de consconstration et la source audio. , 4 lignes ....

Si vous voulez (utilisez C # sur), do Son, -> Fmod.


0 commentaires

4
votes
SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath);
simpleSound.PlaySync();
because sound play asynchronically.

0 commentaires

0
votes

Cette solution basée sur la console utilise LINQPAD (donc les appels de méthode d'extension .Dump ()) et Naudio ( Vous remarquerez que j'utilise l'espace de nom complet sur quelques classes juste pour clarifier). Pour être configuré correctement, vous pouvez simplement télécharger le snippet à partir de http://share.linqpad.net/d7tli8 .Linq (J'ai ajouté Naudio de Nudio de Nuge).

Pour exécuter, Ouvrir dans Linqpad, définissez la valeur de WAVFilePath code> sur un chemin de fichier d'onde locale et appuyez sur F5. lire code> est async, donc nous faisons une console code> pour attendre que ce soit fait. P>

string wavFilePath = @"TODO";
var reader = new NAudio.Wave.AudioFileReader(wavFilePath);
reader.Dump("AudioFileReader");
var sampleProvider = reader.ToSampleProvider().Dump("sample provider");

NAudio.Wave.WaveOut.DeviceCount.Dump("num waveout on comp");
var outputDeviceInfo = WaveOut.GetCapabilities(0).Dump();
var outputter = new WaveOut() {
    DesiredLatency = 5000 //arbitrary but <1k is choppy and >1e5 errors
    , NumberOfBuffers = 1 // 1,2,4 all work...
    , DeviceNumber = 0
}.Dump();
outputter.Init(reader);
outputter.Play(); // async
Console.Read();
outputter.Stop();


0 commentaires