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);
    };
    //---------------------------------------------------------------------------
    #endif
    

    Beep.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?


Anmelden zum Antworten