2011-01-15 24 views
6

He intentado usar Console.Beep() a velocidades de milisegundos bajas, dos frecuencias de reproducción dos a la vez, pero la pausa entre pitidos lo arruina. He intentado investigarlo pero no he encontrado nada, y no sé por dónde empezar, además de DirectSound, que estoy buscando. Todo lo que necesito es hacer un programa que reproduzca dos o más frecuencias simultáneamente en un altavoz, en C#.Sonido acordes en C#?

Gracias.

+0

Awww ... me recuerda a mi BBC Micro ... ahora que era una máquina con algo de potencia ... este tipo de programación avanzada probablemente no sea posible en C#. –

Respuesta

2

Le sugiero que mire en DirectSound, que tiene buenos enlaces .NET. Puede utilizar dos (o más) Buffer objetos e invocar sus métodos Play para reproducirlos simultáneamente.

This tutorial muestra cómo implementar una simple caja de ritmos en C# al sintetizar sonidos sobre la marcha. Espero eso ayude.

+0

Eso parece exactamente lo que necesito. Gracias. – apophis

+0

@apophis: sin preocupaciones. – CesarGon

0

Intente utilizar MIDI. This example debería comenzar. Utiliza una biblioteca MIDI que muchas personas recomiendan altamente.

+0

Saludos. Voy a echarle un vistazo. – apophis

0

Console.Beep() es síncrono y no regresa hasta que el sonido haya finalizado.

Pruebe Simple DirectMedia Layer (SDL.net).

0

Aquí hay un código de muestra muy simple que te permitirá reproducir un archivo WAV o MIDI. De esta forma, puede escribir su código una vez y luego mantener el wav o el archivo intermedio si desea realizar cambios en el efecto de sonido.

Play Any Sound File - C# (utiliza DirectX 9.0 para código administrado)

0

Si conoce las frecuencias de antemano se puede sintetizar en un archivo de onda (audacia u otro programa similar) y luego reproducir el archivo de onda con la clase SoundPlayer.

string path = /*path goes here*/; 
player = new SoundPlayer(path); 
player.Play(); 

Si necesita sintetizarlos en tiempo de ejecución tendría que escribir el archivo a mano. Here's una pregunta de SO que puede hacer referencia para compilar los archivos de onda.

Cuestiones relacionadas