vsttypes.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------
00002 // Project     : VST SDK
00003 // Version     : 3.0
00004 //
00005 // Category    : Interfaces
00006 // Filename    : vsttypes.h
00007 // Created by  : Steinberg, 12/2005
00008 // Modified    : $Date: 2008/01/16 07:48:01 $
00009 // Description : common defines
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 __vsttypes__
00037 #define __vsttypes__
00038 
00039 #include "pluginterfaces/base/ftypes.h"
00040 #include "pluginterfaces/base/ustring.h"
00041 
00042 //------------------------------------------------------------------------
00043 namespace Steinberg {
00044 namespace Vst {
00045 
00046 //------------------------------------------------------------------------
00047 #ifndef kVstVersionString
00048 #define kVstVersionString       "VST 3.0"       
00049 #endif
00050 
00051 //------------------------------------------------------------------------
00052 // string types
00053 //------------------------------------------------------------------------
00054 typedef char16 TChar;                   
00055 typedef TChar String128[128];   
00056 typedef const char8* CString;   
00057 
00058 //------------------------------------------------------------------------
00059 // general 
00060 //------------------------------------------------------------------------
00061 typedef int32 MediaType;                
00062 typedef int32 BusDirection;             
00063 typedef int32 BusType;                  
00064 typedef int32 IoMode;                   
00065 typedef int32 UnitID;                   
00066 typedef double ParamValue;              
00067 typedef uint32 ParamID;                 
00068 typedef int32 ProgramListID;    
00069 typedef int16 CtrlNumber;               
00070 
00071 typedef double TQuarterNotes;   
00072 typedef int64 TSamples;                 
00073 
00074 //------------------------------------------------------------------------
00075 // audio types
00076 //------------------------------------------------------------------------
00077 typedef float Sample32;                         
00078 typedef double Sample64;                        
00079 typedef double SampleRate;                      
00080 typedef uint64 SpeakerArrangement;      
00081 
00082 //------------------------------------------------------------------------
00083 // restart flags
00084 //------------------------------------------------------------------------
00085 enum RestartFlags
00086 {
00087         kReloadComponent        = 1 << 0,       
00088         kIoChanged                      = 1 << 1,       
00089         kParamValuesChanged     = 1 << 2,       
00090         kLatencyChanged         = 1 << 3,       
00091         kParamTitlesChanged     = 1 << 4        
00092 };
00093 
00094 //------------------------------------------------------------------------
00096 //------------------------------------------------------------------------
00097 enum Speaker
00098 {
00099 //------------------------------------------------------------------------
00100         kSpeakerL    = 1 << 0,          
00101         kSpeakerR    = 1 << 1,          
00102         kSpeakerC    = 1 << 2,          
00103         kSpeakerLfe  = 1 << 3,          
00104         kSpeakerLs   = 1 << 4,          
00105         kSpeakerRs   = 1 << 5,          
00106         kSpeakerLc   = 1 << 6,          
00107         kSpeakerRc   = 1 << 7,          
00108         kSpeakerS    = 1 << 8,          
00109         kSpeakerCs   = kSpeakerS,       
00110         kSpeakerSl   = 1 << 9,          
00111         kSpeakerSr   = 1 << 10,         
00112         kSpeakerTm   = 1 << 11,         
00113         kSpeakerTfl  = 1 << 12,         
00114         kSpeakerTfc  = 1 << 13,         
00115         kSpeakerTfr  = 1 << 14,         
00116         kSpeakerTrl  = 1 << 15,         
00117         kSpeakerTrc  = 1 << 16,         
00118         kSpeakerTrr  = 1 << 17,         
00119         kSpeakerLfe2 = 1 << 18,         
00120         kSpeakerM    = 1 << 19,         
00121         
00122         kSpeakerW        = 1 << 20,             
00123         kSpeakerX        = 1 << 21,             
00124         kSpeakerY        = 1 << 22,             
00125         kSpeakerZ        = 1 << 23,             
00126 
00127         kSpeakerTsl      = 1 << 24,             
00128         kSpeakerTsr      = 1 << 25,             
00129         kSpeakerLcs  = 1 << 26,         
00130         kSpeakerRcs  = 1 << 27          
00131         
00132 //------------------------------------------------------------------------
00133 };
00134 
00135 //------------------------------------------------------------------------
00137 //------------------------------------------------------------------------
00138 namespace SpeakerArr
00139 {
00140 const SpeakerArrangement kEmpty                  = 0;          
00141 const SpeakerArrangement kMono                   = kSpeakerM;  
00142 const SpeakerArrangement kStereo                 = kSpeakerL  | kSpeakerR;    
00143 const SpeakerArrangement kStereoSurround = kSpeakerLs | kSpeakerRs;       
00144 const SpeakerArrangement kStereoCenter   = kSpeakerLc | kSpeakerRc;   
00145 const SpeakerArrangement kStereoSide     = kSpeakerSl | kSpeakerSr;       
00146 const SpeakerArrangement kStereoCLfe     = kSpeakerC  | kSpeakerLfe;  
00147 const SpeakerArrangement k30Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC;  
00148 const SpeakerArrangement k30Music                = kSpeakerL  | kSpeakerR | kSpeakerS;  
00149 const SpeakerArrangement k31Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe;  
00150 const SpeakerArrangement k31Music                = kSpeakerL  | kSpeakerR | kSpeakerLfe | kSpeakerS;    
00151 const SpeakerArrangement k40Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerS;    
00152 const SpeakerArrangement k40Music                = kSpeakerL  | kSpeakerR | kSpeakerLs  | kSpeakerRs;   
00153 const SpeakerArrangement k41Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerS;       
00154 const SpeakerArrangement k41Music                = kSpeakerL  | kSpeakerR | kSpeakerLfe | kSpeakerLs  | kSpeakerRs;  
00155 const SpeakerArrangement k50                     = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLs  | kSpeakerRs;      
00156 const SpeakerArrangement k51                     = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs;  
00157 const SpeakerArrangement k60Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLs  | kSpeakerRs | kSpeakerCs;  
00158 const SpeakerArrangement k60Music                = kSpeakerL  | kSpeakerR | kSpeakerLs  | kSpeakerRs  | kSpeakerSl | kSpeakerSr;  
00159 const SpeakerArrangement k61Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs;  
00160 const SpeakerArrangement k61Music                = kSpeakerL  | kSpeakerR | kSpeakerLfe | kSpeakerLs  | kSpeakerRs | kSpeakerSl | kSpeakerSr;  
00161 const SpeakerArrangement k70Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLs  | kSpeakerRs | kSpeakerLc | kSpeakerRc;  
00162 const SpeakerArrangement k70Music                = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLs  | kSpeakerRs | kSpeakerSl | kSpeakerSr;  
00163 const SpeakerArrangement k71Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc;      
00164 const SpeakerArrangement k71Music                = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr;      
00165 const SpeakerArrangement k80Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLs  | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerCs;  
00166 const SpeakerArrangement k80Music                = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLs  | kSpeakerRs | kSpeakerCs | kSpeakerSl | kSpeakerSr;      
00167 const SpeakerArrangement k81Cine                 = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerCs;  
00168 const SpeakerArrangement k81Music                = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerSl | kSpeakerSr;  
00169 const SpeakerArrangement k102                    = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr | kSpeakerLfe2;   
00170 const SpeakerArrangement k102Plus                = kSpeakerL  | kSpeakerR | kSpeakerC   | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr | kSpeakerLfe2; 
00171 const SpeakerArrangement kCube                   = kSpeakerL  | kSpeakerR | kSpeakerLs  | kSpeakerRs  | kSpeakerTfl | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr;  
00172 const SpeakerArrangement kBFormat                = kSpeakerW  | kSpeakerX | kSpeakerY   | kSpeakerZ;  
00173 
00174 const SpeakerArrangement k71CineTopCenter  = kSpeakerL | kSpeakerR | kSpeakerC  | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerTm;              
00175 const SpeakerArrangement k71CineCenterHigh = kSpeakerL | kSpeakerR | kSpeakerC  | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerTfc;     
00176 const SpeakerArrangement k71CineFrontHigh  = kSpeakerL | kSpeakerR | kSpeakerC  | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTfl | kSpeakerTfr;    
00177 const SpeakerArrangement k71CineSideHigh   = kSpeakerL | kSpeakerR | kSpeakerC  | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTsl | kSpeakerTsr;    
00178 const SpeakerArrangement k71CineSideFill   = k61Music;
00179 const SpeakerArrangement k71CineFullRear   = kSpeakerL | kSpeakerR | kSpeakerC  | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLcs | kSpeakerRcs;    
00180 const SpeakerArrangement k71CineFullFront  = k71Cine;
00181 
00183 inline int32 getChannelCount (SpeakerArrangement arr)
00184 {
00185         int32 count = 0;
00186         while (arr) 
00187         {
00188                 if (arr & SpeakerArrangement(1)) 
00189                         ++count;
00190                 arr >>= 1;
00191         }
00192         return count;
00193 }
00194 //------------------------------------------------------------------------
00195 }
00196 
00197 } // namespace Vst
00198 } // namespace Steinberg
00199 
00200 
00201 #endif  // __vsttypes__
Empty

Copyright ©2008 Steinberg Media Technologies. All Rights Reserved.