| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*
- * Copyright (c) 1983-2013 Richard Dobson and Composers Desktop Project Ltd
- * http://people.bath.ac.uk/masrwd
- * http://www.composersdesktop.com
- * This file is part of the CDP System.
- * The CDP System is free software; you can redistribute it
- * and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * The CDP System is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with the CDP System; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
- // wavetable.h: interface for the fast_lfo class.
- // Feb 2009 added gaussian option to random
- //FWD 3.20: eliminate warning of unused private var (phsmask)
- //////////////////////////////////////////////////////////////////////
- #if !defined(AFX_WAVETABLE_H__2F961225_3FF4_11D2_96D4_444553540000__INCLUDED_)
- #define AFX_WAVETABLE_H__2F961225_3FF4_11D2_96D4_444553540000__INCLUDED_
- #if _MSC_VER >= 1000
- #pragma once
- #endif // _MSC_VER >= 1000
- typedef enum lfowavetype {LFO_SINE,LFO_TRIANGLE,LFO_SAWUP,LFO_SAWDOWN,LFO_SQUARE,LFO_RANDOM,LFO_RND_SH,
- LFO_RAND_TPDF,LFO_RAND_GAUSS,LFO_RAND_EXP, LFO_RANDH_TPDF,
- /*LFO_RANDH_GAUSS,LFO_RANDH_EXP, */
- LFO_NUM_WAVES } LfoWaveType;
- enum {PVS_LFO_FREQ_LORANGE, PVS_LFO_FREQ_HIRANGE};
- typedef struct lfoparam
- {
- double freq;
- double modrange;
- } LfoParam;
- class fastlfo {
- typedef double (fastlfo:: *tickfunc)(void);
- public:
- fastlfo();
- virtual ~fastlfo() {}
- long init(double srate, double normphase = 0.0,long seedval = 0,unsigned long ksmps = 1);
- double tick(void) { return (this->*tf)(); }
- tickfunc tf;
- void set_freq(double freq) { param.freq = freq; }
- double get_freq(void) const { return param.freq; }
- void set_mod(double mod) { param.modrange = mod; }
- double get_mod(void) const { return param.modrange;}
- void reset(double phase);
- bool set_WaveType(LfoWaveType type);
- void set_tpdf() { tpdf = true; gauss = biexp = false;}
- void set_white() { tpdf = gauss = biexp = false;}
- void set_biexp() { tpdf = gauss = false; biexp = true;}
- void set_flat() { tpdf = gauss = biexp = false;}
- void set_gaussian() { tpdf = biexp = false; gauss = true;}
- void sync_phase(double phase, double offset, double phaseincr);
- void set_sync(bool onoff) { b_sync = onoff;}
- double csrand();
- private:
- double sinetick(void);
- double tritick(void);
- double squaretick(void);
- double sawuptick(void);
- double sawdowntick(void);
- double randomtick(void);
- double randhtick(void);
- double rand_tpdf_tick(void);
- double rand_gauss_tick(void);
- double rand_exp_tick(void);
- double randh_tpdf_tick(void);
- // double randh_gauss_tick(void);
- // double randh_exp_tick(void);
- long randint31(long seed31);
- double m_srate, m_inv_srate;
- double twopiovrsr;
- double curfreq;
- double curphase;
- double incr;
- LfoParam param;
- LfoWaveType m_cur_WaveType;
- /* vars for random oscs, with a little help from Csound!*/
- long phs;
- long kicvt;
- // long phsmask; // currently not used
- long rand;
- double num1,num2;
- double dfdmax;
- /* for krate output */
- unsigned long ksamps;
- unsigned long kcount;
- double lastval;
- bool tpdf;
- bool gauss;
- bool biexp;
- // for lfo sync
- bool b_sync;
- double offset;
- // for random oscs
- long curphs;
- long phs_incr;
- long phs_offset;
- /* for csrand */
- long csseed;
- };
- #endif // !defined(AFX_WAVETABLE_H__2F961225_3FF4_11D2_96D4_444553540000__INCLUDED_)
|