Skip to content

Commit

Permalink
Merge latest stable JUCE 8
Browse files Browse the repository at this point in the history
JUCE repo commit SHA: 4e106a76e834f701858328af3dade2b388669b84
  • Loading branch information
anjaldoshi committed Jun 15, 2024
1 parent 4ed2215 commit 693ab9e
Show file tree
Hide file tree
Showing 118 changed files with 2,105 additions and 1,147 deletions.
1 change: 1 addition & 0 deletions JuceLibraryCode/include_juce_core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@

#include "AppConfig.h"
#include <juce_core/juce_core.cpp>
#include <juce_core/juce_core_CompilationTime.cpp>

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -268,36 +268,74 @@ class JUCE_API AudioChannelSet
*/
static AudioChannelSet JUCE_CALLTYPE create7point1point6();

/** Creates a set for a 9.0.4 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
/** Creates a set for a 9.0.4 Atmos surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
Is equivalent to: k90_4 (VST3), AAX_eStemFormat_9_0_4 (AAX).
Is equivalent to: k90_4_W (VST3), AAX_eStemFormat_9_0_4 (AAX).
@see create9point0point4ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point4();

/** Creates a set for a 9.1.4 surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
/** Creates a set for a 9.1.4 Atmos surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
Is equivalent to: k91_4_W (VST3), AAX_eStemFormat_9_1_4 (AAX).
Is equivalent to: k91_4 (VST3), AAX_eStemFormat_9_1_4 (AAX).
@see create9point1point4ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point1point4();

/** Creates a set for a 9.0.6 surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
/** Creates a set for a 9.0.6 Atmos surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
Is equivalent to: k90_6 (VST3), AAX_eStemFormat_9_0_6 (AAX).
Is equivalent to: k90_6_W (VST3), AAX_eStemFormat_9_0_6 (AAX).
@see create9point0point6ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point6();

/** Creates a set for a 9.1.6 surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
/** Creates a set for a 9.1.6 Atmos surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
Older versions of the VST3 SDK only supported ITU versions of the 9.0.4, 9.1.4, 9.0.6, and
9.1.6 layouts, which have the front-channel ordering "L Lc C Rc R".
To maintain the correct relative channel ordering, JUCE would perform the following mapping:
L -> wideLeft, Lc -> left, Rc -> right, R -> wideRight
Note that the VST3 layout arranges the front speakers "L Lc C Rc R", but the JUCE layout
uses the arrangement "wideLeft left centre right wideRight". To maintain the relative
positions of the speakers, the channels will be remapped accordingly. This means that the
VST3 host's "L" channel will be received on a JUCE plugin's "wideLeft" channel, the
"Lc" channel will be received on a JUCE plugin's "left" channel, and so on.
The version of the VST3 SDK bundled with JUCE now supports Atmos versions of the above
layouts, which have the front-channel ordering "Lw L C R Rw". This order matches the
JUCE ordering, so no remapping is required.
Is equivalent to: k91_6 (VST3), kAudioChannelLayoutTag_Atmos_9_1_6 (CoreAudio).
create9point0point4(), create9point1point4(), create9point0point6(), and
create9point1point6() now correspond to the VST3 k90_4_W, k91_4_W, k90_6_W, and k91_6_W
Atmos layouts respectively.
If you need to support the old ITU layouts, use create9point0point4ITU(),
create9point1point4ITU(), create9point0point6ITU(), and create9point1point6ITU() instead.
Is equivalent to: k91_6_W (VST3), kAudioChannelLayoutTag_Atmos_9_1_6 (CoreAudio).
@see create9point1point6ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point1point6();

/** Creates a set for a 9.0.4 ITU surround setup:
left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre, leftSurroundSide, rightSurroundSide, topFrontLeft, topFrontRight, topRearLeft, topRearRight
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point4ITU();

/** Creates a set for a 9.1.4 ITU surround setup.
left, right, centre, LFE, leftSurround, rightSurround, leftCentre, rightCentre, leftSurroundSide, rightSurroundSide, topFrontLeft, topFrontRight, topRearLeft, topRearRight
*/
static AudioChannelSet JUCE_CALLTYPE create9point1point4ITU();

/** Creates a set for a 9.0.6 ITU surround setup.
left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre, leftSurroundSide, rightSurroundSide, topFrontLeft, topFrontRight, topRearLeft, topRearRight, topSideLeft, topSideRight
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point6ITU();

/** Creates a set for a 9.1.6 ITU surround setup.
left, right, centre, LFE, leftSurround, rightSurround, leftCentre, rightCentre, leftSurroundSide, rightSurroundSide, topFrontLeft, topFrontRight, topRearLeft, topRearRight, topSideLeft, topSideRight
*/
static AudioChannelSet JUCE_CALLTYPE create9point1point6ITU();

//==============================================================================
/** Creates a set for quadraphonic surround setup (left, right, leftSurround, rightSurround)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1051,7 +1051,7 @@ class CoreAudioInternal final : private Timer,

CoreAudioIODevice& owner;
int bitDepth = 32;
int xruns = 0;
std::atomic<int> xruns = 0;
Array<double> sampleRates;
Array<int> bufferSizes;
AudioDeviceID deviceID;
Expand Down Expand Up @@ -1159,7 +1159,7 @@ class CoreAudioInternal final : private Timer,
return x.mSelector == kAudioDeviceProcessorOverload;
});

intern.xruns += xruns;
intern.xruns += (int) xruns;

const auto detailsChanged = std::any_of (pa, pa + numAddresses, [] (const AudioObjectPropertyAddress& x)
{
Expand Down Expand Up @@ -1325,19 +1325,23 @@ class CoreAudioIODevice final : public AudioIODevice,

void start (AudioIODeviceCallback* callback) override
{
const ScopedLock sl (startStopLock);

if (internal->start (callback))
pendingCallback = nullptr;
}

void stop() override
{
stopAndGetLastCallback();

const ScopedLock sl (startStopLock);
pendingCallback = nullptr;
}

void stopWithPendingCallback()
{
const ScopedLock sl (closeLock);
const ScopedLock sl (startStopLock);

if (pendingCallback == nullptr)
pendingCallback = stopAndGetLastCallback();
Expand Down Expand Up @@ -1399,7 +1403,7 @@ class CoreAudioIODevice final : public AudioIODevice,
AudioIODeviceCallback* pendingCallback = nullptr;
AsyncRestarter* restarter = nullptr;
BigInteger inputChannelsRequested, outputChannelsRequested;
CriticalSection closeLock;
CriticalSection startStopLock;

AudioIODeviceCallback* stopAndGetLastCallback() const
{
Expand All @@ -1424,6 +1428,7 @@ class CoreAudioIODevice final : public AudioIODevice,
getCurrentSampleRate(),
getCurrentBufferSizeSamples());

const ScopedLock sl { startStopLock };
start (pendingCallback);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//-----------------------------------------------------------------------------
// LICENSE
// (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved
// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
//-----------------------------------------------------------------------------
This license applies only to files referencing this license,
for other files of the Software Development Kit the respective embedded license text
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@

- VST 3 API
- VST 3 Implementation Helper Classes
- AAX, AU, AUv3 and VST 2 wrappers
- AAX, AUv3 and AU Wrappers
- VST 3 plug-ins Examples

The full VST 3 SDK is available [here!](https://www.steinberg.net/en/company/developers.html). It contains :
The full VST 3 SDK is available [here!](https://www.steinberg.net/en/company/developers.html). It contains:

- VST 3 plug-in Test Host Application/Validator,
- the **Steinberg VST 3 Plug-In SDK Licensing Agreement** that you have to sign if you want to develop or host **VST 3** plug-ins.
Expand Down Expand Up @@ -146,25 +146,6 @@ Some more features implemented specifically for developers include:
git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
```

### Adding VST2 version

The **VST 2 SDK** is not part anymore of the **VST 3 SDK**, you have to use an older version of the SDK and copy the vst2sdk folder into the VST_SDK folder.
In order to build a VST2 version of the plug-in and a VST3 at the same time, you need to copy the VST2 folder into the VST3 folder, simply run the following commands:

- for macOS:

```c
cd TheFolderWhereYouDownloadTheSDK
./copy_vst2_to_vst3_sdk.sh
```

- for Windows:

```c
cd TheFolderWhereYouDownloadTheSDK
copy_vst2_to_vst3_sdk.bat
```

### Build the examples on Windows

- Create a folder for the build and move to this folder (using cd):
Expand Down Expand Up @@ -192,6 +173,7 @@ msbuild.exe vstsdk.sln
// (or alternatively for example for release)
cmake --build . --config Release
```
Note: If you have any issue with symbolic links, check [Preparation on Windows](https://steinbergmedia.github.io/vst3_dev_portal/pages/Getting+Started/Preparation+on+Windows.html) for potential solutions.

### Build the examples on macOS

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//-----------------------------------------------------------------------------
// LICENSE
// (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved
// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
//-----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
//
//-----------------------------------------------------------------------------
// LICENSE
// (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved
// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
//-----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
//
//-----------------------------------------------------------------------------
// LICENSE
// (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved
// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
//-----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
//
//-----------------------------------------------------------------------------
// LICENSE
// (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved
// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
//-----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
//
//-----------------------------------------------------------------------------
// LICENSE
// (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved
// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
//-----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
Expand Down
Loading

0 comments on commit 693ab9e

Please sign in to comment.