--- libgig/trunk/src/gig.h 2005/06/19 15:18:59 666 +++ libgig/trunk/src/gig.h 2005/09/18 12:41:56 774 @@ -148,6 +148,7 @@ /** Defines how the filter cutoff frequency is controlled by. */ typedef enum { vcf_cutoff_ctrl_none = 0x00, + vcf_cutoff_ctrl_none2 = 0x01, ///< The difference betwheen none and none2 is unknown vcf_cutoff_ctrl_modwheel = 0x81, ///< Modulation Wheel (MIDI Controller 1) vcf_cutoff_ctrl_effect1 = 0x8c, ///< Effect Controller 1 (Coarse, MIDI Controller 12) vcf_cutoff_ctrl_effect2 = 0x8d, ///< Effect Controller 2 (Coarse, MIDI Controller 13) @@ -269,7 +270,7 @@ uint8_t zones; ///< Number of zones the dimension has. split_type_t split_type; ///< Intended for internal usage: will be used to convert a dimension value into the corresponding dimension bit number. range_t* ranges; ///< Intended for internal usage: Points to the beginning of a range_t array which reflects the value ranges of each dimension zone (only if custom defined ranges are defined, is NULL otherwise). - unsigned int zone_size; ///< Intended for internal usage: reflects the size of each zone (128/zones) for normal split types only, 0 otherwise. + float zone_size; ///< Intended for internal usage: reflects the size of each zone (128/zones) for normal split types only, 0 otherwise. }; /** Defines which frequencies are filtered by the VCF. */ @@ -403,9 +404,10 @@ bool VCFEnabled; ///< If filter should be used. vcf_type_t VCFType; ///< Defines the general filter characteristic (lowpass, highpass, bandpass, etc.). vcf_cutoff_ctrl_t VCFCutoffController; ///< Specifies which external controller has influence on the filter cutoff frequency. + bool VCFCutoffControllerInvert; ///< Inverts values coming from the defined cutoff controller uint8_t VCFCutoff; ///< Max. cutoff frequency. curve_type_t VCFVelocityCurve; ///< Defines a transformation curve for the incoming velocity values, affecting the VCF. - uint8_t VCFVelocityScale; ///< (0-127) Amount velocity controls VCF cutoff frequency (only if no other VCF cutoff controller is defined). + uint8_t VCFVelocityScale; ///< (0-127) Amount velocity controls VCF cutoff frequency (only if no other VCF cutoff controller is defined, otherwise this is the minimum cutoff). uint8_t VCFVelocityDynamicRange; ///< 0x04 = lowest, 0x00 = highest uint8_t VCFResonance; ///< Firm internal filter resonance weight. bool VCFResonanceDynamic; ///< If true: Increases the resonance Q according to changes of controllers that actually control the VCF cutoff frequency (EG2, ext. VCF MIDI controller). @@ -444,6 +446,7 @@ // Methods double GetVelocityAttenuation(uint8_t MIDIKeyVelocity); double GetVelocityRelease(uint8_t MIDIKeyVelocity); + double GetVelocityCutoff(uint8_t MIDIKeyVelocity); protected: DimensionRegion(RIFF::List* _3ewl); @@ -484,6 +487,7 @@ static VelocityTableMap* pVelocityTables; ///< Contains the tables corresponding to the various velocity parameters (VelocityResponseCurve and VelocityResponseDepth). double* pVelocityAttenuationTable; ///< Points to the velocity table corresponding to the velocity parameters of this DimensionRegion. double* pVelocityReleaseTable; ///< Points to the velocity table corresponding to the release velocity parameters of this DimensionRegion + double* pVelocityCutoffTable; ///< Points to the velocity table corresponding to the filter velocity parameters of this DimensionRegion leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController); double* GetVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling);