2011-01-15 20 views
6

Ho provato a usare Console.Beep() a frequenze di un millisecondo due volte su due frequenze "alla volta", ma la pausa tra i segnali acustici la rovina. Ho provato a ricercarlo ma non ho trovato nulla e non so da dove cominciare, a parte DirectSound, a cui sto guardando. Tutto ciò di cui ho bisogno è di creare un programma che riproduca simultaneamente due o più frequenze da un solo diffusore, in C#.Suoni in C#?

Grazie.

+0

Awww ... mi ricorda la mia BBC Micro ... ora che era una macchina con un po 'di potenza ... questo tipo di programmazione avanzata probabilmente non è possibile in C#. –

risposta

2

Ti suggerisco di guardare DirectSound, che ha dei bind .NET. È possibile utilizzare due (o più) oggetti Buffer e richiamare i loro metodi Play per riprodurli contemporaneamente.

This tutorial mostra come implementare una semplice drum machine in C# sintetizzando i suoni al volo. Spero che sia d'aiuto.

+0

Sembra esattamente quello di cui ho bisogno. Grazie. – apophis

+0

@apophis: nessun problema. – CesarGon

0

Prova a utilizzare il MIDI. This example dovrebbe iniziare. Usa una libreria MIDI che molte persone raccomandano altamente.

+0

Cheers. Gli darò un'occhiata. – apophis

0

Console.Beep() è sincrono e non ritorna fino al termine dell'audio.

Provare Simple DirectMedia Layer (SDL.net).

0

Ecco un codice di esempio molto semplice che consente di riprodurre un file WAV o MIDI. In questo modo è possibile scrivere il codice una sola volta, quindi è sufficiente mantenere il file wav o mid se si desidera apportare modifiche all'effetto sonoro.

Play Any Sound File - C# (utilizza DirectX 9.0 per codice gestito)

0

Se si conosce in anticipo le frequenze si possono sintetizzare in un file wave (audacia o un altro programma simile) e quindi riprodurre il file wave con la classe SoundPlayer.

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

Se è necessario sintetizzarli in fase di esecuzione, è necessario scrivere il file a mano. Here's una domanda SO a cui è possibile fare riferimento per creare i file wave.