Reproducir un sonido en C#

Syed Hassan Sabeeh Kazmi 12 octubre 2023
  1. Utilice System.Media.SoundPlayer para reproducir un sonido en C#
  2. Utilice el método SystemSounds.Play para reproducir un sonido en C#
  3. Incruste el control del reproductor de Windows Media en una solución de C# para reproducir un sonido
  4. Agregue la referencia Microsoft.VisualBasic en el proyecto C# para reproducir un sonido
Reproducir un sonido en C#

Este tutorial le enseñará cómo reproducir archivos de audio o sonidos en Windows Forms usando C#. No se puede negar la importancia del sonido para sumergir a la audiencia en el desarrollo de juegos o aplicaciones técnicas.

La programación de C# ofrece cuatro formas principales de implementar archivos de audio o sonidos en sus aplicaciones de Windows, cada una de ellas útil y práctica en formas únicas. Con una plataforma tan rica como .NET para multijugador, puede crear fácilmente generadores de sonido personalizados para WAV u otros archivos de formato.

Además, es posible crear un búfer basado en bytes de los archivos de onda (archivos de sonido) directamente en la memoria utilizando C# como los conos WPF con una excelente compatibilidad integrada con multijugador (audio).

Lo importante a entender aquí es la clase SoundPlayer que reproduce sonido basado en WAV o formato de onda que lo hace poco útil, en cambio, las clases MediaPlayer y MediaElement permiten la reproducción de archivos MP3.

Utilice System.Media.SoundPlayer para reproducir un sonido en C#

La clase SoundPlayer puede ayudar a reproducir un sonido en una ruta determinada en tiempo de ejecución, ya que requiere la ruta del archivo, el nombre y una referencia al espacio de nombres System.Media.

Puede declarar una referencia al espacio de nombres System.Media y usar SoundPlayer _exp = new SoundPlayer(@"path.wav"); sin mencionar el espacio de nombres en la declaración del objeto.

Luego, ejecútalo usando el método Play() con algo como _exp.Play();. Lo que es más importante, las operaciones de archivo, como la reproducción de un sonido, deben encerrarse dentro de bloques de manejo de excepciones estructurados apropiados o apropiados para una mayor eficiencia y comprensión en caso de que algo salga mal; el nombre de la ruta tiene un formato incorrecto, la ruta del archivo de sonido de solo lectura, la ruta “nula” y el nombre de la ruta del archivo de audio no válido pueden generar errores y requieren diferentes clases de excepción.

using System;
using System.Media;  // essential namespace for using `SoundPlayer`
using System.Windows.Forms;

namespace play_sound {
  public partial class Form1 : Form {
    // Initialize form components
    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      // object creation and path selection
      SoundPlayer player = new SoundPlayer(@"C:\Users\DELL\dark_souls_theme.wav");

      // apply the method to play sound
      player.Play();
    }
  }
}

Producción:

reproductor de sonido

Utilice el método SystemSounds.Play para reproducir un sonido en C#

La funcionalidad (ofrece la clase SystemSounds) es una de las formas más sencillas de implementar sonido en sus aplicaciones C# además de su capacidad para ofrecer diferentes sonidos del sistema con una sola línea de código; SystemSounds.Beep.Play();.

Sin embargo, existen algunas limitaciones para usar la clase Sonidos del sistema, ya que solo puede acceder a cinco sonidos del sistema diferentes, que incluyen; Asterisco, Beep, Exclamación, Mano y Pregunta, y en caso de que desactive el sonido del sistema en Windows, este método no funcionará y todos los sonidos serán reemplazados por silencio.

Por otro lado, hace que sea extremadamente fácil reproducir sonidos de la misma manera que lo hace su Windows, y siempre es una buena opción que su aplicación C# respete la elección de silencio del usuario.

Declare una referencia a System.Media en su proyecto C# o use algo como System.Media.SystemSounds.Asterisk.Play(); para reproducir un sonido.

using System;
using System.Media;  // essential namespace for `SystemSounds`
using System.Windows.Forms;

namespace play_sound {
  public partial class Form1 : Form {
    // initialize components
    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      SystemSounds.Asterisk.Play();  // you can use other sounds in the place of `Asterisk`
    }
  }
}

Producción:

Sonidos del sistema

El método Play() reproduce el sonido asociado de forma asincrónica con un conjunto de tipos de eventos de sonido del sistema operativo Windows. No puede heredar la clase SystemSounds, que proporciona métodos estáticos para acceder a los sonidos del sistema.

Es un enfoque de alto nivel que permite que las aplicaciones de C# usen diferentes sonidos del sistema en escenarios típicos que ayudan a que estas aplicaciones encajen perfectamente en el entorno de Windows. Es posible personalizar los sonidos en el panel de control Sonido para que cada perfil de usuario pueda anular estos sonidos.

Incruste el control del reproductor de Windows Media en una solución de C# para reproducir un sonido

Es posible agregar el control del Reproductor de Windows Media usando Microsoft Visual Studio para reproducir un sonido en C#. El Reproductor de Windows Media está en VS Toolbox, y para usar su funcionalidad en su aplicación C#, primero, agregue sus componentes a su Windows Form.

Instale la última versión de Windows Media Player SDK en su sistema y acceda a ella usando su caja de herramientas VS personalizándola desde los componentes COM para agregar la opción Windows Media Player. El nombre predeterminado de Windows Media Player en Visual Studio es axWindowsMediaPlayer1, y puede cambiarlo por algo más fácil de recordar.

Agregue el control Windows Media Player ActiveX a su proyecto C# e impleméntelo en un evento de clic de botón. Además, puede elegir dos modos: un modo Independiente, análogo a los medios abiertos a través del método Abrir, y un modo Reloj, un objetivo de medios correspondiente a la línea de tiempo y las entradas del reloj en el árbol de tiempo, que controla la reproducción. .

using System;
using System.Windows.Media;  // essential namespace
using System.Windows.Forms;

namespace play_sound {
  public partial class Form1 : Form {
    private MediaPlayer audio_player = new MediaPlayer();
    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      OpenFileDialog dialog_audio = new OpenFileDialog();
      dialog_audio.Filter = "MP3 files (*.mp3)|*.mp3|All files (*.*)|*.*";
      if (dialog_audio.ShowDialog() == DialogResult.OK) {
        audio_player.Open(new Uri(dialog_audio.FileName));
        audio_player.Play();
      }
    }

    private void button2_Click(object sender, EventArgs e) {
      // to pause audio
      audio_player.Pause();
    }

    private void button3_Click(object sender, EventArgs e) {
      // to resume the paused audio
      audio_player.Play();
    }
  }
}

Producción:

reproductor de medios de Windows

Lo que es más importante, la clase MediaPlayer hereda la tecnología de Windows Media Player para reproducir archivos de audio y sonido del sistema en varios formatos modernos. Con su ayuda, puede controlar el proceso de reproducción del archivo de sonido mencionado o transportado por la instancia MediaPlayer.

Agregue la referencia Microsoft.VisualBasic en el proyecto C# para reproducir un sonido

La clase Audio es increíblemente famosa en Visual Basic por reproducir un sonido, y puede beneficiarse de ella usándola en C# al incluir los enlaces de Visual Basic en su aplicación. Sin embargo, hay una versión específica de C# de la clase Audio llamada clase SoundPlayer, pero no permite la creación sencilla de búferes basados en bytes de la onda directamente en la memoria.

Agregue la referencia Microsoft.VisualBasic a su proyecto C# como paso inicial y cree un objeto de la clase Audio como static Audio my_obj = new Audio(); y agregue la dirección del archivo de sonido como my_exp.Play("m:\\path.wav", AudioPlayMode.WaitToComplete);.

Puede personalizar o configurar el AudioPlayMode usted mismo, lo que le permite personalizar el tiempo de reproducción del sonido.

using System;
using System.Windows.Forms;
using Microsoft.VisualBasic;          // essential namespace
using Microsoft.VisualBasic.Devices;  // essential namespace

namespace play_sound {
  public partial class Form1 : Form {
    static Audio audio_player = new Audio();

    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      audio_player.Play(@"C:\Users\DELL\dark_souls_theme.wav", AudioPlayMode.WaitToComplete);
    }
  }
}

Producción:

VisualBasic

Es una buena práctica usar la herramienta Background o BackgroundLoop para reanudar las otras tareas mientras el audio continúa reproduciéndose en segundo plano.

es opcional; sin embargo, puede crear sonidos personalizados usando nada más que el código C# aprendiendo el archivo WAV sin comprimir y puede crear el sonido directamente en la memoria de su sistema.

Este tutorial le enseñó cómo reproducir de manera efectiva un archivo de sonido en C#.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub