| 
							- //------------------------------------------------------------------------
 - // Project     : VST SDK
 - //
 - // Category    : Interfaces
 - // Filename    : pluginterfaces/vst/ivstevents.h
 - // Created by  : Steinberg, 11/2005
 - // Description : VST Events Interfaces
 - //
 - //-----------------------------------------------------------------------------
 - // This file is part of a Steinberg SDK. It is subject to the license terms
 - // in the LICENSE file found in the top-level directory of this distribution
 - // and at www.steinberg.net/sdklicenses. 
 - // No part of the SDK, including this file, may be copied, modified, propagated,
 - // or distributed except according to the terms contained in the LICENSE file.
 - //-----------------------------------------------------------------------------
 - 
 - #pragma once
 - 
 - #include "pluginterfaces/vst/ivstprocesscontext.h"
 - #include "pluginterfaces/vst/ivstnoteexpression.h"
 - 
 - //------------------------------------------------------------------------
 - #include "pluginterfaces/base/falignpush.h"
 - //------------------------------------------------------------------------
 - 
 - //------------------------------------------------------------------------
 - namespace Steinberg {
 - namespace Vst {
 - //------------------------------------------------------------------------
 - /** Note-on event specific data. Used in \ref Event (union)*/
 - struct NoteOnEvent
 - {
 - 	int16 channel;		///< channel index in event bus
 - 	int16 pitch;		///< range [0, 127] = [C-2, G8] with A3=440Hz
 - 	float tuning;		///< 1.f = +1 cent, -1.f = -1 cent
 - 	float velocity;		///< range [0.0, 1.0]
 - 	int32 length;		///< in sample frames (optional, Note Off has to follow in any case!)
 - 	int32 noteId;		///< note identifier (if not available then -1)
 - };
 - 
 - //------------------------------------------------------------------------
 - /** Note-off event specific data. Used in \ref Event (union)*/
 - struct NoteOffEvent
 - {
 - 	int16 channel;		///< channel index in event bus
 - 	int16 pitch;		///< range [0, 127] = [C-2, G8] with A3=440Hz
 - 	float velocity;		///< range [0.0, 1.0]
 - 	int32 noteId;		///< associated noteOn identifier (if not available then -1)
 - 	float tuning;		///< 1.f = +1 cent, -1.f = -1 cent
 - };
 - 
 - //------------------------------------------------------------------------
 - /** Data event specific data. Used in \ref Event (union)*/
 - struct DataEvent
 - {
 - 	uint32 size;		///< size in bytes of the data block bytes
 - 	uint32 type;		///< type of this data block (see \ref DataTypes)
 - 	const uint8* bytes;	///< pointer to the data block
 - 
 - 	/** Value for DataEvent::type */
 - 	enum DataTypes
 - 	{
 - 		kMidiSysEx = 0	///< for MIDI system exclusive message
 - 	};
 - };
 - 
 - //------------------------------------------------------------------------
 - /** PolyPressure event specific data. Used in \ref Event (union)*/
 - struct PolyPressureEvent
 - {
 - 	int16 channel;		///< channel index in event bus
 - 	int16 pitch;		///< range [0, 127] = [C-2, G8] with A3=440Hz
 - 	float pressure;		///< range [0.0, 1.0]
 - 	int32 noteId;		///< event should be applied to the noteId (if not -1)
 - };
 - 
 - //------------------------------------------------------------------------
 - /** Chord event specific data. Used in \ref Event (union)*/
 - struct ChordEvent
 - {
 - 	int16 root;			///< range [0, 127] = [C-2, G8] with A3=440Hz
 - 	int16 bassNote;		///< range [0, 127] = [C-2, G8] with A3=440Hz
 - 	int16 mask;			///< root is bit 0
 - 	uint16 textLen;		///< the number of characters (TChar) between the beginning of text and the terminating
 - 						///< null character (without including the terminating null character itself)
 - 	const TChar* text;	///< UTF-16, null terminated Hosts Chord Name
 - };
 - 
 - //------------------------------------------------------------------------
 - /** Scale event specific data. Used in \ref Event (union)*/
 - struct ScaleEvent
 - {
 - 	int16 root;			///< range [0, 127] = root Note/Transpose Factor
 - 	int16 mask;			///< Bit 0 =  C,  Bit 1 = C#, ... (0x5ab5 = Major Scale)
 - 	uint16 textLen;		///< the number of characters (TChar) between the beginning of text and the terminating
 - 						///< null character (without including the terminating null character itself)
 - 	const TChar* text;	///< UTF-16, null terminated, Hosts Scale Name
 - };
 - 
 - //------------------------------------------------------------------------
 - /** Legacy MIDI CC Out event specific data. Used in \ref Event (union)*/
 - struct LegacyMIDICCOutEvent
 - {
 - 	uint8 controlNumber;///< see enum ControllerNumbers [0, 255]
 - 	int8 channel;		///< channel index in event bus [0, 15]
 - 	int8 value;			///< value of Controller [0, 127]
 - 	int8 value2;		///< [0, 127] used for pitch bend (kPitchBend) and polyPressure (kCtrlPolyPressure)
 - };
 - 
 - //------------------------------------------------------------------------
 - /** Event */
 - //------------------------------------------------------------------------
 - struct Event
 - {
 - 	int32 busIndex;				///< event bus index
 - 	int32 sampleOffset;			///< sample frames related to the current block start sample position
 - 	TQuarterNotes ppqPosition;	///< position in project
 - 	uint16 flags;				///< combination of \ref EventFlags
 - 
 - 	/** Event Flags - used for Event::flags */
 - 	enum EventFlags
 - 	{
 - 		kIsLive = 1 << 0,			///< indicates that the event is played live (directly from keyboard)
 - 
 - 		kUserReserved1 = 1 << 14,	///< reserved for user (for internal use)
 - 		kUserReserved2 = 1 << 15	///< reserved for user (for internal use)
 - 	};
 - 
 - 	/**  Event Types - used for Event::type */
 - 	enum EventTypes
 - 	{
 - 		kNoteOnEvent       = 0,			///< is \ref NoteOnEvent
 - 		kNoteOffEvent      = 1,			///< is \ref NoteOffEvent
 - 		kDataEvent         = 2,			///< is \ref DataEvent
 - 		kPolyPressureEvent = 3,			///< is \ref PolyPressureEvent
 - 		kNoteExpressionValueEvent = 4,	///< is \ref NoteExpressionValueEvent
 - 		kNoteExpressionTextEvent  = 5,	///< is \ref NoteExpressionTextEvent
 - 		kChordEvent        = 6,			///< is \ref ChordEvent
 - 		kScaleEvent        = 7,			///< is \ref ScaleEvent
 - 		kLegacyMIDICCOutEvent = 65535	///< is \ref LegacyMIDICCOutEvent
 - 	};
 - 
 - 	uint16 type;				///< a value from \ref EventTypes
 - 	union
 - 	{
 - 		NoteOnEvent noteOn;								///< type == kNoteOnEvent
 - 		NoteOffEvent noteOff;							///< type == kNoteOffEvent
 - 		DataEvent data;									///< type == kDataEvent
 - 		PolyPressureEvent polyPressure;					///< type == kPolyPressureEvent
 - 		NoteExpressionValueEvent noteExpressionValue;	///< type == kNoteExpressionValueEvent
 - 		NoteExpressionTextEvent noteExpressionText;		///< type == kNoteExpressionTextEvent
 - 		ChordEvent chord;								///< type == kChordEvent
 - 		ScaleEvent scale;								///< type == kScaleEvent
 - 		LegacyMIDICCOutEvent midiCCOut;					///< type == kLegacyMIDICCOutEvent
 - 	};
 - };
 - 
 - //------------------------------------------------------------------------
 - /** List of events to process.
 - \ingroup vstIHost vst300
 - - [host imp]
 - - [released: 3.0.0]
 - - [mandatory]
 - 
 - \see ProcessData, Event */
 - //------------------------------------------------------------------------
 - class IEventList: public FUnknown
 - {
 - public:
 - //------------------------------------------------------------------------
 - 	/** Returns the count of events. */
 - 	virtual int32 PLUGIN_API getEventCount () = 0;
 - 
 - 	/** Gets parameter by index. */
 - 	virtual tresult PLUGIN_API getEvent (int32 index, Event& e /*out*/) = 0;
 - 
 - 	/** Adds a new event. */
 - 	virtual tresult PLUGIN_API addEvent (Event& e /*in*/) = 0;
 - 
 - //------------------------------------------------------------------------
 - 	static const FUID iid;
 - };
 - 
 - DECLARE_CLASS_IID (IEventList, 0x3A2C4214, 0x346349FE, 0xB2C4F397, 0xB9695A44)
 - 
 - //------------------------------------------------------------------------
 - } // namespace Vst
 - } // namespace Steinberg
 - 
 - //------------------------------------------------------------------------
 - #include "pluginterfaces/base/falignpop.h"
 - //------------------------------------------------------------------------
 
 
  |