--- linuxsampler/trunk/src/engines/gig/Engine.h 2004/06/06 20:57:28 112 +++ linuxsampler/trunk/src/engines/gig/Engine.h 2004/09/07 09:32:21 233 @@ -69,8 +69,11 @@ virtual void SendControlChange(uint8_t Controller, uint8_t Value); virtual float Volume(); virtual void Volume(float f); + virtual uint Channels(); virtual void Connect(AudioOutputDevice* pAudioOut); virtual void DisconnectAudioOutputDevice(); + virtual void SetOutputChannel(uint EngineAudioChannel, uint AudioDeviceChannel); + virtual int OutputChannel(uint EngineAudioChannel); virtual int RenderAudio(uint Samples); virtual uint VoiceCount(); virtual uint VoiceCountMax(); @@ -84,6 +87,7 @@ virtual String EngineName(); virtual String InstrumentFileName(); virtual int InstrumentIndex(); + virtual int InstrumentStatus(); // abstract methods derived from interface class 'InstrumentConsumer' virtual void ResourceToBeUpdated(::gig::Instrument* pResource, void*& pUpdateArg); @@ -100,6 +104,12 @@ static InstrumentResourceManager Instruments; AudioOutputDevice* pAudioOutputDevice; + float* pOutputLeft; ///< Audio output channel buffer (left) + float* pOutputRight; ///< Audio output channel buffer (right) + int AudioDeviceChannelLeft; ///< audio device channel number to which the left channel is connected to + int AudioDeviceChannelRight; ///< audio device channel number to which the right channel is connected to + uint SampleRate; ///< Sample rate of the engines output audio signal (in Hz) + uint MaxSamplesPerCycle; ///< Size of each audio output buffer DiskThread* pDiskThread; uint8_t ControllerTable[128]; ///< Reflects the current values (0-127) of all MIDI controllers for this engine / sampler channel. RingBuffer* pEventQueue; ///< Input event queue. @@ -126,11 +136,13 @@ ConditionServer EngineDisabled; String InstrumentFile; int InstrumentIdx; + int InstrumentStat; void ProcessNoteOn(Event* pNoteOnEvent); void ProcessNoteOff(Event* pNoteOffEvent); void ProcessPitchbend(Event* pPitchbendEvent); void ProcessControlChange(Event* pControlChangeEvent); + void LaunchVoice(Event* pNoteOnEvent, int iLayer = 0); void KillVoice(Voice* pVoice); void ResetSynthesisParameters(Event::destination_t dst, float val); void ResetInternal();