TBeep - Beep-Klasse
-
Hi@All
Ich habe eine Beep-Klasse geschrieben.
Sie beherrscht einzelne Töne, Sinuston und einen Tonverlauf (Tonleiter)Hier isset:
Beep.h
//--------------------------------------------------------------------------- #ifndef BeepH #define BeepH //--------------------------------------------------------------------------- #include <windows.h> #include <math.h> //--------------------------------------------------------------------------- class TBeep { private: // User declarations protected: // User declarations public: // User declarations __fastcall TBeep(); void __fastcall Tone(int freq,int ms); void __fastcall Wait(int ms); void __fastcall Sine(int freq,int ms,int steps); void __fastcall Alarm(void); void __fastcall Siren(void); void __fastcall Gradient(int freq1,int freq2,int steps,int ms); }; //--------------------------------------------------------------------------- #endifBeep.cpp
//--------------------------------------------------------------------------- #include <windows.h> #include <math.h> #pragma hdrstop #include "Beep.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- __fastcall TBeep::TBeep() { } //--------------------------------------------------------------------------- void __fastcall TBeep::Tone(int freq,int ms) { Beep(freq,ms); } //--------------------------------------------------------------------------- void __fastcall TBeep::Wait(int ms) { Sleep(ms); } //--------------------------------------------------------------------------- //-- Einfacher Sinuston, dh, er geht immer auf und ab. //-- z.B. //--Sine(440,10000,100) //--------------------------------------------------------------------------- void __fastcall TBeep::Sine(int freq,int ms,int steps) { int spect = 120; double x; int i = 0; while (i < steps) { x = (double)i/(double)steps*(double)360; Tone(freq+sin((double)x*(double)3.141/(double)180)*spect,ms/steps); i++; } } //--------------------------------------------------------------------------- //-- Einfacher Alarm (Wecker //--------------------------------------------------------------------------- void __fastcall TBeep::Alarm(void) { int ms = 1000; int freq = 880; int i = 0; while (i < 3) { Tone(freq,150); Wait(100); i++; } Sleep(250); } //--------------------------------------------------------------------------- //-- Siraene //--------------------------------------------------------------------------- void __fastcall TBeep::Siren(void) { int ms = 1000; int i = 0; Tone(391,ms/2-ms/20); // G Wait(ms/20); Tone(293,ms/2-ms/20); // D Wait(ms/20); } //--------------------------------------------------------------------------- //-- Tonverlauf //-- z.B. //-- Gradient(200,400,100,10000) //--------------------------------------------------------------------------- void __fastcall TBeep::Gradient(int freq1,int freq2,int steps,int ms) { int diff = freq2-freq1; int f = freq1; int i = 0; while (i < (steps-1)) { Tone(f+i*diff/(steps-1),ms/steps); i++; } Tone(freq2,ms/steps); } //---------------------------------------------------------------------------Wie gefälldet euch? CHECK IT OUT!!!
-
Der Gebrauch
#include "Beep.h"Dann einfach:
TBeep *beep;beep = new TBeep();
beep->Alarm();
-
Die Memberfunktionen sollten static sein.
-
wie sich machen das?
-
und eigendlich wollte ich ja im konstructor fdestlegen, ob mb-lautsprecher oder boxen.
aber wie kann ich den Ton über die Boxen ausgeben lassen?
gibt es da nicht spezielle midi-dlls?