From: <pst...@us...> - 2011-08-08 00:13:06
|
Revision: 903 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=903&view=rev Author: pstieber Date: 2011-08-08 00:13:00 +0000 (Mon, 08 Aug 2011) Log Message: ----------- Made updates to the frequency table code. Modified Paths: -------------- trunk/jazz/src/FrequencyTable.cpp trunk/jazz/src/FrequencyTable.h trunk/jazz/src/Signal2.cpp Modified: trunk/jazz/src/FrequencyTable.cpp =================================================================== --- trunk/jazz/src/FrequencyTable.cpp 2011-08-07 23:17:05 UTC (rev 902) +++ trunk/jazz/src/FrequencyTable.cpp 2011-08-08 00:13:00 UTC (rev 903) @@ -27,27 +27,31 @@ using namespace std; -FreqTab::FreqTab() +//***************************************************************************** +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +JZFrequencyTable::JZFrequencyTable() { - double fac = pow(2.0, 1.0 / 12.0); - double frq = 440 * pow(fac, 3.0) / 32.0; - tab.reserve(128); - for (int i = 0; i < 128; i++) + double Factor = pow(2.0, 1.0 / 12.0); + double Frequency = 440 * pow(Factor, 3.0) / 32.0; + mFrequencyTable.reserve(128); + for (int i = 0; i < 128; ++i) { - tab.push_back(frq); - frq *= fac; + mFrequencyTable.push_back(Frequency); + Frequency *= Factor; } } -inline double dabs(double a, double b) +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +size_t JZFrequencyTable::GetKey(double Frequency) { - return a > b ? a - b : b - a; -} + // Do a binary search. + vector<double>::iterator Position = + lower_bound(mFrequencyTable.begin(), mFrequencyTable.end(), Frequency); -int FreqTab::key(double f) -{ - // do a binary search - vector<double>::iterator pos = lower_bound(tab.begin(), tab.end(), f); - // todo: if f is only a very little bigger than *pos, f is nearer to pos-1 - return pos - tab.begin(); + // TODO: If Frequency is only a very little bigger than *Position, Frequency + // is nearer to Position - 1. + return Position - mFrequencyTable.begin(); } Modified: trunk/jazz/src/FrequencyTable.h =================================================================== --- trunk/jazz/src/FrequencyTable.h 2011-08-07 23:17:05 UTC (rev 902) +++ trunk/jazz/src/FrequencyTable.h 2011-08-08 00:13:00 UTC (rev 903) @@ -25,22 +25,24 @@ #include <vector> -class FreqTab +//***************************************************************************** +//***************************************************************************** +class JZFrequencyTable { public: - FreqTab(); + JZFrequencyTable(); - int key(double frq); + size_t GetKey(double Frequency); - double freq(int key) const + double GetFrequency(int Key) const { - return tab[key]; + return mFrequencyTable[Key]; } private: - std::vector<double> tab; + std::vector<double> mFrequencyTable; }; #endif // !defined(JZ_FREQUENCYTABLE_H) Modified: trunk/jazz/src/Signal2.cpp =================================================================== --- trunk/jazz/src/Signal2.cpp 2011-08-07 23:17:05 UTC (rev 902) +++ trunk/jazz/src/Signal2.cpp 2011-08-08 00:13:00 UTC (rev 903) @@ -190,20 +190,20 @@ } void sig_wavsynth( - JZSample &spl, // destin - double duration, // length in seconds - int midi_key, // base frequency + JZSample &spl, // destin + double duration, // length in seconds + int midi_key, // base frequency double fshift, // frequeny modulation factor, 0 = off - int ntables, // number of wavetables to be mixed - JZRndArray *arr[][4], // (fft, vol, pitch, pan) * N + int ntables, // number of wavetables to be mixed + JZRndArray *arr[][4], // (fft, vol, pitch, pan) * N int noisegen // first array is noise filter ) { long sr = spl.GetSamplingRate(); long ch = spl.GetChannelCount(); JZSigSynth synth(sr, ch); - FreqTab ft; - double freq = ft.freq(midi_key); + JZFrequencyTable FrequencyTable; + double freq = FrequencyTable.GetFrequency(midi_key); JZFloatSample obuf(ch, sr); tFloatIter *osig = new tFloatIter(synth, obuf); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |