Library for 3.2'' uLcd Picaso Display4D system Picaso Serial Environment Command Set web: http://www.4dsystems.com.au/product/20/67/Processors_Graphics/PICASO/
Buzzer.h
- Committer:
- adelino
- Date:
- 2015-04-05
- Revision:
- 1:a74e42cf52b2
File content as of revision 1:a74e42cf52b2:
#ifndef BUZZER_H #define BUZZER_H #include "mbed.h" #include <vector> /** This is a simple sound library for mbed.I use the RTTTL format http://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language Example @code #include "Buzzer.h" char *song = "The Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6"; Buzzer buzzer(p21); Music* pMusic=0; //the song Note la("A#4",50); //the sound int main() { pMusic= new Music(song); pMusic->play(&buzzer); buzzer.tone(&la); delete(pMusic); } @endcode */ // notes definition #define NOTE_R 0 //octave 3 #define NOTE_C3 7644 #define NOTE_CS3 7215 #define NOTE_D3 6810 #define NOTE_DS3 6428 #define NOTE_E3 6067 #define NOTE_F3 5727 #define NOTE_FS3 5405 #define NOTE_G3 5102 #define NOTE_GS3 4815 #define NOTE_A3 4545 #define NOTE_AS3 4290 #define NOTE_B3 4049 //octave 4 #define NOTE_C4 3822 #define NOTE_CS4 3607 #define NOTE_D4 3405 #define NOTE_DS4 3214 #define NOTE_E4 3033 #define NOTE_F4 2863 #define NOTE_FS4 2702 #define NOTE_G4 2551 #define NOTE_GS4 2408 #define NOTE_A4 2272 #define NOTE_AS4 2145 #define NOTE_B4 2024 //octave 5 #define NOTE_C5 1911 #define NOTE_CS5 1804 #define NOTE_D5 1702 #define NOTE_DS5 1607 #define NOTE_E5 1516 #define NOTE_F5 1432 #define NOTE_FS5 1351 #define NOTE_G5 1275 #define NOTE_GS5 1204 #define NOTE_A5 1136 #define NOTE_AS5 1072 #define NOTE_B5 1012 //octave 6 #define NOTE_C6 956 #define NOTE_CS6 903 #define NOTE_D6 852 #define NOTE_DS6 803 #define NOTE_E6 759 #define NOTE_F6 716 #define NOTE_FS6 676 #define NOTE_G6 638 #define NOTE_GS6 602 #define NOTE_A6 568 #define NOTE_AS6 536 #define NOTE_B6 506 //octave 7 #define NOTE_C7 477 #define NOTE_CS7 451 #define NOTE_D7 426 #define NOTE_DS7 402 #define NOTE_E7 379 #define NOTE_F7 358 #define NOTE_FS7 338 #define NOTE_G7 319 #define NOTE_GS7 301 #define NOTE_A7 284 #define NOTE_AS7 268 #define NOTE_B7 253 //------------------------------ class Note { public: /** Construct a Note (sound) object. * * @param _note the note in range (A,a,B,b,C,c,D,d,E,e,F,f) * @param _isSharp exemple A4 or A#4 * @param _duration the time duration */ Note(char _note,bool _isSharp,char _octave,int _duration); /** Construct a Note (sound) object. * * @param str exemple "C%4" or "C#4" * @param _duration the time duration */ Note(char* str,int _duration);// exemple "C%4" or "C#4" //setter //getter /// @returns the note period (PwmOutput) int getNotePeriod_us(void)const ; /// @returns is Sharp bool getIsSharp(void) const; /// @returns the note char char getNoteChar(void) const; /// @returns the octave char getOctave(void) const; /// @returns the duartion in ms int getDuration(void) const; ///use in debugging void toString(char* buffer); protected: int calculatePeriod_us(void); void parse(const char* _str); char myNoteChar; bool myIsSharp; char myOctave; // 3->5 int myPeriod_us; int myDuration; }; //---------------------------------- class Buzzer:public PwmOut { public: /** Construct a Buzzer object. * * @param _pwmOut select the PwmOutput */ Buzzer(PinName _pwmOut); // ~Buzzer(); /// The Buzzer tone a simple sound void tone(const Note* _note); protected: }; //---------------------------------- class Music { public: /** Construct a Music object. * * @param p the RTTTL song */ Music(const char* p); ~Music(); /// play the music void play(Buzzer* _buzzer); /// @returns the music lenght int getNumbersNotes(void) const; protected: int nbNotes; vector<Note*> myTabNotes; }; #endif