--- libgig/trunk/src/gig.h 2005/05/08 16:19:34 518
+++ libgig/trunk/src/gig.h 2005/09/17 14:24:45 773
@@ -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)
@@ -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).
@@ -443,6 +445,9 @@
// Methods
double GetVelocityAttenuation(uint8_t MIDIKeyVelocity);
+ double GetVelocityRelease(uint8_t MIDIKeyVelocity);
+ double GetVelocityCutoff(uint8_t MIDIKeyVelocity);
+
protected:
DimensionRegion(RIFF::List* _3ewl);
~DimensionRegion();
@@ -481,8 +486,11 @@
static uint Instances; ///< Number of DimensionRegion instances.
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);
double* CreateVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling);
};
@@ -534,8 +542,9 @@
unsigned long WorstCaseFrameSize; ///< For compressed samples only: size (in bytes) of the largest possible sample frame.
unsigned long SamplesPerFrame; ///< For compressed samples only: number of samples in a full sample frame.
buffer_t RAMCache; ///< Buffers samples (already uncompressed) in RAM.
+ unsigned long FileNo; ///< File number (> 0 when sample is stored in an extension file, 0 when it's in the gig)
- Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset);
+ Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset, unsigned long fileNo = 0);
~Sample();
/**
* Swaps the order of the data words in the given memory area
@@ -720,6 +729,8 @@
void LoadSamples(progress_t* pProgress = NULL);
void LoadInstruments(progress_t* pProgress = NULL);
friend class Region;
+
+ std::list ExtensionFiles;
};
/** Will be thrown whenever a gig specific error occurs while trying to access a Gigasampler File. */