//=========================================================================== // BEEPRAMP FUNCTION // The derivation of beepRamp() // from various experiments... // 20 January 2010 // Nicholas Gessler //=========================================================================== #include #pragma hdrstop #include // we need this #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //=========================================================================== // VARIABLES //=========================================================================== double hz; // frequency in Hertz double base = 1.03; // base which is raised to increasing powers int ex = 100; // exponent to which base is raised int ms = 200; // milliseconds int part; // parameters for beepRamp() int whole; // parameters for beepRamp() bool stop = true; //=========================================================================== // FUNCTIONS //=========================================================================== //----------------------------------------------------------------- Beep Ramp void beepRamp (int part, int whole, int ms) { if (whole != 0 && part != 0) { // don't play zero notes float ex = (part * 155) / whole + 100; int hz = 10 * pow(1.03, ex); Form1->EditHertz->Text = hz; Beep(hz, ms); Application->ProcessMessages(); } } //----------------------------------------------------------------- Play Note void playNote (void) { //while (stop == false) { // ex ranges from 45 to 200 hz = 10 * pow(1.03, ex); Beep(hz, ms); Form1->EditHertz->Text = hz; Application->ProcessMessages(); //} } //---------------------------------------------------------------- Play Scale void playScale (void) { hz = 10; ex = 1; while (hz < 4000) { Form1->EditHertz->Text = hz; Form1->EditPower->Text = ex; Application->ProcessMessages(); Beep(hz, ms); ex++; hz = hz * base; } hz = hz * (1 / base); while (hz > 1) { hz = hz * (1 / base); Form1->EditHertz->Text = hz; Application->ProcessMessages(); Beep(hz, ms); } } //=========================================================================== // EVENT HANDLERS //=========================================================================== //-------------------------------------------------------- Borland's Creation __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { whole = 155; } //--------------------------------------------------------- Play Scale Button void __fastcall TForm1::ButtonPlayScaleClick(TObject *Sender) { playScale(); } //--------------------------------------------------------- Play Note Button Base TrackBar void __fastcall TForm1::TrackBarBaseChange(TObject *Sender) { base = double(TrackBarBase->Position) / double(100); Form1->EditBase1->Text = base; Form1->EditBase2->Text = base; } //--------------------------------------------------------- Exponent Trackbar void __fastcall TForm1::TrackBarExpChange(TObject *Sender) { ex = TrackBarExp->Position; Form1->EditExp->Text = ex; Application->ProcessMessages(); playNote(); } //----------------------------------------------------- Milliseconds TrackBar void __fastcall TForm1::TrackBarMillisecondsChange(TObject *Sender) { ms = TrackBarMilliseconds->Position; Form1->EditMilliseconds->Text = ms; } //------------------------------------------------------ Milliseconds EditBox void __fastcall TForm1::EditMillisecondsChange(TObject *Sender) { ms = StrToInt(Form1->EditMilliseconds->Text); Form1->TrackBarMilliseconds->Position = ms; } //------------------------------------------------------------- Part TrackBar void __fastcall TForm1::TrackBarPartChange(TObject *Sender) { part = Form1->TrackBarPart->Position; Form1->EditPart->Text = part; Application->ProcessMessages(); beepRamp(part, whole, ms); } //------------------------------------------------------------ Whole TrackBar void __fastcall TForm1::TrackBarWholeChange(TObject *Sender) { whole = Form1->TrackBarWhole->Position; Form1->EditWhole->Text = whole; TrackBarPart->Max = whole; } //---------------------------------------------------------- That's All Folks