Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


Skini.h

00001 /***************************************************/
00026 /***************************************************/
00027 
00028 #ifndef STK_SKINI_H
00029 #define STK_SKINI_H
00030 
00031 #include "Stk.h"
00032 #include <vector>
00033 #include <string>
00034 #include <fstream>
00035 
00036 class Skini : public Stk
00037 {
00038  public:
00039 
00041   struct Message { 
00042     long type;                         
00043     long channel;                      
00044     StkFloat time;                     
00045     std::vector<StkFloat> floatValues; 
00046     std::vector<long> intValues;       
00047     std::string remainder;             
00049     // Default constructor.
00050     Message()
00051       :type(0), channel(0), time(0.0), floatValues(2), intValues(2) {}
00052   };
00053 
00055   Skini();
00056 
00058   ~Skini();
00059 
00061 
00065   bool setFile( std::string fileName );
00066 
00068 
00074   long nextMessage( Skini::Message& message );
00075 
00077 
00081   long parseString( std::string& line, Skini::Message& message );
00082 
00084   static std::string whatsThisType(long type);
00085 
00087   static std::string whatsThisController(long number);
00088 
00089  protected:
00090 
00091   void tokenize( const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters );
00092 
00093   std::ifstream file_;
00094 };
00095 
00096 static const double Midi2Pitch[129] = {
00097 8.18,8.66,9.18,9.72,10.30,10.91,11.56,12.25,
00098 12.98,13.75,14.57,15.43,16.35,17.32,18.35,19.45,
00099 20.60,21.83,23.12,24.50,25.96,27.50,29.14,30.87,
00100 32.70,34.65,36.71,38.89,41.20,43.65,46.25,49.00,
00101 51.91,55.00,58.27,61.74,65.41,69.30,73.42,77.78,
00102 82.41,87.31,92.50,98.00,103.83,110.00,116.54,123.47,
00103 130.81,138.59,146.83,155.56,164.81,174.61,185.00,196.00,
00104 207.65,220.00,233.08,246.94,261.63,277.18,293.66,311.13,
00105 329.63,349.23,369.99,392.00,415.30,440.00,466.16,493.88,
00106 523.25,554.37,587.33,622.25,659.26,698.46,739.99,783.99,
00107 830.61,880.00,932.33,987.77,1046.50,1108.73,1174.66,1244.51,
00108 1318.51,1396.91,1479.98,1567.98,1661.22,1760.00,1864.66,1975.53,
00109 2093.00,2217.46,2349.32,2489.02,2637.02,2793.83,2959.96,3135.96,
00110 3322.44,3520.00,3729.31,3951.07,4186.01,4434.92,4698.64,4978.03,
00111 5274.04,5587.65,5919.91,6271.93,6644.88,7040.00,7458.62,7902.13,
00112 8372.02,8869.84,9397.27,9956.06,10548.08,11175.30,11839.82,12543.85,
00113 13289.75};
00114 
00115 #endif
00116 
00117 

The Synthesis ToolKit in C++ (STK)
©1995-2007 Perry R. Cook and Gary P. Scavone. All Rights Reserved.