Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

gs.h

Go to the documentation of this file.
00001 
00002 #ifndef __GS_H
00003 #define __GS_H
00004 
00005 #include <qobject.h>
00006 // sound includes
00007 #include <sys/soundcard.h>
00008 
00009 #define BUFSIZE 256
00010 #define NUMCHANS 7
00011 
00012 class gs : public QObject {
00013 
00014   Q_OBJECT
00015 
00016   public:
00017   gs();
00018   ~gs();
00019 
00020  private:
00021 
00022   int initial_fret;
00023   int finger[6];
00024   int tuning[6];
00025 
00026   signed short *reverb;
00027   int reverb_ptr;
00028   int reverb_max;
00029 
00030   int audio_fd;
00031   signed short audio_buf[BUFSIZE];
00032   static int note_periods[12];
00033   static int octave_step[6];
00034   int frames;
00035 
00036 
00037   // 7 channel synth
00038   signed short *tonebank0; // source of waveform
00039   signed short *tonebank1;
00040   signed short *tonebank2;
00041   signed short *tonebank3;
00042   signed short *tonebank4;
00043   signed short *tonebank5;
00044   signed short *tonebank6;
00045   int tonebank_length0;
00046   int tonebank_length1;
00047   int tonebank_length2;
00048   int tonebank_length3;
00049   int tonebank_length4;
00050   int tonebank_length5;
00051   int tonebank_length6;
00052   int pb_rate0; // playback rate or 0
00053   int pb_rate1;
00054   int pb_rate2;
00055   int pb_rate3;
00056   int pb_rate4;
00057   int pb_rate5;
00058   int pb_rate6;
00059   int pb_ratio0; // accumulator for ratio
00060   int pb_ratio1;
00061   int pb_ratio2;
00062   int pb_ratio3;
00063   int pb_ratio4;
00064   int pb_ratio5;
00065   int pb_ratio6;
00066   int pb_rsc0; // pointer to current position
00067   int pb_rsc1;
00068   int pb_rsc2;
00069   int pb_rsc3;
00070   int pb_rsc4;
00071   int pb_rsc5;
00072   int pb_rsc6;
00073   int pb_oct0; // octave
00074   int pb_oct1;
00075   int pb_oct2;
00076   int pb_oct3;
00077   int pb_oct4;
00078   int pb_oct5;
00079   int pb_oct6;
00080 
00081   void set_tonebank(int bank, signed short *buffer, int length);
00082  protected:
00083 
00084  public:
00085   static const int MUTED=7;
00086   static const int OPEN=0;
00087 
00088   // accessors
00089   int Frames(){return frames;};
00090   int Finger(int finger);
00091   int Fret(){return initial_fret;};
00092   int Playing(){
00093     if (pb_rate0 == 0 &&
00094         pb_rate1 == 0 &&
00095         pb_rate2 == 0 &&
00096         pb_rate3 == 0 &&
00097         pb_rate4 == 0 &&
00098         pb_rate5 == 0 &&
00099         pb_rate6 == 0) return 0;
00100     return 1;
00101   };
00102 
00103  public :
00104   // mutators
00105       void Reverb(int size){reverb_max = 64 * size;};
00106   void Finger(int finger, int position);
00107   void Fret(int position){initial_fret = position;};
00108   void Tuning(int t[6]);
00109   void note_start(int chan, int note, int octave);
00110   
00111   // methods
00112   int Play();
00113   void fill_buffer();
00114   void write_buffer();
00115   void Stop();
00116 };
00117 
00118 #endif
00119 
00120 
00121 
00122 
00123 

Generated on Sat Nov 5 16:17:35 2005 for OPIE by  doxygen 1.4.2