ivstprocesscontext.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------
00002 // Project     : VST SDK
00003 // Version     : 3.0
00004 //
00005 // Category    : Interfaces
00006 // Filename    : ivstprocesscontext.h
00007 // Created by  : Steinberg, 10/2005
00008 // Modified    : $Date: 2008/01/15 13:58:31 $
00009 // Description : VST Processing Context Interfaces
00010 //
00011 //-----------------------------------------------------------------------------
00012 // LICENSE
00013 // © 2008, Steinberg Media Technologies GmbH, All Rights Reserved
00014 //-----------------------------------------------------------------------------
00015 // This Software Development Kit may not be distributed in parts or its entirety  
00016 // without prior written agreement by Steinberg Media Technologies GmbH. 
00017 // This SDK must not be used to re-engineer or manipulate any technology used  
00018 // in any Steinberg or Third-party application or software module, 
00019 // unless permitted by law.
00020 // Neither the name of the Steinberg Media Technologies nor the names of its
00021 // contributors may be used to endorse or promote products derived from this 
00022 // software without specific prior written permission.
00023 // 
00024 // THIS SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "AS IS" AND
00025 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
00026 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
00027 // IN NO EVENT SHALL STEINBERG MEDIA TECHNOLOGIES GMBH BE LIABLE FOR ANY DIRECT, 
00028 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
00029 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
00030 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
00031 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
00032 // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
00033 // OF THE POSSIBILITY OF SUCH DAMAGE.
00034 //----------------------------------------------------------------------------------
00035 
00036 #ifndef __ivstprocesscontext__
00037 #define __ivstprocesscontext__
00038 
00039 #include "pluginterfaces/base/funknown.h"
00040 #include "vsttypes.h"
00041 
00042 //------------------------------------------------------------------------
00043 #include "pluginterfaces/base/falignpush.h"
00044 //------------------------------------------------------------------------
00045 
00046 //------------------------------------------------------------------------
00047 namespace Steinberg {
00048 namespace Vst {
00049 
00050 //------------------------------------------------------------------------
00052 //------------------------------------------------------------------------
00053 struct FrameRate
00054 {
00055 //------------------------------------------------------------------------
00056         enum FrameRateFlags
00057         {
00058                 kPullDownRate = 1 << 0, 
00059                 kDropRate     = 1 << 1  
00060         };
00061 //------------------------------------------------------------------------
00062         uint32 framesPerSecond;         
00063         uint32 flags;                           
00064 //------------------------------------------------------------------------
00065 };
00066 
00067 //------------------------------------------------------------------------
00076 //------------------------------------------------------------------------
00077 struct Chord
00078 {
00079 //------------------------------------------------------------------------
00080         uint8 keyNote;          
00081         uint8 rootNote;         
00082         int16 chordMask;        
00083 
00084         enum Mask {
00085                 kChordMask = 0x0FFF,    
00086                 kReservedMask = 0xF000  
00087         };
00088 
00089 //------------------------------------------------------------------------
00090 };
00091 
00092 //------------------------------------------------------------------------
00094 //------------------------------------------------------------------------
00095 struct ProcessContext
00096 {
00097 //------------------------------------------------------------------------
00099         enum TransportStates
00100         {
00101                 kPlaying          = 1 << 1,             
00102                 kCycleActive      = 1 << 2,             
00103                 kRecording        = 1 << 3,             
00104         
00105                 kSystemTimeValid  = 1 << 8,             
00106                 kContTimeValid    = 1 << 17,    
00107 
00108                 kProjectTimeMusicValid = 1 << 9,
00109                 kBarPositionValid = 1 << 11,    
00110                 kCycleValid       = 1 << 12,    
00111 
00112                 kTempoValid       = 1 << 10,    
00113                 kTimeSigValid     = 1 << 13,    
00114                 kChordValid       = 1 << 18,    
00115 
00116                 kSmpteValid       = 1 << 14,    
00117                 kClockValid       = 1 << 15             
00118         };
00119 
00120         uint32 state;                                   
00121         
00122         double sampleRate;                              
00123         TSamples projectTimeSamples;    
00124 
00125         int64 systemTime;                               
00126         TSamples continousTimeSamples;  
00127         
00128         TQuarterNotes projectTimeMusic; 
00129         TQuarterNotes barPositionMusic; 
00130         TQuarterNotes cycleStartMusic;  
00131         TQuarterNotes cycleEndMusic;    
00132 
00133         double tempo;                                   
00134         int32 timeSigNumerator;                 
00135         int32 timeSigDenominator;               
00136 
00137         Chord chord;                                    
00138 
00139         int32 smpteOffsetSubframes;             
00140         FrameRate frameRate;                    
00141 
00142         int32 samplesToNextClock;               
00143 //------------------------------------------------------------------------
00144 };
00145 
00146 //------------------------------------------------------------------------
00147 } // namespace Vst
00148 } // namespace Steinberg
00149 
00150 //------------------------------------------------------------------------
00151 #include "pluginterfaces/base/falignpop.h"
00152 //------------------------------------------------------------------------
00153 
00154 #endif // __ivstprocesscontext__
Empty

Copyright ©2008 Steinberg Media Technologies. All Rights Reserved.