//------------------------------------------------------------------------ // Project : VST SDK // // Category : Interfaces // Filename : pluginterfaces/vst/vstspeaker.h // Created by : Steinberg, 01/2018 // Description : common defines // //----------------------------------------------------------------------------- // 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 "vsttypes.h" //#include "pluginterfaces/base/ftype.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** \defgroup speakerArrangements Speaker Arrangements \image html "vst3_speaker_types.jpg" \n A SpeakerArrangement is a bitset combination of speakers. For example: \code const SpeakerArrangement kStereo = kSpeakerL | kSpeakerR; // => hex: 0x03 / binary: 0011. \endcode*/ //------------------------------------------------------------------------ //------------------------------------------------------------------------ /** Speaker Definitions. \ingroup speakerArrangements */ //------------------------------------------------------------------------ /**@{*/ const Speaker kSpeakerL = 1 << 0; ///< Left (L) const Speaker kSpeakerR = 1 << 1; ///< Right (R) const Speaker kSpeakerC = 1 << 2; ///< Center (C) const Speaker kSpeakerLfe = 1 << 3; ///< Subbass (Lfe) const Speaker kSpeakerLs = 1 << 4; ///< Left Surround (Ls) const Speaker kSpeakerRs = 1 << 5; ///< Right Surround (Rs) const Speaker kSpeakerLc = 1 << 6; ///< Left of Center (Lc) - Front Left Center const Speaker kSpeakerRc = 1 << 7; ///< Right of Center (Rc) - Front Right Center const Speaker kSpeakerS = 1 << 8; ///< Surround (S) const Speaker kSpeakerCs = kSpeakerS; ///< Center of Surround (Cs) - Back Center - Surround (S) const Speaker kSpeakerSl = 1 << 9; ///< Side Left (Sl) const Speaker kSpeakerSr = 1 << 10; ///< Side Right (Sr) const Speaker kSpeakerTc = 1 << 11; ///< Top Center Over-head, Top Middle (Tc) const Speaker kSpeakerTfl = 1 << 12; ///< Top Front Left (Tfl) const Speaker kSpeakerTfc = 1 << 13; ///< Top Front Center (Tfc) const Speaker kSpeakerTfr = 1 << 14; ///< Top Front Right (Tfr) const Speaker kSpeakerTrl = 1 << 15; ///< Top Rear/Back Left (Trl) const Speaker kSpeakerTrc = 1 << 16; ///< Top Rear/Back Center (Trc) const Speaker kSpeakerTrr = 1 << 17; ///< Top Rear/Back Right (Trr) const Speaker kSpeakerLfe2 = 1 << 18; ///< Subbass 2 (Lfe2) const Speaker kSpeakerM = 1 << 19; ///< Mono (M) const Speaker kSpeakerACN0 = (Speaker)1 << 20; ///< Ambisonic ACN 0 const Speaker kSpeakerACN1 = (Speaker)1 << 21; ///< Ambisonic ACN 1 const Speaker kSpeakerACN2 = (Speaker)1 << 22; ///< Ambisonic ACN 2 const Speaker kSpeakerACN3 = (Speaker)1 << 23; ///< Ambisonic ACN 3 const Speaker kSpeakerACN4 = (Speaker)1 << 38; ///< Ambisonic ACN 4 const Speaker kSpeakerACN5 = (Speaker)1 << 39; ///< Ambisonic ACN 5 const Speaker kSpeakerACN6 = (Speaker)1 << 40; ///< Ambisonic ACN 6 const Speaker kSpeakerACN7 = (Speaker)1 << 41; ///< Ambisonic ACN 7 const Speaker kSpeakerACN8 = (Speaker)1 << 42; ///< Ambisonic ACN 8 const Speaker kSpeakerACN9 = (Speaker)1 << 43; ///< Ambisonic ACN 9 const Speaker kSpeakerACN10 = (Speaker)1 << 44; ///< Ambisonic ACN 10 const Speaker kSpeakerACN11 = (Speaker)1 << 45; ///< Ambisonic ACN 11 const Speaker kSpeakerACN12 = (Speaker)1 << 46; ///< Ambisonic ACN 12 const Speaker kSpeakerACN13 = (Speaker)1 << 47; ///< Ambisonic ACN 13 const Speaker kSpeakerACN14 = (Speaker)1 << 48; ///< Ambisonic ACN 14 const Speaker kSpeakerACN15 = (Speaker)1 << 49; ///< Ambisonic ACN 15 const Speaker kSpeakerTsl = 1 << 24; ///< Top Side Left (Tsl) const Speaker kSpeakerTsr = 1 << 25; ///< Top Side Right (Tsr) const Speaker kSpeakerLcs = 1 << 26; ///< Left of Center Surround (Lcs) - Back Left Center const Speaker kSpeakerRcs = 1 << 27; ///< Right of Center Surround (Rcs) - Back Right Center const Speaker kSpeakerBfl = 1 << 28; ///< Bottom Front Left (Bfl) const Speaker kSpeakerBfc = 1 << 29; ///< Bottom Front Center (Bfc) const Speaker kSpeakerBfr = 1 << 30; ///< Bottom Front Right (Bfr) const Speaker kSpeakerPl = (Speaker)1 << 31; ///< Proximity Left (Pl) const Speaker kSpeakerPr = (Speaker)1 << 32; ///< Proximity Right (Pr) const Speaker kSpeakerBsl = (Speaker)1 << 33; ///< Bottom Side Left (Bsl) const Speaker kSpeakerBsr = (Speaker)1 << 34; ///< Bottom Side Right (Bsr) const Speaker kSpeakerBrl = (Speaker)1 << 35; ///< Bottom Rear Left (Brl) const Speaker kSpeakerBrc = (Speaker)1 << 36; ///< Bottom Rear Center (Brc) const Speaker kSpeakerBrr = (Speaker)1 << 37; ///< Bottom Rear Right (Brr) //------------------------------------------------------------------------ /** @}*/ //------------------------------------------------------------------------ /** Speaker Arrangement Definitions (SpeakerArrangement)*/ //------------------------------------------------------------------------ namespace SpeakerArr { //------------------------------------------------------------------------ /** Speaker Arrangement Definitions. \ingroup speakerArrangements */ /*@{*/ const SpeakerArrangement kEmpty = 0; ///< empty arrangement const SpeakerArrangement kMono = kSpeakerM; ///< M const SpeakerArrangement kStereo = kSpeakerL | kSpeakerR; ///< L R const SpeakerArrangement kStereoSurround = kSpeakerLs | kSpeakerRs; ///< Ls Rs const SpeakerArrangement kStereoCenter = kSpeakerLc | kSpeakerRc; ///< Lc Rc const SpeakerArrangement kStereoSide = kSpeakerSl | kSpeakerSr; ///< Sl Sr const SpeakerArrangement kStereoCLfe = kSpeakerC | kSpeakerLfe; ///< C Lfe const SpeakerArrangement kStereoTF = kSpeakerTfl | kSpeakerTfr; ///< Tfl Tfr const SpeakerArrangement kStereoTS = kSpeakerTsl | kSpeakerTsr; ///< Tsl Tsr const SpeakerArrangement kStereoTR = kSpeakerTrl | kSpeakerTrr; ///< Trl Trr const SpeakerArrangement kStereoBF = kSpeakerBfl | kSpeakerBfr; ///< Bfl Bfr /** L R C */ const SpeakerArrangement k30Cine = kSpeakerL | kSpeakerR | kSpeakerC; /** L R S */ const SpeakerArrangement k30Music = kSpeakerL | kSpeakerR | kSpeakerS; /** L R C Lfe */ const SpeakerArrangement k31Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe; /** L R Lfe S */ const SpeakerArrangement k31Music = kSpeakerL | kSpeakerR | kSpeakerLfe | kSpeakerS; /** L R C S (LCRS) */ const SpeakerArrangement k40Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerS; /** L R Ls Rs (Quadro) */ const SpeakerArrangement k40Music = kSpeakerL | kSpeakerR | kSpeakerLs | kSpeakerRs; /** L R C Lfe S (LCRS+Lfe) */ const SpeakerArrangement k41Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerS; /** L R Lfe Ls Rs (Quadro+Lfe) */ const SpeakerArrangement k41Music = kSpeakerL | kSpeakerR | kSpeakerLfe | kSpeakerLs | kSpeakerRs; /** L R C Ls Rs */ const SpeakerArrangement k50 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs; /** L R C Lfe Ls Rs */ const SpeakerArrangement k51 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs; /** L R C Ls Rs Cs */ const SpeakerArrangement k60Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerCs; /** L R Ls Rs Sl Sr */ const SpeakerArrangement k60Music = kSpeakerL | kSpeakerR | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr; /** L R C Lfe Ls Rs Cs */ const SpeakerArrangement k61Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs; /** L R Lfe Ls Rs Sl Sr */ const SpeakerArrangement k61Music = kSpeakerL | kSpeakerR | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr; /** L R C Ls Rs Lc Rc */ const SpeakerArrangement k70Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc; /** L R C Ls Rs Sl Sr */ const SpeakerArrangement k70Music = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr; /** L R C Lfe Ls Rs Lc Rc */ const SpeakerArrangement k71Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc; const SpeakerArrangement k71CineFullFront= k71Cine; /** L R C Lfe Ls Rs Lcs Rcs */ const SpeakerArrangement k71CineFullRear = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLcs | kSpeakerRcs; /** L R C Lfe Ls Rs Sl Sr */ const SpeakerArrangement k71Music = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr; const SpeakerArrangement k71CineSideFill = k71Music; /** L R C Lfe Ls Rs Pl Pr */ const SpeakerArrangement k71Proximity = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerPl | kSpeakerPr; /** L R C Ls Rs Lc Rc Cs */ const SpeakerArrangement k80Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerCs; /** L R C Ls Rs Cs Sl Sr */ const SpeakerArrangement k80Music = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerSl | kSpeakerSr; /** L R C Lfe Ls Rs Lc Rc Cs */ const SpeakerArrangement k81Cine = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerCs; /** L R C Lfe Ls Rs Cs Sl Sr */ const SpeakerArrangement k81Music = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerSl | kSpeakerSr; /** First-Order with Ambisonic Channel Number (ACN) ordering and SN3D normalization */ const SpeakerArrangement kAmbi1stOrderACN = kSpeakerACN0 | kSpeakerACN1 | kSpeakerACN2 | kSpeakerACN3; /** Second-Order with Ambisonic Channel Number (ACN) ordering and SN3D normalization */ const SpeakerArrangement kAmbi2cdOrderACN = kAmbi1stOrderACN | kSpeakerACN4 | kSpeakerACN5 | kSpeakerACN6 | kSpeakerACN7 | kSpeakerACN8; /** Third-Order with Ambisonic Channel Number (ACN) ordering and SN3D normalization */ const SpeakerArrangement kAmbi3rdOrderACN = kAmbi2cdOrderACN | kSpeakerACN9 | kSpeakerACN10 | kSpeakerACN11 | kSpeakerACN12 | kSpeakerACN13 | kSpeakerACN14 | kSpeakerACN15; /*-----------*/ /* 3D formats */ /*-----------*/ /** L R Ls Rs Tfl Tfr Trl Trr */ const SpeakerArrangement k80Cube = kSpeakerL | kSpeakerR | kSpeakerLs | kSpeakerRs | kSpeakerTfl| kSpeakerTfr| kSpeakerTrl | kSpeakerTrr; /** L R C Lfe Ls Rs Cs Tc */ const SpeakerArrangement k71CineTopCenter = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerTc; /** L R C Lfe Ls Rs Cs Tfc */ const SpeakerArrangement k71CineCenterHigh = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerCs | kSpeakerTfc; /** L R C Lfe Ls Rs Tfl Tfr */ const SpeakerArrangement k71CineFrontHigh = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTfl | kSpeakerTfr; const SpeakerArrangement k71MPEG3D = k71CineFrontHigh; /** L R C Lfe Ls Rs Tsl Tsr */ const SpeakerArrangement k71CineSideHigh = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTsl | kSpeakerTsr; /** L R Lfe Ls Rs Tfl Tfc Tfr Bfc */ const SpeakerArrangement k81MPEG3D = kSpeakerL | kSpeakerR | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerBfc; /** L R C Ls Rs Tfl Tfr Trl Trr */ const SpeakerArrangement k90 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerTfl| kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; const SpeakerArrangement k50_4 = k90; /** L R C Lfe Ls Rs Tfl Tfr Trl Trr */ const SpeakerArrangement k91 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTfl| kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; const SpeakerArrangement k51_4 = k91; /** L R C Lfe Ls Rs Sl Sr Tsl Tsr */ const SpeakerArrangement k71_2 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr | kSpeakerTsl | kSpeakerTsr; const SpeakerArrangement k91Atmos = k71_2; /** L R C Ls Rs Tc Tfl Tfr Trl Trr */ const SpeakerArrangement k100 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerTc | kSpeakerTfl | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; /** L R C Lfe Ls Rs Tc Tfl Tfr Trl Trr */ const SpeakerArrangement k101 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTc | kSpeakerTfl | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; const SpeakerArrangement k101MPEG3D = k101; /** L R C Lfe Ls Rs Tfl Tfc Tfr Trl Trr Lfe2 */ const SpeakerArrangement k102 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTfl| kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr | kSpeakerLfe2; /** L R C Ls Rs Tc Tfl Tfc Tfr Trl Trr */ const SpeakerArrangement k110 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerTc | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; /** L R C Lfe Ls Rs Tc Tfl Tfc Tfr Trl Trr */ const SpeakerArrangement k111 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerTc | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; /** L R C Ls Rs Sl Sr Tfl Tfr Trl Trr */ const SpeakerArrangement k70_4 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr | kSpeakerTfl | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; /** L R C Lfe Ls Rs Sl Sr Tfl Tfr Trl Trr */ const SpeakerArrangement k71_4 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr | kSpeakerTfl | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; const SpeakerArrangement k111MPEG3D = k71_4; /** L R C Lfe Ls Rs Lc Rc Tfl Tfc Tfr Trl Trr Lfe2 */ const SpeakerArrangement k122 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerTfl| kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr | kSpeakerLfe2; /** L R C Ls Rs Sl Sr Tc Tfl Tfc Tfr Trl Trr */ const SpeakerArrangement k130 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr | kSpeakerTc | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; /** L R C Lfe Ls Rs Sl Sr Tc Tfl Tfc Tfr Trl Trr */ const SpeakerArrangement k131 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr | kSpeakerTc | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr; /** L R Ls Rs Sl Sr Tfl Tfr Trl Trr Bfl Bfr Brl Brr */ const SpeakerArrangement k140 = kSpeakerL | kSpeakerR | kSpeakerLs | kSpeakerRs | kSpeakerSl | kSpeakerSr | kSpeakerTfl | kSpeakerTfr | kSpeakerTrl | kSpeakerTrr | kSpeakerBfl | kSpeakerBfr | kSpeakerBrl | kSpeakerBrr; /** L R C Lfe Ls Rs Lc Rc Cs Sl Sr Tc Tfl Tfc Tfr Trl Trc Trr Lfe2 Tsl Tsr Bfl Bfc Bfr */ const SpeakerArrangement k222 = kSpeakerL | kSpeakerR | kSpeakerC | kSpeakerLfe | kSpeakerLs | kSpeakerRs | kSpeakerLc | kSpeakerRc | kSpeakerCs | kSpeakerSl | kSpeakerSr | kSpeakerTc | kSpeakerTfl | kSpeakerTfc | kSpeakerTfr | kSpeakerTrl | kSpeakerTrc | kSpeakerTrr | kSpeakerLfe2 | kSpeakerTsl | kSpeakerTsr | kSpeakerBfl| kSpeakerBfc | kSpeakerBfr; //------------------------------------------------------------------------ /** Speaker Arrangement String Representation. \ingroup speakerArrangements */ /*@{*/ const CString kStringEmpty = ""; const CString kStringMono = "Mono"; const CString kStringStereo = "Stereo"; const CString kStringStereoR = "Stereo (Ls Rs)"; const CString kStringStereoC = "Stereo (Lc Rc)"; const CString kStringStereoSide = "Stereo (Sl Sr)"; const CString kStringStereoCLfe = "Stereo (C LFE)"; const CString kStringStereoTF = "Stereo (Tfl Tfr)"; const CString kStringStereoTS = "Stereo (Tsl Tsr)"; const CString kStringStereoTR = "Stereo (Trl Trr)"; const CString kStringStereoBF = "Stereo (Bfl Bfr)"; const CString kString30Cine = "LRC"; const CString kString30Music = "LRS"; const CString kString31Cine = "LRC+LFE"; const CString kString31Music = "LRS+LFE"; const CString kString40Cine = "LRCS"; const CString kString40Music = "Quadro"; const CString kString41Cine = "LRCS+LFE"; const CString kString41Music = "Quadro+LFE"; const CString kString50 = "5.0"; const CString kString51 = "5.1"; const CString kString60Cine = "6.0 Cine"; const CString kString60Music = "6.0 Music"; const CString kString61Cine = "6.1 Cine"; const CString kString61Music = "6.1 Music"; const CString kString70Cine = "7.0 Cine (SDDS)"; const CString kString70Music = "7.0 Music (Dolby)"; const CString kString71Cine = "7.1 Cine (SDDS)"; const CString kString71Music = "7.1 Music (Dolby)"; const CString kString71CineTopCenter = "7.1 Cine Top Center"; const CString kString71CineCenterHigh = "7.1 Cine Center High"; const CString kString71CineFrontHigh = "7.1 Cine Front High"; const CString kString71CineSideHigh = "7.1 Cine Side High"; const CString kString71CineFullRear = "7.1 Cine Full Rear"; const CString kString71Proximity = "7.1 Proximity"; const CString kString80Cine = "8.0 Cine"; const CString kString80Music = "8.0 Music"; const CString kString80Cube = "8.0 Cube"; const CString kString81Cine = "8.1 Cine"; const CString kString81Music = "8.1 Music"; const CString kString102 = "10.2 Experimental"; const CString kString122 = "12.2"; const CString kString50_4 = "5.0.4"; const CString kString51_4 = "5.1.4"; const CString kString91Atmos = "9.1 Dolby Atmos"; const CString kString100 = "10.0 Auro-3D"; const CString kString101 = "10.1 Auro-3D"; const CString kString110 = "11.0 Auro-3D"; const CString kString111 = "11.1 Auro-3D"; const CString kString130 = "13.0 Auro-3D"; const CString kString131 = "13.1 Auro-3D"; const CString kString81MPEG = "8.1 MPEG"; const CString kString70_4 = "7.0.4"; const CString kString71_4 = "7.1.4"; const CString kString140 = "14.0"; const CString kString222 = "22.2"; const CString kStringAmbi1stOrder = "1st Order Ambisonics"; const CString kStringAmbi2cdOrder = "2nd Order Ambisonics"; const CString kStringAmbi3rdOrder = "3rd Order Ambisonics"; /*@}*/ //------------------------------------------------------------------------ /** Speaker Arrangement String Representation with Speakers Name. \ingroup speakerArrangements */ /*@{*/ const CString kStringMonoS = "M"; const CString kStringStereoS = "L R"; const CString kStringStereoRS = "Ls Rs"; const CString kStringStereoCS = "Lc Rc"; const CString kStringStereoSS = "Sl Sr"; const CString kStringStereoCLfeS= "C LFE"; const CString kStringStereoTFS = "Tfl Tfr"; const CString kStringStereoTSS = "Tsl Tsr"; const CString kStringStereoTRS = "Trl Trr"; const CString kStringStereoBFS = "Bfl Bfr"; const CString kString30CineS = "L R C"; const CString kString30MusicS = "L R S"; const CString kString31CineS = "L R C LFE"; const CString kString31MusicS = "L R LFE S"; const CString kString40CineS = "L R C S"; const CString kString40MusicS = "L R Ls Rs"; const CString kString41CineS = "L R C LFE S"; const CString kString41MusicS = "L R LFE Ls Rs"; const CString kString50S = "L R C Ls Rs"; const CString kString51S = "L R C LFE Ls Rs"; const CString kString60CineS = "L R C Ls Rs Cs"; const CString kString60MusicS = "L R Ls Rs Sl Sr"; const CString kString61CineS = "L R C LFE Ls Rs Cs"; const CString kString61MusicS = "L R LFE Ls Rs Sl Sr"; const CString kString70CineS = "L R C Ls Rs Lc Rc"; const CString kString70MusicS = "L R C Ls Rs Sl Sr"; const CString kString71CineS = "L R C LFE Ls Rs Lc Rc"; const CString kString71MusicS = "L R C LFE Ls Rs Sl Sr"; const CString kString80CineS = "L R C Ls Rs Lc Rc Cs"; const CString kString80MusicS = "L R C Ls Rs Cs Sl Sr"; const CString kString81CineS = "L R C LFE Ls Rs Lc Rc Cs"; const CString kString81MusicS = "L R C LFE Ls Rs Cs Sl Sr"; const CString kString80CubeS = "L R Ls Rs Tfl Tfr Trl Trr"; const CString kString71CineTopCenterS = "L R C LFE Ls Rs Cs Tc"; const CString kString71CineCenterHighS = "L R C LFE Ls Rs Cs Tfc"; const CString kString71CineFrontHighS = "L R C LFE Ls Rs Tfl Tfl"; const CString kString71CineSideHighS = "L R C LFE Ls Rs Tsl Tsl"; const CString kString71CineFullRearS = "L R C LFE Ls Rs Lcs Rcs"; const CString kString71ProximityS = "L R C LFE Ls Rs Pl Pr"; const CString kString50_4S = "L R C Ls Rs Tfl Tfr Trl Trr"; const CString kString51_4S = "L R C LFE Ls Rs Tfl Tfr Trl Trr"; const CString kString91AtmosS = "L R C LFE Ls Rs Sl Sr Tsl Tsr"; const CString kString100S = "L R C Ls Rs Tc Tfl Tfr Trl Trr"; const CString kString101S = "L R C LFE Ls Rs Tc Tfl Tfr Trl Trr"; const CString kString110S = "L R C Ls Rs Tc Tfl Tfc Tfr Trl Trr"; const CString kString111S = "L R C LFE Ls Rs Tc Tfl Tfc Tfr Trl Trr"; const CString kStringk70_4S = "L R C Ls Rs Sl Sr Tfl Tfr Trl Trr"; const CString kStringk71_4S = "L R C LFE Ls Rs Sl Sr Tfl Tfr Trl Trr"; const CString kString130S = "L R C Ls Rs Sl Sr Tc Tfl Tfc Tfr Trl Trr"; const CString kString131S = "L R C LFE Ls Rs Sl Sr Tc Tfl Tfc Tfr Trl Trr"; const CString kString102S = "L R C LFE Ls Rs Tfl Tfc Tfr Trl Trr LFE2"; const CString kString122S = "L R C LFE Ls Rs Lc Rc Tfl Tfc Tfr Trl Trr LFE2"; const CString kString81MPEGS = "L R LFE Ls Rs Tfl Tfc Tfr Bfc"; const CString kString140S = "L R Ls Rs Sl Sr Tfl Tfr Trl Trr Bfl Bfr Brl Brr"; const CString kString222S = "L R C LFE Ls Rs Lc Rc Cs Sl Sr Tc Tfl Tfc Tfr Trl Trc Trr LFE2 Tsl Tsr Bfl Bfc Bfr"; const CString kStringAmbi1stOrderS = "0 1 2 3"; const CString kStringAmbi2cdOrderS = "0 1 2 3 4 5 6 7 8"; const CString kStringAmbi3rdOrderS = "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"; /*@}*/ //------------------------------------------------------------------------ /** Returns number of channels used in speaker arrangement. \ingroup speakerArrangements */ /*@{*/ inline int32 getChannelCount (SpeakerArrangement arr) { int32 count = 0; while (arr) { if (arr & (SpeakerArrangement)1) ++count; arr >>= 1; } return count; } //------------------------------------------------------------------------ /** Returns the index of a given speaker in a speaker arrangement (-1 if speaker is not part of the * arrangement). */ inline int32 getSpeakerIndex (Speaker speaker, SpeakerArrangement arrangement) { // check if speaker is present in arrangement if ((arrangement & speaker) == 0) return -1; int32 result = 0; Speaker i = 1; while (i < speaker) { if (arrangement & i) result++; i <<= 1; } return result; } //------------------------------------------------------------------------ /** Returns the speaker for a given index in a speaker arrangement (return 0 when out of range). */ inline Speaker getSpeaker (const SpeakerArrangement& arr, int32 index) { SpeakerArrangement arrTmp = arr; int32 index2 = -1; int32 pos = -1; while (arrTmp) { if (arrTmp & 0x1) index2++; pos++; if (index2 == index) return (Speaker)1 << pos; arrTmp = arrTmp >> 1; } return 0; } //------------------------------------------------------------------------ /** Returns true if arrSubSet is a subset speaker of arr (means each speaker of arrSubSet is * included in arr). */ inline bool isSubsetOf (const SpeakerArrangement& arrSubSet, const SpeakerArrangement& arr) { return (arrSubSet == (arrSubSet & arr)); } //------------------------------------------------------------------------ /** Returns true if arrangement is a Auro configuration. */ inline bool isAuro (const SpeakerArrangement& arr) { if (arr == k90 || arr == k91 || arr == k100 || arr == k101 || arr == k110 || arr == k111 || arr == k130 || arr == k131) { return true; } return false; } //------------------------------------------------------------------------ /** Returns true if arrangement is a Auro configuration. */ inline bool isAmbisonics (const SpeakerArrangement& arr) { if (arr == kAmbi1stOrderACN || arr == kAmbi2cdOrderACN || arr == kAmbi3rdOrderACN) { return true; } return false; } //------------------------------------------------------------------------ /** Returns the speaker arrangement associated to a string representation. Returns kEmpty if no associated arrangement is known. */ inline SpeakerArrangement getSpeakerArrangementFromString (CString arrStr) { if (!strcmp8 (arrStr, kStringMono)) return kMono; if (!strcmp8 (arrStr, kStringStereo)) return kStereo; if (!strcmp8 (arrStr, kStringStereoR)) return kStereoSurround; if (!strcmp8 (arrStr, kStringStereoC)) return kStereoCenter; if (!strcmp8 (arrStr, kStringStereoSide)) return kStereoSide; if (!strcmp8 (arrStr, kStringStereoCLfe)) return kStereoCLfe; if (!strcmp8 (arrStr, kStringStereoTF)) return kStereoTF; if (!strcmp8 (arrStr, kStringStereoTS)) return kStereoTS; if (!strcmp8 (arrStr, kStringStereoTR)) return kStereoTR; if (!strcmp8 (arrStr, kStringStereoBF)) return kStereoBF; if (!strcmp8 (arrStr, kString30Cine)) return k30Cine; if (!strcmp8 (arrStr, kString30Music)) return k30Music; if (!strcmp8 (arrStr, kString31Cine)) return k31Cine; if (!strcmp8 (arrStr, kString31Music)) return k31Music; if (!strcmp8 (arrStr, kString40Cine)) return k40Cine; if (!strcmp8 (arrStr, kString40Music)) return k40Music; if (!strcmp8 (arrStr, kString41Cine)) return k41Cine; if (!strcmp8 (arrStr, kString41Music)) return k41Music; if (!strcmp8 (arrStr, kString50)) return k50; if (!strcmp8 (arrStr, kString51)) return k51; if (!strcmp8 (arrStr, kString60Cine)) return k60Cine; if (!strcmp8 (arrStr, kString60Music)) return k60Music; if (!strcmp8 (arrStr, kString61Cine)) return k61Cine; if (!strcmp8 (arrStr, kString61Music)) return k61Music; if (!strcmp8 (arrStr, kString70Cine)) return k70Cine; if (!strcmp8 (arrStr, kString70Music)) return k70Music; if (!strcmp8 (arrStr, kString71Cine)) return k71Cine; if (!strcmp8 (arrStr, kString71Music)) return k71Music; if (!strcmp8 (arrStr, kString71Proximity)) return k71Proximity; if (!strcmp8 (arrStr, kString80Cine)) return k80Cine; if (!strcmp8 (arrStr, kString80Music)) return k80Music; if (!strcmp8 (arrStr, kString81Cine)) return k81Cine; if (!strcmp8 (arrStr, kString81Music)) return k81Music; if (!strcmp8 (arrStr, kString102)) return k102; if (!strcmp8 (arrStr, kString122)) return k122; if (!strcmp8 (arrStr, kString80Cube)) return k80Cube; if (!strcmp8 (arrStr, kString71CineTopCenter)) return k71CineTopCenter; if (!strcmp8 (arrStr, kString71CineCenterHigh)) return k71CineCenterHigh; if (!strcmp8 (arrStr, kString71CineFrontHigh)) return k71CineFrontHigh; if (!strcmp8 (arrStr, kString71CineSideHigh)) return k71CineSideHigh; if (!strcmp8 (arrStr, kString71CineFullRear)) return k71CineFullRear; if (!strcmp8 (arrStr, kString50_4)) return k50_4; if (!strcmp8 (arrStr, kString51_4)) return k51_4; if (!strcmp8 (arrStr, kString81MPEG)) return k81MPEG3D; if (!strcmp8 (arrStr, kString91Atmos)) return k91Atmos; if (!strcmp8 (arrStr, kString100)) return k100; if (!strcmp8 (arrStr, kString101)) return k101; if (!strcmp8 (arrStr, kString110)) return k110; if (!strcmp8 (arrStr, kString111)) return k111; if (!strcmp8 (arrStr, kString70_4)) return k70_4; if (!strcmp8 (arrStr, kString71_4)) return k71_4; if (!strcmp8 (arrStr, kString130)) return k130; if (!strcmp8 (arrStr, kString131)) return k131; if (!strcmp8 (arrStr, kString140)) return k140; if (!strcmp8 (arrStr, kString222)) return k222; if (!strcmp8 (arrStr, kStringAmbi1stOrder)) return kAmbi1stOrderACN; if (!strcmp8 (arrStr, kStringAmbi2cdOrder)) return kAmbi2cdOrderACN; if (!strcmp8 (arrStr, kStringAmbi3rdOrder)) return kAmbi3rdOrderACN; return kEmpty; } //------------------------------------------------------------------------ /** Returns the string representation of a given speaker arrangement. Returns kStringEmpty if arr is unknown. */ inline CString getSpeakerArrangementString (SpeakerArrangement arr, bool withSpeakersName) { switch (arr) { case kMono: return withSpeakersName ? kStringMonoS : kStringMono; case kStereo: return withSpeakersName ? kStringStereoS : kStringStereo; case kStereoSurround: return withSpeakersName ? kStringStereoRS : kStringStereoR; case kStereoCenter: return withSpeakersName ? kStringStereoCS : kStringStereoC; case kStereoSide: return withSpeakersName ? kStringStereoSS : kStringStereoSide; case kStereoCLfe: return withSpeakersName ? kStringStereoCLfeS: kStringStereoCLfe; case kStereoTF: return withSpeakersName ? kStringStereoTFS : kStringStereoTF; case kStereoTS: return withSpeakersName ? kStringStereoTSS : kStringStereoTS; case kStereoTR: return withSpeakersName ? kStringStereoTRS : kStringStereoTR; case kStereoBF: return withSpeakersName ? kStringStereoBFS : kStringStereoBF; case k30Cine: return withSpeakersName ? kString30CineS : kString30Cine; case k30Music: return withSpeakersName ? kString30MusicS : kString30Music; case k31Cine: return withSpeakersName ? kString31CineS : kString31Cine; case k31Music: return withSpeakersName ? kString31MusicS : kString31Music; case k40Cine: return withSpeakersName ? kString40CineS : kString40Cine; case k40Music: return withSpeakersName ? kString40MusicS : kString40Music; case k41Cine: return withSpeakersName ? kString41CineS : kString41Cine; case k41Music: return withSpeakersName ? kString41MusicS : kString41Music; case k50: return withSpeakersName ? kString50S : kString50; case k51: return withSpeakersName ? kString51S : kString51; case k60Cine: return withSpeakersName ? kString60CineS : kString60Cine; case k60Music: return withSpeakersName ? kString60MusicS : kString60Music; case k61Cine: return withSpeakersName ? kString61CineS : kString61Cine; case k61Music: return withSpeakersName ? kString61MusicS : kString61Music; case k70Cine: return withSpeakersName ? kString70CineS : kString70Cine; case k70Music: return withSpeakersName ? kString70MusicS : kString70Music; case k71Cine: return withSpeakersName ? kString71CineS : kString71Cine; case k71Music: return withSpeakersName ? kString71MusicS : kString71Music; case k71Proximity: return withSpeakersName ? kString71ProximityS : kString71Proximity; case k80Cine: return withSpeakersName ? kString80CineS : kString80Cine; case k80Music: return withSpeakersName ? kString80MusicS : kString80Music; case k81Cine: return withSpeakersName ? kString81CineS : kString81Cine; case k81Music: return withSpeakersName ? kString81MusicS : kString81Music; case k81MPEG3D: return withSpeakersName ? kString81MPEGS : kString81MPEG; case k102: return withSpeakersName ? kString102S : kString102; case k122: return withSpeakersName ? kString122S : kString122; case k80Cube: return withSpeakersName ? kString80CubeS : kString80Cube; case k71CineTopCenter: return withSpeakersName ? kString71CineTopCenterS : kString71CineTopCenter; case k71CineCenterHigh: return withSpeakersName ? kString71CineCenterHighS : kString71CineCenterHigh; case k71CineFrontHigh: return withSpeakersName ? kString71CineFrontHighS : kString71CineFrontHigh; case k71CineSideHigh: return withSpeakersName ? kString71CineSideHighS : kString71CineSideHigh; case k71CineFullRear: return withSpeakersName ? kString71CineFullRearS : kString71CineFullRear; case k91Atmos: return withSpeakersName ? kString91AtmosS : kString91Atmos; case k100: return withSpeakersName ? kString100S : kString100; case k101: return withSpeakersName ? kString101S : kString101; case k110: return withSpeakersName ? kString110S : kString110; case k111: return withSpeakersName ? kString111S : kString111; case k50_4: return withSpeakersName ? kString50_4S : kString50_4; case k51_4: return withSpeakersName ? kString51_4S : kString51_4; case k70_4: return withSpeakersName ? kStringk70_4S : kString70_4; case k71_4: return withSpeakersName ? kStringk71_4S : kString71_4; case k130: return withSpeakersName ? kString130S : kString130; case k131: return withSpeakersName ? kString131S : kString131; case k140: return withSpeakersName ? kString140S : kString140; case k222: return withSpeakersName ? kString222S : kString222; break; } if (arr == kAmbi1stOrderACN) return withSpeakersName ? kStringAmbi1stOrderS : kStringAmbi1stOrder; if (arr == kAmbi2cdOrderACN) return withSpeakersName ? kStringAmbi2cdOrderS : kStringAmbi2cdOrder; if (arr == kAmbi3rdOrderACN) return withSpeakersName ? kStringAmbi3rdOrderS : kStringAmbi3rdOrder; return kStringEmpty; } //------------------------------------------------------------------------ /** Returns a CString representation of a given speaker in a given arrangement */ inline CString getSpeakerShortName (const SpeakerArrangement& arr, int32 index) { SpeakerArrangement arrTmp = arr; bool found = false; int32 index2 = -1; int32 pos = -1; while (arrTmp) { if (arrTmp & 0x1) index2++; pos++; if (index2 == index) { found = true; break; } arrTmp = arrTmp >> 1; } if (!found) return ""; Speaker speaker = (Speaker)1 << pos; if (speaker == kSpeakerL) return "L"; if (speaker == kSpeakerR) return "R"; if (speaker == kSpeakerC) return "C"; if (speaker == kSpeakerLfe) return "LFE"; if (speaker == kSpeakerLs) return "Ls"; if (speaker == kSpeakerRs) return "Rs"; if (speaker == kSpeakerLc) return "Lc"; if (speaker == kSpeakerRc) return "Rc"; if (speaker == kSpeakerS) return "S"; if (speaker == kSpeakerSl) return "Sl"; if (speaker == kSpeakerSr) return "Sr"; if (speaker == kSpeakerTc) return "Tc"; if (speaker == kSpeakerTfl) return "Tfl"; if (speaker == kSpeakerTfc) return "Tfc"; if (speaker == kSpeakerTfr) return "Tfr"; if (speaker == kSpeakerTrl) return "Trl"; if (speaker == kSpeakerTrc) return "Trc"; if (speaker == kSpeakerTrr) return "Trr"; if (speaker == kSpeakerLfe2) return "LFE2"; if (speaker == kSpeakerM) return "M"; if (speaker == kSpeakerACN0) return "0"; if (speaker == kSpeakerACN1) return "1"; if (speaker == kSpeakerACN2) return "2"; if (speaker == kSpeakerACN3) return "3"; if (speaker == kSpeakerACN4) return "4"; if (speaker == kSpeakerACN5) return "5"; if (speaker == kSpeakerACN6) return "6"; if (speaker == kSpeakerACN7) return "7"; if (speaker == kSpeakerACN8) return "8"; if (speaker == kSpeakerACN9) return "9"; if (speaker == kSpeakerACN10) return "10"; if (speaker == kSpeakerACN11) return "11"; if (speaker == kSpeakerACN12) return "12"; if (speaker == kSpeakerACN13) return "13"; if (speaker == kSpeakerACN14) return "14"; if (speaker == kSpeakerACN15) return "15"; if (speaker == kSpeakerTsl) return "Tsl"; if (speaker == kSpeakerTsr) return "Tsr"; if (speaker == kSpeakerLcs) return "Lcs"; if (speaker == kSpeakerRcs) return "Rcs"; if (speaker == kSpeakerBfl) return "Bfl"; if (speaker == kSpeakerBfc) return "Bfc"; if (speaker == kSpeakerBfr) return "Bfr"; if (speaker == kSpeakerPl) return "Pl"; if (speaker == kSpeakerPr) return "Pr"; if (speaker == kSpeakerBsl) return "Bsl"; if (speaker == kSpeakerBsr) return "Bsr"; if (speaker == kSpeakerBrl) return "Brl"; if (speaker == kSpeakerBrc) return "Brc"; if (speaker == kSpeakerBrr) return "Brr"; return ""; } /*@}*/ //------------------------------------------------------------------------ } // namespace SpeakerArr } // namespace Vst } // namespace Steinberg