X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FSound%2Fmorse.hxx;h=c5fe7cc8fa217039e53210e2691a914a6d4453ca;hb=e88e821567cc6bb6214fa0b9ee13b52e74b24ffa;hp=c4038fcac9fd17d1a4aef8d9dcf51b5b310325f8;hpb=815d49e86a845fbb58b9acf2cf8e24219b63c4e0;p=flightgear.git diff --git a/src/Sound/morse.hxx b/src/Sound/morse.hxx index c4038fcac..c5fe7cc8f 100644 --- a/src/Sound/morse.hxx +++ b/src/Sound/morse.hxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started March 2001. // -// Copyright (C) 2001 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2001 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -16,24 +16,16 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -// $Id$ #ifndef _MORSE_HXX #define _MORSE_HXX -#ifdef HAVE_CONFIG_H -# include -#endif - +#include "soundgenerator.hxx" #include - -#include -#include - -#include "soundmgr.hxx" +#include // Quoting from http://www.kluft.com/~ikluft/ham/morse-intro.html by @@ -83,42 +75,51 @@ // Hz for the VOR ident. -static const char DI = '1'; -static const char DIT = '1'; -static const char DA = '2'; -static const char DAH = '2'; -static const char end = '0'; - -static const int BYTES_PER_SECOND = 8000; -static const int BEAT_LENGTH = 240; // milleseconds (5 wpm) -// static const int BEAT_LENGTH = 92; // milleseconds (13 wpm) -static const int TRANSITION_BYTES = (int)(0.005 * BYTES_PER_SECOND); -static const int COUNT_SIZE = BYTES_PER_SECOND * BEAT_LENGTH / 1000; -static const int DIT_SIZE = 2 * COUNT_SIZE; // 2 counts -static const int DAH_SIZE = 4 * COUNT_SIZE; // 4 counts -static const int SPACE_SIZE = 3 * COUNT_SIZE; // 3 counts -static const int FREQUENCY = 1020; // AIM 1-1-7 (f) specified in Hz - // manages everything we need to know for an individual sound sample -class FGMorse { +class FGMorse : public FGSoundGenerator { + +private: - unsigned char dit[ DIT_SIZE ] ; - unsigned char dah[ DAH_SIZE ] ; + unsigned char hi_dit[ DIT_SIZE ] ; + unsigned char lo_dit[ DIT_SIZE ] ; + unsigned char hi_dah[ DAH_SIZE ] ; + unsigned char lo_dah[ DAH_SIZE ] ; unsigned char space[ SPACE_SIZE ] ; + unsigned char cust_dit[ DIT_SIZE ] ; + unsigned char cust_dah[ DAH_SIZE ] ; + + static FGMorse * _instance; + + bool cust_init( const int freq ); + // allocate and initialize sound samples + bool init(); + public: + static const int BYTES_PER_SECOND = 22050; + // static const int BEAT_LENGTH = 240; // milleseconds (5 wpm) + static const int BEAT_LENGTH = 92; // milleseconds (13 wpm) + static const int TRANSITION_BYTES = (int)(0.005 * BYTES_PER_SECOND); + static const int COUNT_SIZE = BYTES_PER_SECOND * BEAT_LENGTH / 1000; + static const int DIT_SIZE = 2 * COUNT_SIZE; // 2 counts + static const int DAH_SIZE = 4 * COUNT_SIZE; // 4 counts + static const int SPACE_SIZE = 3 * COUNT_SIZE; // 3 counts + static const int LO_FREQUENCY = 1020; // AIM 1-1-7 (f) specified in Hz + static const int HI_FREQUENCY = 1350; // AIM 1-1-7 (f) specified in Hz + FGMorse(); ~FGMorse(); - // allocate and initialize sound samples - bool init(); + static FGMorse * instance(); - // make a FGSimpleSound morse code transmission for the specified string - FGSimpleSound *make_ident( const string& id ); + // make a SimpleSound morse code transmission for the specified string + SGSoundSample *make_ident( const std::string& id, + const int freq = LO_FREQUENCY ); }; + #endif // _MORSE_HXX