| 
							- /*
 -   ZynAddSubFX - a software synthesizer
 - 
 -   Note.h - Abstract Base Class for synthesizers
 -   Copyright (C) 2010-2010 Mark McCurry
 -   Author: Mark McCurry
 - 
 -   This program is free software; you can redistribute it and/or modify
 -   it under the terms of version 2 of the GNU General Public License
 -   as published by the Free Software Foundation.
 - 
 -   This program 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 General Public License (version 2 or later) for more details.
 - 
 -   You should have received a copy of the GNU General Public License (version 2)
 -   along with this program; if not, write to the Free Software Foundation,
 -   Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 - 
 - */
 - #ifndef SYNTH_NOTE_H
 - #define SYNTH_NOTE_H
 - #include "../globals.h"
 - #include "../Params/FilterParams.h"
 - 
 - class SynthNote
 - {
 -     public:
 -         SynthNote(float freq, float vel, int port, int note, bool quiet);
 -         virtual ~SynthNote() {}
 - 
 -         /**Compute Output Samples
 -          * @return 0 if note is finished*/
 -         virtual int noteout(float *outl, float *outr) = 0;
 - 
 -         //TODO fix this spelling error [noisey commit]
 -         /**Release the key for the note and start release portion of envelopes.*/
 -         virtual void relasekey() = 0;
 - 
 -         /**Return if note is finished.
 -          * @return finished=1 unfinished=0*/
 -         virtual int finished() const = 0;
 - 
 -         virtual void legatonote(float freq, float velocity,
 -                                 int portamento_, int midinote_,
 -                                 bool externcall) = 0;
 -         /* For polyphonic aftertouch needed */
 -         void setVelocity(float velocity_);
 -     protected:
 -         // Legato transitions
 -         class Legato
 -         {
 -             public:
 -                 Legato(float freq, float vel, int port,
 -                        int note, bool quiet);
 - 
 -                 void apply(SynthNote ¬e, float *outl, float *outr);
 -                 int update(float freq, float velocity, int portamento_,
 -                            int midinote_, bool externalcall);
 - 
 -             private:
 -                 bool      silent;
 -                 float     lastfreq;
 -                 LegatoMsg msg;
 -                 int       decounter;
 -                 struct { // Fade In/Out vars
 -                     int   length;
 -                     float m, step;
 -                 } fade;
 -                 struct { // Note parameters
 -                     float freq, vel;
 -                     int   portamento, midinote;
 -                 } param;
 - 
 -             public: /* Some get routines for legatonote calls (aftertouch feature)*/
 -                 float getFreq() {return param.freq; }
 -                 float getVelocity() {return param.vel; }
 -                 int getPortamento() {return param.portamento; }
 -                 int getMidinote() {return param.midinote; }
 -                 void setSilent(bool silent_) {silent = silent_; }
 -                 void setDecounter(int decounter_) {decounter = decounter_; }
 -         } legato;
 - };
 - 
 - #endif
 
 
  |