OpenShot Library | libopenshot-audio  0.2.0
juce_AudioChannelSet.h
1 
2 /** @weakgroup juce_audio_basics-buffers
3  * @{
4  */
5 /*
6  ==============================================================================
7 
8  This file is part of the JUCE library.
9  Copyright (c) 2017 - ROLI Ltd.
10 
11  JUCE is an open source library subject to commercial or open-source
12  licensing.
13 
14  The code included in this file is provided under the terms of the ISC license
15  http://www.isc.org/downloads/software-support-policy/isc-license. Permission
16  To use, copy, modify, and/or distribute this software for any purpose with or
17  without fee is hereby granted provided that the above copyright notice and
18  this permission notice appear in all copies.
19 
20  JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
21  EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
22  DISCLAIMED.
23 
24  ==============================================================================
25 */
26 
27 namespace juce
28 {
29 
30 //==============================================================================
31 /**
32  Represents a set of audio channel types.
33 
34  For example, you might have a set of left + right channels, which is a stereo
35  channel set. It is a collection of values from the AudioChannelSet::ChannelType
36  enum, where each type may only occur once within the set.
37 
38  The documentation below lists which AudioChannelSet corresponds to which native
39  layouts used by AAX, VST2/VST3 and CoreAudio/AU. The layout tags in CoreAudio
40  are particularly confusing. For example, the layout which is labeled as "7.1 SDDS"
41  in Logic Pro, corresponds to CoreAudio/AU's kAudioChannelLayoutTag_DTS_7_0 tag, whereas
42  AAX's DTS 7.1 Layout corresponds to CoreAudio/AU's
43  kAudioChannelLayoutTag_MPEG_7_1_A format, etc. Please do not use the CoreAudio tag
44  as an indication to the actual layout of the speakers.
45 
46  @see Bus
47 
48  @tags{Audio}
49 */
51 {
52 public:
53  /** Creates an empty channel set.
54  You can call addChannel to add channels to the set.
55  */
56  AudioChannelSet() = default;
57 
58  /** Creates a zero-channel set which can be used to indicate that a
59  bus is disabled. */
60  static AudioChannelSet JUCE_CALLTYPE disabled();
61 
62  //==============================================================================
63  /** Creates a one-channel mono set (centre).
64 
65  Is equivalent to: kMonoAAX (VST), AAX_eStemFormat_Mono (AAX), kAudioChannelLayoutTag_Mono (CoreAudio)
66  */
67  static AudioChannelSet JUCE_CALLTYPE mono();
68 
69 
70  /** Creates a set containing a stereo set (left, right).
71 
72  Is equivalent to: kStereo (VST), AAX_eStemFormat_Stereo (AAX), kAudioChannelLayoutTag_Stereo (CoreAudio)
73  */
74  static AudioChannelSet JUCE_CALLTYPE stereo();
75 
76 
77  //==============================================================================
78  /** Creates a set containing an LCR set (left, right, centre).
79 
80  Is equivalent to: k30Cine (VST), AAX_eStemFormat_LCR (AAX), kAudioChannelLayoutTag_MPEG_3_0_A (CoreAudio)
81 
82  This format is referred to as "LRC" in Cubase.
83  This format is referred to as "LCR" in Pro Tools.
84  */
85  static AudioChannelSet JUCE_CALLTYPE createLCR();
86 
87 
88  /** Creates a set containing an LRS set (left, right, surround).
89 
90  Is equivalent to: k30Music (VST), n/a (AAX), kAudioChannelLayoutTag_ITU_2_1 (CoreAudio)
91 
92  This format is referred to as "LRS" in Cubase.
93  */
94  static AudioChannelSet JUCE_CALLTYPE createLRS();
95 
96 
97  /** Creates a set containing an LCRS set (left, right, centre, surround).
98 
99  Is equivalent to: k40Cine (VST), AAX_eStemFormat_LCRS (AAX), kAudioChannelLayoutTag_MPEG_4_0_A (CoreAudio)
100 
101  This format is referred to as "LCRS (Pro Logic)" in Logic Pro.
102  This format is referred to as "LRCS" in Cubase.
103  This format is referred to as "LCRS" in Pro Tools.
104  */
105  static AudioChannelSet JUCE_CALLTYPE createLCRS();
106 
107 
108  //==============================================================================
109  /** Creates a set for a 5.0 surround setup (left, right, centre, leftSurround, rightSurround).
110 
111  Is equivalent to: k50 (VST), AAX_eStemFormat_5_0 (AAX), kAudioChannelLayoutTag_MPEG_5_0_A (CoreAudio)
112 
113  This format is referred to as "5.0" in Cubase.
114  This format is referred to as "5.0" in Pro Tools.
115  */
116  static AudioChannelSet JUCE_CALLTYPE create5point0();
117 
118 
119  /** Creates a set for a 5.1 surround setup (left, right, centre, leftSurround, rightSurround, LFE).
120 
121  Is equivalent to: k51 (VST), AAX_eStemFormat_5_1 (AAX), kAudioChannelLayoutTag_MPEG_5_1_A (CoreAudio)
122 
123  This format is referred to as "5.1 (ITU 775)" in Logic Pro.
124  This format is referred to as "5.1" in Cubase.
125  This format is referred to as "5.1" in Pro Tools.
126  */
127  static AudioChannelSet JUCE_CALLTYPE create5point1();
128 
129 
130  /** Creates a set for a 6.0 Cine surround setup (left, right, centre, leftSurround, rightSurround, centreSurround).
131 
132  Is equivalent to: k60Cine (VST), AAX_eStemFormat_6_0 (AAX), kAudioChannelLayoutTag_AudioUnit_6_0 (CoreAudio)
133 
134  Logic Pro incorrectly uses this for the surround format labeled "6.1 (ES/EX)".
135  This format is referred to as "6.0 Cine" in Cubase.
136  This format is referred to as "6.0" in Pro Tools.
137  */
138  static AudioChannelSet JUCE_CALLTYPE create6point0();
139 
140 
141  /** Creates a set for a 6.1 Cine surround setup (left, right, centre, leftSurround, rightSurround, centreSurround, LFE).
142 
143  Is equivalent to: k61Cine (VST), AAX_eStemFormat_6_1 (AAX), kAudioChannelLayoutTag_MPEG_6_1_A (CoreAudio)
144 
145  This format is referred to as "6.1" in Pro Tools.
146  */
147  static AudioChannelSet JUCE_CALLTYPE create6point1();
148 
149 
150  /** Creates a set for a 6.0 Music surround setup (left, right, leftSurround, rightSurround, leftSurroundSide, rightSurroundSide).
151 
152  Is equivalent to: k60Music (VST), n/a (AAX), kAudioChannelLayoutTag_DTS_6_0_A (CoreAudio)
153 
154  This format is referred to as "6.0 Music" in Cubase.
155  */
156  static AudioChannelSet JUCE_CALLTYPE create6point0Music();
157 
158 
159  /** Creates a set for a 6.0 Music surround setup (left, right, leftSurround, rightSurround, leftSurroundSide, rightSurroundSide, LFE).
160 
161  Is equivalent to: k61Music (VST), n/a (AAX), kAudioChannelLayoutTag_DTS_6_1_A (CoreAudio)
162  */
163  static AudioChannelSet JUCE_CALLTYPE create6point1Music();
164 
165 
166  /** Creates a set for a DTS 7.0 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear).
167 
168  Is equivalent to: k70Music (VST), AAX_eStemFormat_7_0_DTS (AAX), kAudioChannelLayoutTag_AudioUnit_7_0 (CoreAudio)
169 
170  This format is referred to as "7.0" in Pro Tools.
171  */
172  static AudioChannelSet JUCE_CALLTYPE create7point0();
173 
174 
175  /** Creates a set for a SDDS 7.0 surround setup (left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre).
176 
177  Is equivalent to: k70Cine (VST), AAX_eStemFormat_7_0_SDDS (AAX), kAudioChannelLayoutTag_AudioUnit_7_0_Front (CoreAudio)
178 
179  This format is referred to as "7.0 SDDS" in Pro Tools.
180  */
181  static AudioChannelSet JUCE_CALLTYPE create7point0SDDS();
182 
183 
184  /** Creates a set for a DTS 7.1 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, LFE).
185 
186  Is equivalent to: k71CineSideFill (VST), AAX_eStemFormat_7_1_DTS (AAX), kAudioChannelLayoutTag_MPEG_7_1_C/kAudioChannelLayoutTag_ITU_3_4_1 (CoreAudio)
187 
188  This format is referred to as "7.1 (3/4.1)" in Logic Pro.
189  This format is referred to as "7.1" in Pro Tools.
190  */
191  static AudioChannelSet JUCE_CALLTYPE create7point1();
192 
193 
194  /** Creates a set for a 7.1 surround setup (left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre, LFE).
195 
196  Is equivalent to: k71Cine (VST), AAX_eStemFormat_7_1_SDDS (AAX), kAudioChannelLayoutTag_MPEG_7_1_A (CoreAudio)
197 
198  This format is referred to as "7.1 (SDDS)" in Logic Pro.
199  This format is referred to as "7.1 SDDS" in Pro Tools.
200  */
201  static AudioChannelSet JUCE_CALLTYPE create7point1SDDS();
202 
203  /** Creates a set for Dolby Atmos 7.0.2 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topSideLeft, topSideRight).
204 
205  Is equivalent to: n/a (VST), AAX_eStemFormat_7_0_2 (AAX), n/a (CoreAudio)
206  */
207  static AudioChannelSet JUCE_CALLTYPE create7point0point2();
208 
209  /** Creates a set for Dolby Atmos 7.1.2 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, LFE, topSideLeft, topSideRight).
210 
211  Is equivalent to: k71_2 (VST), AAX_eStemFormat_7_1_2 (AAX), n/a (CoreAudio)
212  */
213  static AudioChannelSet JUCE_CALLTYPE create7point1point2();
214 
215 
216  //==============================================================================
217  /** Creates a set for quadraphonic surround setup (left, right, leftSurround, rightSurround)
218 
219  Is equivalent to: k40Music (VST), AAX_eStemFormat_Quad (AAX), kAudioChannelLayoutTag_Quadraphonic (CoreAudio)
220 
221  This format is referred to as "Quadraphonic" in Logic Pro.
222  This format is referred to as "Quadro" in Cubase.
223  This format is referred to as "Quad" in Pro Tools.
224  */
225  static AudioChannelSet JUCE_CALLTYPE quadraphonic();
226 
227 
228  /** Creates a set for pentagonal surround setup (left, right, centre, leftSurroundRear, rightSurroundRear).
229 
230  Is equivalent to: n/a (VST), n/a (AAX), kAudioChannelLayoutTag_Pentagonal (CoreAudio)
231  */
232  static AudioChannelSet JUCE_CALLTYPE pentagonal();
233 
234 
235  /** Creates a set for hexagonal surround setup (left, right, leftSurroundRear, rightSurroundRear, centre, surroundCentre).
236 
237  Is equivalent to: n/a (VST), n/a (AAX), kAudioChannelLayoutTag_Hexagonal (CoreAudio)
238  */
239  static AudioChannelSet JUCE_CALLTYPE hexagonal();
240 
241 
242  /** Creates a set for octagonal surround setup (left, right, leftSurround, rightSurround, centre, centreSurround, wideLeft, wideRight).
243 
244  Is equivalent to: n/a (VST), n/a (AAX), kAudioChannelLayoutTag_Octagonal (CoreAudio)
245  */
246  static AudioChannelSet JUCE_CALLTYPE octagonal();
247 
248  //==============================================================================
249  /** Creates a set for ACN, SN3D normalised ambisonic surround setups with a given order.
250 
251  Is equivalent to: kAmbiXXXOrderACN (VST), AAX_eStemFormat_Ambi_XXX_ACN (AAX), kAudioChannelLayoutTag_HOA_ACN_SN3D (CoreAudio)
252  */
253  static AudioChannelSet JUCE_CALLTYPE ambisonic (int order = 1);
254 
255  /** Returns the order of the ambisonic layout represented by this AudioChannelSet. If the
256  AudioChannelSet is not an ambisonic layout, then this method will return -1.
257  */
258  int getAmbisonicOrder() const;
259 
260  //==============================================================================
261  /** Creates a set of untyped discrete channels. */
262  static AudioChannelSet JUCE_CALLTYPE discreteChannels (int numChannels);
263 
264  /** Create a canonical channel set for a given number of channels.
265  For example, numChannels = 1 will return mono, numChannels = 2 will return stereo, etc. */
266  static AudioChannelSet JUCE_CALLTYPE canonicalChannelSet (int numChannels);
267 
268  /** Create a channel set for a given number of channels which is non-discrete.
269  If numChannels is larger than the number of channels of the surround format
270  with the maximum amount of channels (currently 7.1 Surround), then this
271  function returns an empty set.*/
272  static AudioChannelSet JUCE_CALLTYPE namedChannelSet (int numChannels);
273 
274  /** Return an array of channel sets which have a given number of channels */
275  static Array<AudioChannelSet> JUCE_CALLTYPE channelSetsWithNumberOfChannels (int numChannels);
276 
277  //==============================================================================
278  /** Represents different audio channel types. */
280  {
281  unknown = 0, /**< Unknown channel type. */
282 
283  //==============================================================================
284  left = 1, /**< L channel. */
285  right = 2, /**< R channel. */
286  centre = 3, /**< C channel. (Sometimes M for mono) */
287 
288  //==============================================================================
289  LFE = 4, /**< LFE channel. */
290  leftSurround = 5, /**< Ls channel. */
291  rightSurround = 6, /**< Rs channel. */
292  leftCentre = 7, /**< Lc (AAX/VST), Lc used as Lss in AU for most layouts. */
293  rightCentre = 8, /**< Rc (AAX/VST), Rc used as Rss in AU for most layouts. */
294  centreSurround = 9, /**< Cs/S channel. */
295  surround = centreSurround, /**< Same as Centre Surround channel. */
296  leftSurroundSide = 10, /**< Lss (AXX), Side Left "Sl" (VST), Left Centre "LC" (AU) channel. */
297  rightSurroundSide = 11, /**< Rss (AXX), Side right "Sr" (VST), Right Centre "Rc" (AU) channel. */
298  topMiddle = 12, /**< Top Middle channel. */
299  topFrontLeft = 13, /**< Top Front Left channel. */
300  topFrontCentre = 14, /**< Top Front Centre channel. */
301  topFrontRight = 15, /**< Top Front Right channel. */
302  topRearLeft = 16, /**< Top Rear Left channel. */
303  topRearCentre = 17, /**< Top Rear Centre channel. */
304  topRearRight = 18, /**< Top Rear Right channel. */
305  LFE2 = 19, /**< Second LFE channel. */
306  leftSurroundRear = 20, /**< Lsr (AAX), Lcs (VST), Rls (AU) channel. */
307  rightSurroundRear = 21, /**< Rsr (AAX), Rcs (VST), Rrs (AU) channel. */
308  wideLeft = 22, /**< Wide Left channel. */
309  wideRight = 23, /**< Wide Right channel. */
310 
311  //==============================================================================
312  // Used by Dolby Atmos 7.0.2 and 7.1.2
313  topSideLeft = 28, /**< Lts (AAX), Tsl (VST) channel for Dolby Atmos. */
314  topSideRight = 29, /**< Rts (AAX), Tsr (VST) channel for Dolby Atmos. */
315 
316  //==============================================================================
317  // Ambisonic ACN formats - all channels are SN3D normalised
318 
319  // zero-th and first-order ambisonic ACN
320  ambisonicACN0 = 24, /**< Zero-th ambisonic channel number 0. */
321  ambisonicACN1 = 25, /**< First-order ambisonic channel number 1. */
322  ambisonicACN2 = 26, /**< First-order ambisonic channel number 2. */
323  ambisonicACN3 = 27, /**< First-order ambisonic channel number 3. */
324 
325  // second-order ambisonic
326  ambisonicACN4 = 30, /**< Second-order ambisonic channel number 4. */
327  ambisonicACN5 = 31, /**< Second-order ambisonic channel number 5. */
328  ambisonicACN6 = 32, /**< Second-order ambisonic channel number 6. */
329  ambisonicACN7 = 33, /**< Second-order ambisonic channel number 7. */
330  ambisonicACN8 = 34, /**< Second-order ambisonic channel number 8. */
331 
332  // third-order ambisonic
333  ambisonicACN9 = 35, /**< Third-order ambisonic channel number 9. */
334  ambisonicACN10 = 36, /**< Third-order ambisonic channel number 10. */
335  ambisonicACN11 = 37, /**< Third-order ambisonic channel number 11. */
336  ambisonicACN12 = 38, /**< Third-order ambisonic channel number 12. */
337  ambisonicACN13 = 39, /**< Third-order ambisonic channel number 13. */
338  ambisonicACN14 = 40, /**< Third-order ambisonic channel number 14. */
339  ambisonicACN15 = 41, /**< Third-order ambisonic channel number 15. */
340 
341  // fourth-order ambisonic
342  ambisonicACN16 = 42, /**< Fourth-order ambisonic channel number 16. */
343  ambisonicACN17 = 43, /**< Fourth-order ambisonic channel number 17. */
344  ambisonicACN18 = 44, /**< Fourth-order ambisonic channel number 18. */
345  ambisonicACN19 = 45, /**< Fourth-order ambisonic channel number 19. */
346  ambisonicACN20 = 46, /**< Fourth-order ambisonic channel number 20. */
347  ambisonicACN21 = 47, /**< Fourth-order ambisonic channel number 21. */
348  ambisonicACN22 = 48, /**< Fourth-order ambisonic channel number 22. */
349  ambisonicACN23 = 49, /**< Fourth-order ambisonic channel number 23. */
350  ambisonicACN24 = 50, /**< Fourth-order ambisonic channel number 24. */
351 
352  // fifth-order ambisonic
353  ambisonicACN25 = 51, /**< Fifth-order ambisonic channel number 25. */
354  ambisonicACN26 = 52, /**< Fifth-order ambisonic channel number 26. */
355  ambisonicACN27 = 53, /**< Fifth-order ambisonic channel number 27. */
356  ambisonicACN28 = 54, /**< Fifth-order ambisonic channel number 28. */
357  ambisonicACN29 = 55, /**< Fifth-order ambisonic channel number 29. */
358  ambisonicACN30 = 56, /**< Fifth-order ambisonic channel number 30. */
359  ambisonicACN31 = 57, /**< Fifth-order ambisonic channel number 31. */
360  ambisonicACN32 = 58, /**< Fifth-order ambisonic channel number 32. */
361  ambisonicACN33 = 59, /**< Fifth-order ambisonic channel number 33. */
362  ambisonicACN34 = 60, /**< Fifth-order ambisonic channel number 34. */
363  ambisonicACN35 = 61, /**< Fifth-order ambisonic channel number 35. */
364 
365  //==============================================================================
366  ambisonicW = ambisonicACN0, /**< Same as zero-th ambisonic channel number 0. */
367  ambisonicX = ambisonicACN3, /**< Same as first-order ambisonic channel number 3. */
368  ambisonicY = ambisonicACN1, /**< Same as first-order ambisonic channel number 1. */
369  ambisonicZ = ambisonicACN2, /**< Same as first-order ambisonic channel number 2. */
370 
371  //==============================================================================
372  bottomFrontLeft = 62, /**< Bottom Front Left (Bfl) */
373  bottomFrontCentre = 63, /**< Bottom Front Centre (Bfc) */
374  bottomFrontRight = 64, /**< Bottom Front Right (Bfr) */
375 
376  proxymityLeft = 65, /**< Proximity Left (Pl) */
377  proximityRight = 66, /**< Proximity Right (Pr) */
378 
379  bottomSideLeft = 67, /**< Bottom Side Left (Bsl) */
380  bottomSideRight = 68, /**< Bottom Side Right (Bsr) */
381  bottomRearLeft = 69, /**< Bottom Rear Left (Brl) */
382  bottomRearCentre = 70, /**< Bottom Rear Center (Brc) */
383  bottomRearRight = 71, /**< Bottom Rear Right (Brr) */
384 
385  //==============================================================================
386  discreteChannel0 = 128 /**< Non-typed individual channels are indexed upwards from this value. */
387  };
388 
389  /** Returns the name of a given channel type. For example, this method may return "Surround Left". */
390  static String JUCE_CALLTYPE getChannelTypeName (ChannelType);
391 
392  /** Returns the abbreviated name of a channel type. For example, this method may return "Ls". */
393  static String JUCE_CALLTYPE getAbbreviatedChannelTypeName (ChannelType);
394 
395  /** Returns the channel type from an abbreviated name. */
396  static ChannelType JUCE_CALLTYPE getChannelTypeFromAbbreviation (const String& abbreviation);
397 
398  //==============================================================================
399  enum
400  {
401  maxChannelsOfNamedLayout = 36
402  };
403 
404  /** Adds a channel to the set. */
405  void addChannel (ChannelType newChannelType);
406 
407  /** Removes a channel from the set. */
408  void removeChannel (ChannelType newChannelType);
409 
410  /** Returns the number of channels in the set. */
411  int size() const noexcept;
412 
413  /** Returns true if there are no channels in the set. */
414  bool isDisabled() const noexcept { return size() == 0; }
415 
416  /** Returns an array of all the types in this channel set. */
417  Array<ChannelType> getChannelTypes() const;
418 
419  /** Returns the type of one of the channels in the set, by index. */
420  ChannelType getTypeOfChannel (int channelIndex) const noexcept;
421 
422  /** Returns the index for a particular channel-type.
423  Will return -1 if the this set does not contain a channel of this type. */
424  int getChannelIndexForType (ChannelType type) const noexcept;
425 
426  /** Returns a string containing a whitespace-separated list of speaker types
427  corresponding to each channel. For example in a 5.1 arrangement,
428  the string may be "L R C Lfe Ls Rs". If the speaker arrangement is unknown,
429  the returned string will be empty.*/
430  String getSpeakerArrangementAsString() const;
431 
432  /** Returns an AudioChannelSet from a string returned by getSpeakerArrangementAsString
433 
434  @see getSpeakerArrangementAsString */
435  static AudioChannelSet fromAbbreviatedString (const String& set);
436 
437  /** Returns the description of the current layout. For example, this method may return
438  "Quadraphonic". Note that the returned string may not be unique. */
439  String getDescription() const;
440 
441  /** Returns if this is a channel layout made-up of discrete channels. */
442  bool isDiscreteLayout() const noexcept;
443 
444  /** Intersect two channel layouts. */
445  void intersect (const AudioChannelSet& other) { channels &= other.channels; }
446 
447  /** Creates a channel set for a list of channel types. This function will assert
448  if you supply a duplicate channel.
449 
450  Note that this method ignores the order in which the channels are given, i.e.
451  two arrays with the same elements but in a different order will still result
452  in the same channel set.
453  */
454  static AudioChannelSet JUCE_CALLTYPE channelSetWithChannels (const Array<ChannelType>&);
455 
456  //==============================================================================
457  // Conversion between wave and juce channel layout identifiers
458 
459  /** Create an AudioChannelSet from a WAVEFORMATEXTENSIBLE channelMask (typically used
460  in .wav files). */
461  static AudioChannelSet JUCE_CALLTYPE fromWaveChannelMask (int32 dwChannelMask);
462 
463  /** Returns a WAVEFORMATEXTENSIBLE channelMask representation (typically used in .wav
464  files) of the receiver.
465 
466  Returns -1 if the receiver cannot be represented in a WAVEFORMATEXTENSIBLE channelMask
467  representation.
468  */
469  int32 getWaveChannelMask() const noexcept;
470 
471  //==============================================================================
472  bool operator== (const AudioChannelSet&) const noexcept;
473  bool operator!= (const AudioChannelSet&) const noexcept;
474  bool operator< (const AudioChannelSet&) const noexcept;
475 
476 private:
477  //==============================================================================
478  BigInteger channels;
479 
480  //==============================================================================
481  explicit AudioChannelSet (uint32);
482  explicit AudioChannelSet (const Array<ChannelType>&);
483 
484  //==============================================================================
485  static int JUCE_CALLTYPE getAmbisonicOrderForNumChannels (int);
486 };
487 
488 } // namespace juce
489 
490 /** @}*/
juce::BigInteger
An arbitrarily large integer class.
Definition: juce_BigInteger.h:42
juce::Array
Holds a resizable array of primitive or copy-by-value objects.
Definition: juce_Array.h:59
JUCE_API
#define JUCE_API
This macro is added to all JUCE public class declarations.
Definition: juce_StandardHeader.h:143
juce::AudioChannelSet
Represents a set of audio channel types.
Definition: juce_AudioChannelSet.h:50
juce::AudioChannelSet::ChannelType
ChannelType
Represents different audio channel types.
Definition: juce_AudioChannelSet.h:279
juce::String
The JUCE String class!
Definition: juce_String.h:42