Ich möchte durch die Boxen einen Piep-Ton ausgeben! Auf jeden Fall muss ich die Dauer des Tons bestimmen, die Höhe noch dazu wäre mir am liebsten.
Gibt es da was, APi-Call oder ne Klasse oder directx technisch etwas!
Ich würde mich freuen, wenn ihr mir helfen könntet!
Grüße
Christoph
/* Deklaration der API-Funktion MessageBeep und bentigter Konstanten */
[DllImport("User32.dll")]
private static extern int MessageBeep(uint uType);
private const uint MB_SIMPLE_BEEP = 1;
private const uint MB_ICONHAND = 0x00000010;
private const uint MB_ICONQUESTION = 0x00000020;
private const uint MB_ICONEXCLAMATION = 0x00000030;
private const uint MB_ICONASTERISK = 0x00000040;
/* Aufzhlung fr die Art des Piepstons */
public enum BeepType: uint
{
Simple = MB_SIMPLE_BEEP,
Error = MB_ICONHAND,
Exclamation = MB_ICONEXCLAMATION,
Question = MB_ICONQUESTION,
Information = MB_ICONASTERISK
}
/* Methode zur Ausgabe eines Piepstons */
public static bool MessageBeep(BeepType beepType)
{
return (MessageBeep((uint)beepType) != 0);
}
Hoffe, das hilft!
Herzlichen Dank erstmal für diesen Tipp! Das Problem ist, dass ich beabsichtige eine Klasse zu schreiben, die einen String in Morse-Code ausgibt. Bzw generell eine nette Morse-Code-Klasse! Dafür brauche ich allerdings eine Sound-Klasse, wo ich die Länge in milimetern angeben kann!
So eine Klasse kenn ich auch nicht... Vieleicht hat sonst jemand eine Idee ?(
Übrigens: Gute Programmidee 😁
Gibt es in DirectX ne Klasse, die gestreamtes Wave ausgibt?
Oder noch besser in der WinApi?
Dann könnte ich on the fly ne wave erstellen und die rausschmeißen. Muss ich mich halt mal tiefer in die Materie fuchsen. Wäre nett wenn ihr mir dabei ein wenig helfen könntet, falls ich mal wieder ein paar Fragen habe. Das wäre dann auch sicherlich was für die Komponentensammlung.
Hi Quallo,
auf www.codeproject.com findet sich eigentlich immer was. Hier ein paar Suchbegriffe:
PlaySound: eine WinMM-Funktion zum Abspielen von Wav-Dateien. Einfach, aber man hat wenig Kontrolle. (Da gab es auf CodeProject ein ganz einfaches Beispiel zu. Finde ich leider nicht mehr)
WaveOut: lowlevel API zum Abspielen von Wave-Soundbuffers. Aufwändig, arbeitet mit Windowsbotschaften.
Beispielseite: A low-level audio player in C#
Midi: sollte klar sein.
Hier vielleicht zuerst gucken:
CodeProject: Multimedia and GDI+
Gruss
Pulpapex
Schau mal hier
Das ist genau das was du suchst.
Ich würde die gerne den C# code dazu posten, aber leider sitze ich grad in der Schule und komme net an den Code in dem ich das Verbaut hab.
Aber ich glaube für das DWORD hab ich int genommen.
/edit
Hab grad festgestellt, das ich VS.NET auf dem Rechner hier hab 😁
Habs mal schnell in Code umgesetzt 😉
class Class1
{
[STAThread]
static void Main(string[] args)
{
Beep(100,1000);
}
[DllImport("Kernel32.dll")]
private static extern bool Beep(uint freq,uint dauer);
}
Generell find ich die Idee geil 🙂
Kannst die Klasse ja mal irgendwo posten wenn du sie fertig hast 😉
Gruß
LordK
Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.
Wow, super!
Damit kann man ja schon mal testen.
Schön wäre es wenn das Beep jetzt auf dem Lautsprecher ausgegeben wird, aber so sollte es reichen.
Ich werde es sowieso so modular realisieren, dass man das beliebig austauschen kann, was bei einem Morse-Code passiert.
Grüße Christoph
Original von Quallo
Wow, super!Damit kann man ja schon mal testen.
Schön wäre es wenn das Beep jetzt auf dem Lautsprecher ausgegeben wird, aber so sollte es reichen.
Hä?
Wie auf dem Lautsprecher ausgegeben wird?
Meinst du normal über die Boxen oder was?
Hm.. da ich kein Speaker hab (Notebook-user 😁 ) wird das bei mir sowieso
über den Lautsprecher emuliert. Vielleicht gibts da aber noch anderweitig ne möglichkeit das "umzulenken"...
Gruß
LordK
Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.
Hallo!
Irgendwie bekomme ich das mit dem Beep nicht hin.
Ich muss doch die Kernel32.dll als Resource hinzufügen oder?
Der Meldet bei mir immer, dass diese ungültig ist.
Gruß
Brovning
Hallo Brovning,
nein, musst du nicht als Ressource hinzufügen. Die DllImport-Anweisung reicht.
herbivore
hab den Thread jetzt nicht ganz gelesen aber hilft dir DAS Ich hab ne Klasse geschrieben, wohin damit?
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Ich muss doch in den Quelltext lediglich
[DllImport("User32.dll")]
bzw.
[DllImport("Kernel32.dll")]
schreiben, aber dann erhalte ich folgende Fehlermeldung beim kompilieren:
The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)
Gruß
Brovning
Ich habs ! ! !
Man benötigt natürlich:
using System.Runtime.InteropServices;
Vielen Dank euch beiden!
Gruß
Brovning
Hallo!
Der Vollständigkeit halber sollte man noch Console.Beep und Console.WriteLine("\a") als Möglichkeit nennen, einen Ton auszugeben.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Hab mir ein kleines Programm geschrieben, mit dem man Töne generieren kann. Hab dazu Console.Beep verwendet. Kann mir jemand sagen, wie ich die Töne auf die Lautsprecher kriege. Werden ja nur intern wiedergegeben!
www.mkellenberger.ch Was ich täglich (neu) entdecke...
Hallo snoopy90,
Console.Beep gibt nur intern aus. Wenn du extern ausgeben willst, ist Console.Beep nicht das Richtige. Alternativen findest du über die Forumssuche.
herbivore
Durch die Hilfe eines Forenusers in einem anderen Thread bin ich auf folgendes Beispiel gestoßen:
http://www.codeproject.com/KB/cs/messagebeep.aspx
Wow, super service, ich glaub, mit dem Beispiel kann ich ganz gut was anfangen!
Vielen Dank für die schnelle Hilfe!
www.mkellenberger.ch Was ich täglich (neu) entdecke...