2010-01-20 4 views
1

Maintenant, je sais que je peux jouer un bip d'une durée de jeu avec Console.Beep, mais ce que je suis à la recherche est un moyen de jouer indéfiniment un son d'une certaine fréquence, comme un début et d'arrêt . Des idées?haut-parleur du système Indéterminée bip

+16

Vos utilisateurs vont vous détester –

+1

Voir ici: http://stackoverflow.com/questions/1195828/c-produce-a-continuous-tone-until-interrupted –

+0

J'ai fait une recherche, mais je n'ai rien trouvé. Je suppose que j'aurais dû chercher plus. – Bevin

Répondre

3

Si vous voulez faire un bip autre que celui offert dans l'espace de noms Console vous devez parler directement au haut-parleur. Utilisez le Kernel32.dll pour le faire comme ceci:

d'abord, assurez-vous d'inclure Interop:

using System.Runtime.InteropServices; 

ajouter ensuite la méthode extern pour le bip, et l'utiliser de vos autres méthodes, celui-ci émet un bip à la haut-parleur aussi longtemps que vous le souhaitez à la fréquence que vous lui donnez.

[DllImport("Kernel32.dll")] 
public static extern bool Beep(Int32 frequency, Int32 duration); 
public static void BeepFor(int mSec, int freq) 
{ 
    int Frequency = freq; 
    int DurationInMS = mSec; 
    Beep(Frequency, DurationInMS); 
} 
+0

Et cela diffère de Console.Beep ... comment? C'est essentiellement ce que Console.Beep appelle. – Bevin

+0

C'est la même chose. –

+0

Oui, donc pas ce que je cherche. – Bevin

0

Vous pouvez utiliser MIDI.

Vous pouvez également boucler un fichier WAV en utilisant l'appel PlaySound API avec SND_LOOP et SND_ASYNC spécifiés. Le concept de jouer le même son indéfiniment sur un PC moderne est quelque peu instable, sauf si vous êtes au niveau du matériel où vous pouvez écrire et contrôler une boucle infinie ou simplement "allumer" le haut-parleur à une fréquence donnée. Les API de haut niveau et les langages de programmation n'autoriseront pas cela car, à ce niveau, le système d'exploitation vous oblige à jouer avec d'autres applications.

Modifier

Il convient également de noter que la durée de l'appel Bip est en millisecondes et il prend une valeur Int32. Int32.MaxValue millisecondes est looooong temps. Probablement plus que quiconque pourrait écouter le bip.

0

Comme toujours dans ces questions, la première réponse devrait être:

Qu'est-ce que vous essayez vraiment d'accomplir. Voulez-vous vraiment un bip de durée indéterminée, ou voulez-vous jouer des sons pendant de longues périodes?

Questions connexes