Comment jouer un son en C #, .NET

124

J'ai une application Windows écrite en C # /. NET.

Comment puis-je jouer un son spécifique lorsqu'un bouton est cliqué?

Khilen Maniyar
la source

Réponses:

234

Vous pouvez utiliser:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();
bporter
la source
33
C'est la réponse parfaite car un nouvel utilisateur peut comprendre que SoundPlayer appartient à System.Media ....
Khilen Maniyar
31
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp "Cela signifie interpréter la chaîne suivante comme littérale. Cela signifie que le \ dans la chaîne sera en fait un" \ "dans le sortie, plutôt que d'avoir à mettre "\\" pour signifier le caractère littéral "
Praveen
La réponse de @ Praveen vient de donner un autre fait informatif. Merci à Dexter d'avoir demandé ce symbole "@".
Allen Linatoc
2
@bporter, cela ne semble pas fonctionner avec les fichiers mp3; il est limité au format wav uniquement
Najeeb
Quel dommage cette API! Il ne lit ni les fichiers MP3 ni les fichiers MIDI. Complètement inutile pour moi. Windows a un support natif pour MP3 et MIDI depuis au moins Windows XP. Honte à Microsoft!
Elmue
91

Vous pouvez utiliser SystemSound , par exemple, System.Media.SystemSounds.Asterisk.Play();.

Ta01
la source
très utile. cela peut aider à utiliser les valeurs par défaut du système.
Babak.Abad
4
Il est important de noter que si vous désactivez les sons du système dans les paramètres de Windows (au moins Windows plus récent), il ne lit rien.
Artholl
32

Pour Windows Forms, une méthode consiste à utiliser le SoundPlayer

private void Button_Click(object sender, EventArgs e)
{
    using (var soundPlayer = new SoundPlayer(@"c:\Windows\Media\chimes.wav")) {
        soundPlayer.Play(); // can also use soundPlayer.PlaySync()
    }
}

Page MSDN

Cela fonctionnera également avec WPF, mais vous avez d'autres options comme l'utilisation de la MediaPlayer page MSDN

ChrisF
la source
1
Mieux encore, dans le code de production, créez-le une seule fois et utilisez-le plusieurs fois plutôt que de le créer à chaque fois que vous appuyez sur le bouton.
Shibumi
Je renommerais cette fonction en ButtonClick, simplement parce qu'il semble qu'elle suive davantage le style de nommage C #.
Ethan Bierlein
1
@EthanBierlein - c'était probablement la convention de dénomination quand j'ai posté la réponse;)
ChrisF
1
Huh. C'était donc l'ancienne convention?
Ethan Bierlein
@EthanBierlein, c'est toujours ce qui est généré automatiquement par les projets Windows Forms de Visual Studio
JAD
13

Information additionnelle.

C'est une réponse un peu de haut niveau pour les applications qui souhaitent s'intégrer de manière transparente dans l'environnement Windows. Des détails techniques sur la lecture d'un son particulier ont été fournis dans d'autres réponses. En plus de cela, notez toujours ces deux points:

  1. Utilisez cinq sons système standard dans des scénarios typiques , c.-à-d.

    • Astérisque - jouez lorsque vous souhaitez mettre en évidence l'événement en cours

    • Question - jouer avec les questions (la fenêtre de la boîte de message système lit celle-ci)

    • Exclamation - jouer avec l'icône d'excalamation (la fenêtre de la boîte de message système lit celle-ci)

    • Bip (son système par défaut)

    • Arrêt critique ("Main") - jouer avec erreur (la fenêtre de la boîte de message système lit celle-ci)
       

    Les méthodes de classe System.Media.SystemSoundsles joueront pour vous.
     

  2. Mettre en œuvre des autres sons comme personnalisable par vos utilisateurs dans son panneau de commande

    • De cette façon, les utilisateurs peuvent facilement modifier ou supprimer des sons de votre application et vous n'avez pas besoin d'écrire d'interface utilisateur pour cela - elle est déjà là
    • Chaque profil utilisateur peut remplacer ces sons à sa manière
    • Comment:
      • Créez le profil sonore de votre application dans le registre Windows (Astuce: pas besoin de programmation, ajoutez simplement les clés dans l'installateur de votre application.)
      • Dans votre application, lisez le chemin du fichier audio ou la ressource DLL à partir de vos clés de registre et lisez-le. (Comment jouer des sons que vous pouvez voir dans d'autres réponses.)
miroxlav
la source
Merci pour ces informations supplémentaires. Je voudrais ajouter un exemple: System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);joue la main sonore . Notez qu'il joue de manière asynchrone, ici j'ai ajouté une commande de veille pour attendre la fin du son. Si vous n'attendez pas et jouez un autre son, le précédent s'arrête immédiatement.
Matt
2

Pour lire un fichier audio sous la forme Windows en utilisant C #, vérifions l'exemple simple comme suit:

1.Go Visual Studio (VS-2008/2010/2012) -> Menu Fichier -> cliquez sur Nouveau projet.

2.Dans le Nouveau projet -> cliquez sur Application Windows Forms -> Donnez un nom, puis cliquez sur OK.

Un nouveau projet "Windows Forms" s'ouvre.

3.Faites glisser et déposez un contrôle Button de la boîte à outils vers le formulaire Windows.

4.Double-cliquez sur le bouton pour créer automatiquement le gestionnaire d'événements Click par défaut et ajoutez le code suivant.

Ce code affiche la boîte de dialogue d'ouverture de fichier et transmet les résultats à une méthode nommée «playSound» que vous créerez à l'étape suivante.

 OpenFileDialog dialog = new OpenFileDialog();
 dialog.Filter = "Audio Files (.wav)|*.wav";


if(dialog.ShowDialog() == DialogResult.OK)
{
  string path = dialog.FileName;
  playSound(path);
}

5.Ajoutez le code de méthode suivant sous le hander d'événement button1_Click.

 private void playSound(string path)
 {
   System.Media.SoundPlayer player = new System.Media.SoundPlayer();
   player.SoundLocation = path;
   player.Load();
   player.Play();
 }

6. Maintenant, exécutons l'application en appuyant simplement sur la touche F5 pour exécuter le code.

7.Cliquez sur le bouton et sélectionnez un fichier audio. Une fois le fichier chargé, le son sera lu.

J'espère que c'est un exemple utile pour les débutants ...

Vaibhav_Welcome_You
la source
1

Je pense que vous devez d'abord ajouter un fichier .wav aux ressources. Par exemple, vous avez un fichier audio nommé Sound.wav. Après avoir ajouté le fichier Sound.wav aux ressources, vous pouvez utiliser ce code:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.Sound);
player.Play();

C'est une autre façon de jouer du son.

თემო ნემსიწვერიძე
la source