[arch-commits] Commit in juce/trunk (3 files)

David Runge dvzrv at archlinux.org
Wed Jan 8 20:15:02 UTC 2020


    Date: Wednesday, January 8, 2020 @ 20:15:01
  Author: dvzrv
Revision: 550605

upgpkg: juce 5.4.5-2: Adding juce_VSTInterface.h (developed by Debian's Johannes Zmolnig) to not require Steinberg's VST2 headers, when building VST plugins.

Added:
  juce/trunk/juce-5.4.5-juce_vst.patch
  juce/trunk/juce_VSTInterface.h
Modified:
  juce/trunk/PKGBUILD

---------------------------+
 PKGBUILD                  |   14 
 juce-5.4.5-juce_vst.patch |   67 +++
 juce_VSTInterface.h       |  813 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 891 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-01-08 20:11:19 UTC (rev 550604)
+++ PKGBUILD	2020-01-08 20:15:01 UTC (rev 550605)
@@ -3,7 +3,7 @@
 _name=JUCE
 pkgname=juce
 pkgver=5.4.5
-pkgrel=1
+pkgrel=2
 pkgdesc="Cross-platform C++ framework"
 arch=('x86_64')
 url="https://github.com/weareroli/juce/"
@@ -17,13 +17,17 @@
         "$pkgname-5.4.5-disable_usage_data.patch"
         "$pkgname-5.4.5-fix_include_defines.patch"
         "$pkgname-5.4.5-link_to_systemlibs.patch"
-        "$pkgname-5.4.5-jucepath.patch")
+        "$pkgname-5.4.5-juce_vst.patch"
+        "$pkgname-5.4.5-jucepath.patch"
+        "${pkgname}_VSTInterface.h")
 sha512sums=('4fcd6b9d6d43c00683fdd9cabbbdba61094eee61d50738fb89d7330c95552712f876a9b76e2557a390060a875b9f771f3ffe8135d2b2a5b60e2e01586a79ccbf'
             '5e7516d37deeb6faf9bd7ccf6b0da68f610992b9a4dfb8010baec1dba56cf2310c390c3d0876b5e2f30c89c69555ad34c088887a0254c59f121d2af38334b3d3'
             '85ca210a4d904a00de0830385a9e103493d47981acdb24335494fddc4af3f8b89cc05d1935cc4695c9e136bce5f91c1568c2135a8fe4ce565f396c3ba0153460'
             '69bc445275e88594ab6077285442bb3af97e2e4a7776f409d5e0ce2aae214a0eadedb82960c666ee45ea459f8ffb519873ecb0577eecf11e4728ee46e6ee042f'
             '062197ee6860c2c9cf655131df042df536d0b9aab58b304ca35a9d335231932dc49d92cb439c347f3dc863fc60ae6ae2357fbca8d057b9ce3b06fdbf16ff05df'
-            'c7ad5fadedd09f6f810cc27736f0def236f3b107de00079fb24509fc27750b26225bed7e9b19b0fa9873d5dae7b686cd9929298bb0107fd44645aad1a69c9168')
+            '570c56d27824bba9e766a9f78aaf0c24f2273c98f7d08dc2bb4fdaf90a84bc6bfdaed44c7f3b3c94b845841ae4e970c0bc99407a9604313d77378d323a84443a'
+            'c7ad5fadedd09f6f810cc27736f0def236f3b107de00079fb24509fc27750b26225bed7e9b19b0fa9873d5dae7b686cd9929298bb0107fd44645aad1a69c9168'
+            '37c0e4610a3fb6b928f0e57460354e3bbc8e284279acc4ee6ef560c6a3a016f58122d6cdaf27a519a4cc2a7c5e2a258a38f5d6d3863ded4154b39d221ae02a9a')
 
 prepare() {
   mv -v "${_name}-$pkgver" "$pkgname-$pkgver"
@@ -30,6 +34,8 @@
   cd "$pkgname-$pkgver"
   # setting juce path
   patch -Np1 -i "../$pkgname-5.4.5-jucepath.patch"
+  # setting juce vst
+  patch -Np1 -i "../$pkgname-5.4.5-juce_vst.patch"
   # disable checking for update in projucer
   patch -Np1 -i "../$pkgname-5.4.5-disable_update_check.patch"
   # disable sending usage data in projucer
@@ -81,6 +87,8 @@
   install -vDm 644 ChangeList.txt -t "${pkgdir}/usr/share/${pkgname}"
   install -vdm 755 "${pkgdir}/usr/share/${pkgname}/modules"
   cp -av modules/* "${pkgdir}/usr/share/${pkgname}/modules"
+  install -vDm 644 "../${pkgname}_VSTInterface.h" \
+    -t "${pkgdir}/usr/share/${pkgname}/modules/juce_audio_processors/format_types"
   # docs
   install -vdm 755 "${pkgdir}/usr/share/doc/${pkgname}/html"
   cp -av doxygen/doc/* "${pkgdir}/usr/share/doc/${pkgname}/html"

Added: juce-5.4.5-juce_vst.patch
===================================================================
--- juce-5.4.5-juce_vst.patch	                        (rev 0)
+++ juce-5.4.5-juce_vst.patch	2020-01-08 20:15:01 UTC (rev 550605)
@@ -0,0 +1,67 @@
+From: Debian Multimedia Maintainers <debian-multimedia at lists.debian.org>
+Date: Wed, 23 Oct 2019 09:44:36 +0200
+Subject: provide missing VST2 replacement header
+
+Last-Update: 2019-01-12
+
+backprted from the original JUCE-5.3.1 header
+Last-Update: 2019-01-12
+---
+ modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp          | 4 +---
+ .../juce_audio_processors/format_types/juce_VSTPluginFormat.cpp    | 7 ++++---
+ 2 files changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp
+index 9b9a7f9..632677d 100644
+--- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp
++++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp
+@@ -101,8 +101,7 @@ namespace Vst2
+ // field in the Projucer. The VST2 SDK can be obtained from the
+ // vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK or JUCE version 5.3.2. You
+ // also need a VST2 license from Steinberg to distribute VST2 plug-ins.
+-#include "pluginterfaces/vst2.x/aeffect.h"
+-#include "pluginterfaces/vst2.x/aeffectx.h"
++#include "../../juce_audio_processors/format_types/juce_VSTInterface.h"
+ }
+ 
+ using namespace juce;
+@@ -124,7 +123,6 @@ using namespace juce;
+  #pragma pack (push, 8)
+ #endif
+ 
+-#define JUCE_VSTINTERFACE_H_INCLUDED 1
+ 
+ #include "../utility/juce_IncludeModuleHeaders.h"
+ #include "../utility/juce_FakeMouseMoveGenerator.h"
+diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
+index 85dfb78..ad0a8e5 100644
+--- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
++++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
+@@ -49,7 +49,6 @@
+ #endif
+ 
+ #define VST_FORCE_DEPRECATED 0
+-#define JUCE_VSTINTERFACE_H_INCLUDED 1
+ 
+ namespace Vst2
+ {
+@@ -58,8 +57,7 @@ namespace Vst2
+ // paths or use the "VST (Legacy) SDK Folder" field in the Projucer. The VST2
+ // SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3
+ // SDK or JUCE version 5.3.2.
+-#include <pluginterfaces/vst2.x/aeffect.h>
+-#include <pluginterfaces/vst2.x/aeffectx.h>
++#include "../../juce_audio_processors/format_types/juce_VSTInterface.h"
+ }
+ 
+ #include "juce_VSTCommon.h"
+@@ -81,6 +79,9 @@ namespace Vst2
+ 
+ #include "juce_VSTMidiEventList.h"
+ 
++#define resvd2 hostSpace2
++#define nanoSeconds systemTimeNanoseconds
++
+ #if JUCE_MINGW
+  #ifndef WM_APPCOMMAND
+   #define WM_APPCOMMAND 0x0319

Added: juce_VSTInterface.h
===================================================================
--- juce_VSTInterface.h	                        (rev 0)
+++ juce_VSTInterface.h	2020-01-08 20:15:01 UTC (rev 550605)
@@ -0,0 +1,813 @@
+/*
+  ==============================================================================
+
+   This file is part of the JUCE library.
+   Copyright (c) 2017 - ROLI Ltd.
+
+   JUCE is an open source library subject to commercial or open-source
+   licensing.
+
+   By using JUCE, you agree to the terms of both the JUCE 5 End-User License
+   Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
+   27th April 2017).
+
+   End User License Agreement: www.juce.com/juce-5-licence
+   Privacy Policy: www.juce.com/juce-5-privacy-policy
+
+   Or: You may also use this code under the terms of the GPL v3 (see
+   www.gnu.org/licenses).
+
+   JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
+   EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
+   DISCLAIMED.
+
+  ==============================================================================
+*/
+
+/*
+  Copyright © 2019 IOhannes m zmölnig
+
+  Provide additional structs & enum-aliases, to allow compilation with JUCE-5.4.1
+
+  The names of the struct-members and enum-aliases have been derived by comparing
+  juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp of
+  both JUCE-5.3.2 and JUCE-5.4.1
+ */
+
+#define JUCE_VSTINTERFACE_H_INCLUDED
+
+using namespace juce;
+
+#if JUCE_MSVC
+ #define VSTINTERFACECALL __cdecl
+ #pragma pack(push)
+ #pragma pack(8)
+#elif JUCE_MAC || JUCE_IOS
+ #define VSTINTERFACECALL
+ #if JUCE_64BIT
+  #pragma options align=power
+ #else
+  #pragma options align=mac68k
+ #endif
+#else
+ #define VSTINTERFACECALL
+ #pragma pack(push, 8)
+#endif
+
+#define VSTCALLBACK VSTINTERFACECALL
+
+const int32 juceVstInterfaceVersion = 2400;
+#define kVstVersion 2400
+const int32 juceVstInterfaceIdentifier = 0x56737450;    // The "magic" identifier in the SDK is 'VstP'.
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstEffectInterface
+{
+    int32 interfaceIdentifier;
+    pointer_sized_int (VSTINTERFACECALL* dispatchFunction)          (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt);
+    void              (VSTINTERFACECALL* processAudioFunction)      (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples);
+    void              (VSTINTERFACECALL* setParameterValueFunction) (VstEffectInterface*, int32 parameterIndex, float value);
+    float             (VSTINTERFACECALL* getParameterValueFunction) (VstEffectInterface*, int32 parameterIndex);
+    int32 numPrograms;
+    int32 numParameters;
+    int32 numInputChannels;
+    int32 numOutputChannels;
+    int32 flags;
+    pointer_sized_int hostSpace1;
+    pointer_sized_int hostSpace2;
+    int32 latency;
+    int32 deprecated1;
+    int32 deprecated2;
+    float deprecated3;
+    void* effectPointer;
+    void* userPointer;
+    int32 plugInIdentifier;
+    int32 plugInVersion;
+    void (VSTINTERFACECALL* processAudioInplaceFunction)       (VstEffectInterface*, float**  inputs, float**  outputs, int32 numSamples);
+    void (VSTINTERFACECALL* processDoubleAudioInplaceFunction) (VstEffectInterface*, double** inputs, double** outputs, int32 numSamples);
+    char emptySpace[56];
+};
+
+struct AEffect;
+typedef pointer_sized_int (VSTINTERFACECALL*AEffectDispatcherProc)(AEffect*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt);
+typedef void  (VSTINTERFACECALL*AEffectProcessProc)(AEffect*, float** inputs, float** outputs, int32 numSamples);
+typedef void  (VSTINTERFACECALL*AEffectProcessDoubleProc)(AEffect*, double** inputs, double** outputs, int32 numSamples);
+typedef float (VSTINTERFACECALL*AEffectGetParameterProc)(AEffect*, int32 parameterIndex);
+typedef void  (VSTINTERFACECALL*AEffectSetParameterProc)(AEffect*, int32 parameterIndex, float value);
+
+struct AEffect
+{
+    int32 magic;
+  AEffectDispatcherProc dispatcher;
+  AEffectProcessProc process;
+  AEffectSetParameterProc setParameter;
+  AEffectGetParameterProc getParameter;
+    int32 numPrograms;
+    int32 numParams;
+    int32 numInputs;
+    int32 numOutputs;
+    int32 flags;
+    pointer_sized_int hostSpace1;
+    pointer_sized_int hostSpace2;
+    int32 initialDelay;
+    int32 deprecated1;
+    int32 deprecated2;
+    float deprecated3;
+    void* object;
+    void* userPointer;
+    int32 uniqueID;
+    int32 version;
+  AEffectProcessProc processReplacing;
+  AEffectProcessDoubleProc processDoubleReplacing;
+    char emptySpace[56];
+};
+
+
+typedef pointer_sized_int (VSTINTERFACECALL* VstHostCallback) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt);
+typedef pointer_sized_int (VSTINTERFACECALL* audioMasterCallback) (AEffect*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt);
+
+enum VstEffectInterfaceFlags
+{
+    vstEffectFlagHasEditor          = 1,
+    vstEffectFlagInplaceAudio       = 16,
+    vstEffectFlagDataInChunks       = 32,
+    vstEffectFlagIsSynth            = 256,
+    vstEffectFlagInplaceDoubleAudio = 4096
+
+    , effFlagsHasEditor = vstEffectFlagHasEditor
+    , effFlagsNoSoundInStop = 0 // FIXXME
+    , effFlagsProgramChunks = vstEffectFlagDataInChunks
+
+    , effFlagsCanReplacing = vstEffectFlagInplaceAudio
+    , effFlagsIsSynth = vstEffectFlagIsSynth
+    , effFlagsCanDoubleReplacing = vstEffectFlagInplaceDoubleAudio
+};
+
+//==============================================================================
+enum VstHostToPlugInOpcodes
+{
+    plugInOpcodeOpen,
+    plugInOpcodeClose,
+    plugInOpcodeSetCurrentProgram,
+    plugInOpcodeGetCurrentProgram,
+    plugInOpcodeSetCurrentProgramName,
+    plugInOpcodeGetCurrentProgramName,
+    plugInOpcodeGetParameterLabel,
+    plugInOpcodeGetParameterText,
+    plugInOpcodeGetParameterName,
+    plugInOpcodeSetSampleRate = plugInOpcodeGetParameterName + 2,
+    plugInOpcodeSetBlockSize,
+    plugInOpcodeResumeSuspend,
+    plugInOpcodeGetEditorBounds,
+    plugInOpcodeOpenEditor,
+    plugInOpcodeCloseEditor,
+    plugInOpcodeDrawEditor,
+    plugInOpcodeGetMouse,
+    plugInOpcodeEditorIdle = plugInOpcodeGetMouse + 2,
+    plugInOpcodeeffEditorTop,
+    plugInOpcodeSleepEditor,
+    plugInOpcodeIdentify,
+    plugInOpcodeGetData,
+    plugInOpcodeSetData,
+    plugInOpcodePreAudioProcessingEvents,
+    plugInOpcodeIsParameterAutomatable,
+    plugInOpcodeParameterValueForText,
+    plugInOpcodeGetProgramName = plugInOpcodeParameterValueForText + 2,
+    plugInOpcodeConnectInput = plugInOpcodeGetProgramName + 2,
+    plugInOpcodeConnectOutput,
+    plugInOpcodeGetInputPinProperties,
+    plugInOpcodeGetOutputPinProperties,
+    plugInOpcodeGetPlugInCategory,
+    plugInOpcodeSetSpeakerConfiguration = plugInOpcodeGetPlugInCategory + 7,
+    plugInOpcodeSetBypass = plugInOpcodeSetSpeakerConfiguration + 2,
+    plugInOpcodeGetPlugInName,
+    plugInOpcodeGetManufacturerName = plugInOpcodeGetPlugInName + 2,
+    plugInOpcodeGetManufacturerProductName,
+    plugInOpcodeGetManufacturerVersion,
+    plugInOpcodeManufacturerSpecific,
+    plugInOpcodeCanPlugInDo,
+    plugInOpcodeGetTailSize,
+    plugInOpcodeIdle,
+    plugInOpcodeKeyboardFocusRequired = plugInOpcodeIdle + 4,
+    plugInOpcodeGetVstInterfaceVersion,
+    plugInOpcodeGetCurrentMidiProgram = plugInOpcodeGetVstInterfaceVersion + 5,
+    plugInOpcodeGetSpeakerArrangement = plugInOpcodeGetCurrentMidiProgram + 6,
+    plugInOpcodeNextPlugInUniqueID,
+    plugInOpcodeStartProcess,
+    plugInOpcodeStopProcess,
+    plugInOpcodeSetNumberOfSamplesToProcess,
+    plugInOpcodeSetSampleFloatType = plugInOpcodeSetNumberOfSamplesToProcess + 4,
+    pluginOpcodeGetNumMidiInputChannels,
+    pluginOpcodeGetNumMidiOutputChannels,
+    plugInOpcodeMaximum = pluginOpcodeGetNumMidiOutputChannels
+
+    , effOpen = plugInOpcodeOpen
+    , effClose = plugInOpcodeClose
+    , effSetProgram = plugInOpcodeSetCurrentProgram
+    , effGetProgram = plugInOpcodeGetCurrentProgram
+    , effSetProgramName = plugInOpcodeSetCurrentProgramName
+    , effGetProgramName = plugInOpcodeGetCurrentProgramName
+    , effGetParamLabel = plugInOpcodeGetParameterLabel
+    , effGetParamDisplay = plugInOpcodeGetParameterText
+    , effGetParamName = plugInOpcodeGetParameterName
+    , effSetSampleRate = plugInOpcodeSetSampleRate
+    , effSetBlockSize = plugInOpcodeSetBlockSize
+    , effMainsChanged = plugInOpcodeResumeSuspend
+    , effEditGetRect = plugInOpcodeGetEditorBounds
+    , effEditOpen = plugInOpcodeOpenEditor
+    , effEditClose = plugInOpcodeCloseEditor
+    , effIdentify = plugInOpcodeIdentify
+    , effGetChunk = plugInOpcodeGetData
+    , effSetChunk = plugInOpcodeSetData
+    , effProcessEvents = plugInOpcodePreAudioProcessingEvents
+    , effCanBeAutomated = plugInOpcodeIsParameterAutomatable
+    , effString2Parameter = plugInOpcodeParameterValueForText
+    , effGetProgramNameIndexed = plugInOpcodeGetProgramName
+    , effGetInputProperties = plugInOpcodeGetInputPinProperties
+    , effGetOutputProperties = plugInOpcodeGetOutputPinProperties
+    , effGetPlugCategory = plugInOpcodeGetPlugInCategory
+    , effSetSpeakerArrangement = plugInOpcodeSetSpeakerConfiguration
+    , effSetBypass = plugInOpcodeSetBypass
+    , effGetEffectName = plugInOpcodeGetPlugInName
+    , effGetProductString = plugInOpcodeGetManufacturerProductName
+    , effGetVendorString = plugInOpcodeGetManufacturerName
+    , effGetVendorVersion = plugInOpcodeGetManufacturerVersion
+    , effVendorSpecific = plugInOpcodeManufacturerSpecific
+    , effCanDo = plugInOpcodeCanPlugInDo
+    , effGetTailSize = plugInOpcodeGetTailSize
+    , effKeysRequired = plugInOpcodeKeyboardFocusRequired
+    , effGetVstVersion = plugInOpcodeGetVstInterfaceVersion
+    , effGetCurrentMidiProgram = plugInOpcodeGetCurrentMidiProgram
+    , effGetSpeakerArrangement = plugInOpcodeGetSpeakerArrangement
+    , effSetTotalSampleToProcess = plugInOpcodeSetNumberOfSamplesToProcess
+    , effSetProcessPrecision = plugInOpcodeSetSampleFloatType
+    , effGetNumMidiInputChannels = pluginOpcodeGetNumMidiInputChannels
+    , effGetNumMidiOutputChannels = pluginOpcodeGetNumMidiOutputChannels
+
+    , effConnectInput = plugInOpcodeConnectInput
+    , effConnectOutput = plugInOpcodeConnectOutput
+    , effEditIdle = plugInOpcodeEditorIdle
+    , effIdle = plugInOpcodeIdle
+    , effShellGetNextPlugin = plugInOpcodeNextPlugInUniqueID
+    , effStartProcess = plugInOpcodeStartProcess
+    , effStopProcess = plugInOpcodeStopProcess
+};
+
+
+enum VstPlugInToHostOpcodes
+{
+    hostOpcodeParameterChanged,
+    hostOpcodeVstVersion,
+    hostOpcodeCurrentId,
+    hostOpcodeIdle,
+    hostOpcodePinConnected,
+    hostOpcodePlugInWantsMidi = hostOpcodePinConnected + 2,
+    hostOpcodeGetTimingInfo,
+    hostOpcodePreAudioProcessingEvents,
+    hostOpcodeSetTime,
+    hostOpcodeTempoAt,
+    hostOpcodeGetNumberOfAutomatableParameters,
+    hostOpcodeGetParameterInterval,
+    hostOpcodeIOModified,
+    hostOpcodeNeedsIdle,
+    hostOpcodeWindowSize,
+    hostOpcodeGetSampleRate,
+    hostOpcodeGetBlockSize,
+    hostOpcodeGetInputLatency,
+    hostOpcodeGetOutputLatency,
+    hostOpcodeGetPreviousPlugIn,
+    hostOpcodeGetNextPlugIn,
+    hostOpcodeWillReplace,
+    hostOpcodeGetCurrentAudioProcessingLevel,
+    hostOpcodeGetAutomationState,
+    hostOpcodeOfflineStart,
+    hostOpcodeOfflineReadSource,
+    hostOpcodeOfflineWrite,
+    hostOpcodeOfflineGetCurrentPass,
+    hostOpcodeOfflineGetCurrentMetaPass,
+    hostOpcodeSetOutputSampleRate,
+    hostOpcodeGetOutputSpeakerConfiguration,
+    hostOpcodeGetManufacturerName,
+    hostOpcodeGetProductName,
+    hostOpcodeGetManufacturerVersion,
+    hostOpcodeManufacturerSpecific,
+    hostOpcodeSetIcon,
+    hostOpcodeCanHostDo,
+    hostOpcodeGetLanguage,
+    hostOpcodeOpenEditorWindow,
+    hostOpcodeCloseEditorWindow,
+    hostOpcodeGetDirectory,
+    hostOpcodeUpdateView,
+    hostOpcodeParameterChangeGestureBegin,
+    hostOpcodeParameterChangeGestureEnd
+
+    , audioMasterProcessEvents = hostOpcodePreAudioProcessingEvents
+    , audioMasterWantMidi = hostOpcodePlugInWantsMidi
+    , audioMasterVendorSpecific = hostOpcodeManufacturerSpecific
+    , audioMasterAutomate = hostOpcodeParameterChanged
+    , audioMasterBeginEdit = hostOpcodeParameterChangeGestureBegin
+    , audioMasterEndEdit = hostOpcodeParameterChangeGestureEnd
+    , audioMasterUpdateDisplay = hostOpcodeUpdateView
+    , audioMasterIOChanged = hostOpcodeIOModified
+    , audioMasterCanDo = hostOpcodeCanHostDo
+    , audioMasterGetCurrentProcessLevel = hostOpcodeGetCurrentAudioProcessingLevel
+    , audioMasterGetTime = hostOpcodeGetTimingInfo
+    , audioMasterSizeWindow = hostOpcodeWindowSize
+    , audioMasterVersion = hostOpcodeVstVersion
+
+    , audioMasterCloseWindow = hostOpcodeCloseEditorWindow
+    , audioMasterCurrentId = hostOpcodeCurrentId
+    , audioMasterGetAutomationState = hostOpcodeGetAutomationState
+    , audioMasterGetBlockSize = hostOpcodeGetBlockSize
+    , audioMasterGetDirectory = hostOpcodeGetDirectory
+    , audioMasterGetInputLatency = hostOpcodeGetInputLatency
+    , audioMasterGetLanguage = hostOpcodeGetLanguage
+    , audioMasterGetNextPlug = hostOpcodeGetNextPlugIn
+    , audioMasterGetNumAutomatableParameters = hostOpcodeGetNumberOfAutomatableParameters
+    , audioMasterGetOutputLatency = hostOpcodeGetOutputLatency
+    , audioMasterGetOutputSpeakerArrangement = hostOpcodeGetOutputSpeakerConfiguration
+    , audioMasterGetParameterQuantization = hostOpcodeGetParameterInterval
+    , audioMasterGetPreviousPlug = hostOpcodeGetPreviousPlugIn
+    , audioMasterGetProductString = hostOpcodeGetProductName
+    , audioMasterGetSampleRate = hostOpcodeGetSampleRate
+    , audioMasterGetVendorString = hostOpcodeGetManufacturerName
+    , audioMasterGetVendorVersion = hostOpcodeGetManufacturerVersion
+    , audioMasterIdle = hostOpcodeIdle
+    , audioMasterNeedIdle = hostOpcodeNeedsIdle
+    , audioMasterOfflineGetCurrentMetaPass = hostOpcodeOfflineGetCurrentMetaPass
+    , audioMasterOfflineGetCurrentPass = hostOpcodeOfflineGetCurrentPass
+    , audioMasterOfflineRead = hostOpcodeOfflineReadSource
+    , audioMasterOfflineStart = hostOpcodeOfflineStart
+    , audioMasterOfflineWrite = hostOpcodeOfflineWrite
+    , audioMasterOpenWindow = hostOpcodeOpenEditorWindow
+    , audioMasterPinConnected = hostOpcodePinConnected
+    , audioMasterSetIcon = hostOpcodeSetIcon
+    , audioMasterSetOutputSampleRate = hostOpcodeSetOutputSampleRate
+    , audioMasterSetTime = hostOpcodeSetTime
+    , audioMasterTempoAt = hostOpcodeTempoAt
+    , audioMasterWillReplaceOrAccumulate = hostOpcodeWillReplace
+
+};
+
+//==============================================================================
+enum VstProcessingSampleType
+{
+    vstProcessingSampleTypeFloat,
+    vstProcessingSampleTypeDouble
+
+    , kVstProcessPrecision32 = vstProcessingSampleTypeFloat
+    , kVstProcessPrecision64 = vstProcessingSampleTypeDouble
+};
+
+//==============================================================================
+// These names must be identical to the Steinberg SDK so JUCE users can set
+// exactly what they want.
+typedef enum VstPlugInCategory
+{
+    kPlugCategUnknown,
+    kPlugCategEffect,
+    kPlugCategSynth,
+    kPlugCategAnalysis,
+    kPlugCategMastering,
+    kPlugCategSpacializer,
+    kPlugCategRoomFx,
+    kPlugSurroundFx,
+    kPlugCategRestoration,
+    kPlugCategOfflineProcess,
+    kPlugCategShell,
+    kPlugCategGenerator
+} VstPlugCategory;
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstEditorBounds
+{
+    int16 upper;
+    int16 leftmost;
+    int16 lower;
+    int16 rightmost;
+};
+struct ERect {
+    int16 top;
+    int16 left;
+    int16 bottom;
+    int16 right;
+};
+
+//==============================================================================
+enum VstMaxStringLengths
+{
+    vstMaxNameLength                     = 64,
+    vstMaxParameterOrPinLabelLength      = 64,
+    vstMaxParameterOrPinShortLabelLength = 8,
+    vstMaxCategoryLength                 = 24,
+    vstMaxManufacturerStringLength       = 64,
+    vstMaxPlugInNameStringLength         = 64
+
+    , kVstMaxLabelLen = vstMaxParameterOrPinLabelLength
+    , kVstMaxShortLabelLen = vstMaxParameterOrPinShortLabelLength
+    , kVstMaxProductStrLen = vstMaxPlugInNameStringLength
+    , kVstMaxVendorStrLen = vstMaxManufacturerStringLength
+};
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstPinInfo
+{
+    char text[vstMaxParameterOrPinLabelLength];
+    int32 flags;
+    int32 configurationType;
+    char shortText[vstMaxParameterOrPinShortLabelLength];
+    char unused[48];
+};
+struct VstPinProperties
+{
+    char label[vstMaxParameterOrPinLabelLength];
+    int32 flags;
+  int32 arrangementType;
+    char shortLabel[vstMaxParameterOrPinShortLabelLength];
+    char unused[48];
+};
+
+enum VstPinInfoFlags
+{
+    vstPinInfoFlagIsActive = 1,
+    vstPinInfoFlagIsStereo = 2,
+    vstPinInfoFlagValid    = 4
+
+    , kVstPinIsActive = vstPinInfoFlagIsActive
+    , kVstPinUseSpeaker = vstPinInfoFlagValid
+    , kVstPinIsStereo = vstPinInfoFlagIsStereo
+};
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstEvent
+{
+    int32 type;
+  int32 byteSize; // size;
+  int32 deltaFrames; //? sampleOffset;
+    int32 flags;
+    char content[16];
+};
+
+enum VstEventTypes
+{
+    vstMidiEventType  = 1,
+    vstSysExEventType = 6,
+    kVstMidiType = vstMidiEventType,
+    kVstSysExType = vstSysExEventType
+};
+
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstEvents
+{
+    int32 numEvents;
+    pointer_sized_int future;
+    VstEvent* events[2];
+};
+
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstMidiEvent
+{
+    int32 type;
+  int32 byteSize; // size;
+  int32 deltaFrames; //? sampleOffset;
+    int32 flags;
+  int32 noteLength; // noteSampleLength;
+  int32 noteOffset; // noteSampleOffset;
+    char midiData[4];
+  char detune; // tuning;
+  char noteOffVelocity; // noteVelocityOff;
+    char future1;
+    char future2;
+};
+
+enum VstMidiEventFlags
+{
+    vstMidiEventIsRealtime = 1
+};
+
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstSysExEvent
+{
+    int32 type;
+  int32 byteSize; // size;
+  int32 deltaFrames; //? offsetSamples;
+    int32 flags;
+  int32 dumpBytes; // sysExDumpSize;
+  pointer_sized_int resvd1; // future1;
+  char* sysexDump; // sysExDump;
+  pointer_sized_int resvd2; // future2;
+};
+typedef VstSysExEvent VstMidiSysexEvent;
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstTimingInformation
+{
+    double samplePosition;
+    double sampleRate;
+    double systemTimeNanoseconds;
+    double musicalPosition;
+    double tempoBPM;
+    double lastBarPosition;
+    double loopStartPosition;
+    double loopEndPosition;
+    int32 timeSignatureNumerator;
+    int32 timeSignatureDenominator;
+    int32 smpteOffset;
+    int32 smpteRate;
+    int32 samplesToNearestClock;
+    int32 flags;
+};
+struct VstTimeInfo
+{
+  double samplePos;
+    double sampleRate;
+    double systemTimeNanoseconds;
+  double ppqPos;
+  double tempo;
+    double barStartPos;
+  double cycleStartPos;
+  double cycleEndPos;
+  int32 timeSigNumerator;
+  int32 timeSigDenominator;
+    int32 smpteOffset;
+  int32 smpteFrameRate;
+    int32 samplesToNearestClock;
+    int32 flags;
+};
+
+enum VstTimingInformationFlags
+{
+    vstTimingInfoFlagTransportChanged          = 1,
+    vstTimingInfoFlagCurrentlyPlaying          = 2,
+    vstTimingInfoFlagLoopActive                = 4,
+    vstTimingInfoFlagCurrentlyRecording        = 8,
+    vstTimingInfoFlagAutomationWriteModeActive = 64,
+    vstTimingInfoFlagAutomationReadModeActive  = 128,
+    vstTimingInfoFlagNanosecondsValid          = 256,
+    vstTimingInfoFlagMusicalPositionValid      = 512,
+    vstTimingInfoFlagTempoValid                = 1024,
+    vstTimingInfoFlagLastBarPositionValid      = 2048,
+    vstTimingInfoFlagLoopPositionValid         = 4096,
+    vstTimingInfoFlagTimeSignatureValid        = 8192,
+    vstTimingInfoFlagSmpteValid                = 16384,
+    vstTimingInfoFlagNearestClockValid         = 32768
+
+    , kVstTransportPlaying = vstTimingInfoFlagCurrentlyPlaying
+    , kVstTransportCycleActive = vstTimingInfoFlagLoopActive
+    , kVstTransportRecording = vstTimingInfoFlagCurrentlyRecording
+    , kVstPpqPosValid = vstTimingInfoFlagMusicalPositionValid
+    , kVstTempoValid = vstTimingInfoFlagTempoValid
+    , kVstBarsValid = vstTimingInfoFlagLastBarPositionValid
+    , kVstCyclePosValid = vstTimingInfoFlagLoopPositionValid
+    , kVstTimeSigValid = vstTimingInfoFlagTimeSignatureValid
+    , kVstSmpteValid = vstTimingInfoFlagSmpteValid
+    , kVstClockValid = vstTimingInfoFlagNearestClockValid
+
+    , kVstAutomationReading = vstTimingInfoFlagAutomationReadModeActive
+    , kVstAutomationWriting = vstTimingInfoFlagAutomationWriteModeActive
+    , kVstNanosValid = vstTimingInfoFlagNanosecondsValid
+    , kVstTransportChanged = vstTimingInfoFlagTransportChanged
+};
+
+//==============================================================================
+enum VstSmpteRates
+{
+    vstSmpteRateFps24,
+    vstSmpteRateFps25,
+    vstSmpteRateFps2997,
+    vstSmpteRateFps30,
+    vstSmpteRateFps2997drop,
+    vstSmpteRateFps30drop,
+
+    vstSmpteRate16mmFilm,
+    vstSmpteRate35mmFilm,
+
+    vstSmpteRateFps239 = vstSmpteRate35mmFilm + 3,
+    vstSmpteRateFps249,
+    vstSmpteRateFps599,
+    vstSmpteRateFps60
+
+    , kVstSmpte239fps = vstSmpteRateFps239
+    , kVstSmpte24fps = vstSmpteRateFps24
+    , kVstSmpte25fps = vstSmpteRateFps25
+    , kVstSmpte2997fps = vstSmpteRateFps2997
+    , kVstSmpte30fps = vstSmpteRateFps30
+    , kVstSmpte2997dfps = vstSmpteRateFps2997drop
+    , kVstSmpte30dfps = vstSmpteRateFps30drop
+    , kVstSmpteFilm16mm = vstSmpteRate16mmFilm
+    , kVstSmpteFilm35mm = vstSmpteRate35mmFilm
+    , kVstSmpte249fps = vstSmpteRateFps249
+    , kVstSmpte599fps = vstSmpteRateFps599
+    , kVstSmpte60fps = vstSmpteRateFps60
+};
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstIndividualSpeakerInfo
+{
+    float azimuthalAngle;
+    float elevationAngle;
+    float radius;
+    float reserved;
+    char label[vstMaxNameLength];
+    int32 type;
+    char unused[28];
+};
+typedef VstIndividualSpeakerInfo VstSpeakerProperties;
+
+enum VstIndividualSpeakerType
+{
+    vstIndividualSpeakerTypeUndefined = 0x7fffffff,
+    vstIndividualSpeakerTypeMono = 0,
+    vstIndividualSpeakerTypeLeft,
+    vstIndividualSpeakerTypeRight,
+    vstIndividualSpeakerTypeCentre,
+    vstIndividualSpeakerTypeLFE,
+    vstIndividualSpeakerTypeLeftSurround,
+    vstIndividualSpeakerTypeRightSurround,
+    vstIndividualSpeakerTypeLeftCentre,
+    vstIndividualSpeakerTypeRightCentre,
+    vstIndividualSpeakerTypeSurround,
+    vstIndividualSpeakerTypeCentreSurround = vstIndividualSpeakerTypeSurround,
+    vstIndividualSpeakerTypeLeftRearSurround,
+    vstIndividualSpeakerTypeRightRearSurround,
+    vstIndividualSpeakerTypeTopMiddle,
+    vstIndividualSpeakerTypeTopFrontLeft,
+    vstIndividualSpeakerTypeTopFrontCentre,
+    vstIndividualSpeakerTypeTopFrontRight,
+    vstIndividualSpeakerTypeTopRearLeft,
+    vstIndividualSpeakerTypeTopRearCentre,
+    vstIndividualSpeakerTypeTopRearRight,
+    vstIndividualSpeakerTypeLFE2
+
+    , kSpeakerL = vstIndividualSpeakerTypeLeft
+    , kSpeakerR = vstIndividualSpeakerTypeRight
+    , kSpeakerC = vstIndividualSpeakerTypeCentre
+    , kSpeakerLfe = vstIndividualSpeakerTypeLFE
+    , kSpeakerLs = vstIndividualSpeakerTypeLeftSurround
+    , kSpeakerRs = vstIndividualSpeakerTypeRightSurround
+    , kSpeakerLc = vstIndividualSpeakerTypeLeftCentre
+    , kSpeakerRc = vstIndividualSpeakerTypeRightCentre
+    , kSpeakerS = vstIndividualSpeakerTypeSurround
+    , kSpeakerSl = vstIndividualSpeakerTypeLeftRearSurround
+    , kSpeakerSr = vstIndividualSpeakerTypeRightRearSurround
+    , kSpeakerTm = vstIndividualSpeakerTypeTopMiddle
+    , kSpeakerTfl = vstIndividualSpeakerTypeTopFrontLeft
+    , kSpeakerTfc = vstIndividualSpeakerTypeTopFrontCentre
+    , kSpeakerTfr = vstIndividualSpeakerTypeTopFrontRight
+    , kSpeakerTrl = vstIndividualSpeakerTypeTopRearLeft
+    , kSpeakerTrc = vstIndividualSpeakerTypeTopRearCentre
+    , kSpeakerTrr = vstIndividualSpeakerTypeTopRearRight
+    , kSpeakerLfe2 = vstIndividualSpeakerTypeLFE2
+};
+
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct VstSpeakerConfiguration
+{
+    int32 type;
+  int32 numChannels; // numberOfChannels;
+    VstIndividualSpeakerInfo speakers[8];
+};
+typedef VstSpeakerConfiguration VstSpeakerArrangement;
+
+enum VstSpeakerConfigurationType
+{
+    vstSpeakerConfigTypeUser  = -2,
+    vstSpeakerConfigTypeEmpty = -1,
+    vstSpeakerConfigTypeMono  = 0,
+    vstSpeakerConfigTypeLR,
+    vstSpeakerConfigTypeLsRs,
+    vstSpeakerConfigTypeLcRc,
+    vstSpeakerConfigTypeSlSr,
+    vstSpeakerConfigTypeCLfe,
+    vstSpeakerConfigTypeLRC,
+    vstSpeakerConfigTypeLRS,
+    vstSpeakerConfigTypeLRCLfe,
+    vstSpeakerConfigTypeLRLfeS,
+    vstSpeakerConfigTypeLRCS,
+    vstSpeakerConfigTypeLRLsRs,
+    vstSpeakerConfigTypeLRCLfeS,
+    vstSpeakerConfigTypeLRLfeLsRs,
+    vstSpeakerConfigTypeLRCLsRs,
+    vstSpeakerConfigTypeLRCLfeLsRs,
+    vstSpeakerConfigTypeLRCLsRsCs,
+    vstSpeakerConfigTypeLRLsRsSlSr,
+    vstSpeakerConfigTypeLRCLfeLsRsCs,
+    vstSpeakerConfigTypeLRLfeLsRsSlSr,
+    vstSpeakerConfigTypeLRCLsRsLcRc,
+    vstSpeakerConfigTypeLRCLsRsSlSr,
+    vstSpeakerConfigTypeLRCLfeLsRsLcRc,
+    vstSpeakerConfigTypeLRCLfeLsRsSlSr,
+    vstSpeakerConfigTypeLRCLsRsLcRcCs,
+    vstSpeakerConfigTypeLRCLsRsCsSlSr,
+    vstSpeakerConfigTypeLRCLfeLsRsLcRcCs,
+    vstSpeakerConfigTypeLRCLfeLsRsCsSlSr,
+    vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2
+
+    , kSpeakerArrMono = vstSpeakerConfigTypeMono
+    , kSpeakerArrStereo = vstSpeakerConfigTypeLR
+    , kSpeakerArrStereoCLfe = vstSpeakerConfigTypeCLfe
+    , kSpeakerArrStereoCenter = vstSpeakerConfigTypeLcRc
+    , kSpeakerArrStereoSide = vstSpeakerConfigTypeSlSr
+    , kSpeakerArrStereoSurround = vstSpeakerConfigTypeLsRs
+    , kSpeakerArr30Cine = vstSpeakerConfigTypeLRC
+    , kSpeakerArr31Cine = vstSpeakerConfigTypeLRCLfe
+    , kSpeakerArr40Cine = vstSpeakerConfigTypeLRCS
+    , kSpeakerArr41Cine = vstSpeakerConfigTypeLRCLfeS
+    , kSpeakerArr60Cine = vstSpeakerConfigTypeLRCLsRsCs
+    , kSpeakerArr61Cine = vstSpeakerConfigTypeLRCLfeLsRsCs
+    , kSpeakerArr70Cine = vstSpeakerConfigTypeLRCLsRsLcRc // create7point0SDDS
+    , kSpeakerArr71Cine = vstSpeakerConfigTypeLRCLfeLsRsLcRc
+    , kSpeakerArr80Cine = vstSpeakerConfigTypeLRCLsRsLcRcCs
+    , kSpeakerArr81Cine = vstSpeakerConfigTypeLRCLfeLsRsLcRcCs
+    , kSpeakerArr30Music = vstSpeakerConfigTypeLRS
+    , kSpeakerArr31Music = vstSpeakerConfigTypeLRLfeS
+    , kSpeakerArr40Music = vstSpeakerConfigTypeLRLsRs
+    , kSpeakerArr41Music = vstSpeakerConfigTypeLRLfeLsRs
+    , kSpeakerArr60Music = vstSpeakerConfigTypeLRLsRsSlSr
+    , kSpeakerArr61Music = vstSpeakerConfigTypeLRLfeLsRsSlSr
+    , kSpeakerArr70Music = vstSpeakerConfigTypeLRCLsRsSlSr // create7point0
+    , kSpeakerArr71Music = vstSpeakerConfigTypeLRCLfeLsRsSlSr
+    , kSpeakerArr80Music = vstSpeakerConfigTypeLRCLsRsCsSlSr
+    , kSpeakerArr81Music = vstSpeakerConfigTypeLRCLfeLsRsCsSlSr
+    , kSpeakerArr50 = vstSpeakerConfigTypeLRCLsRs
+    , kSpeakerArr51 = vstSpeakerConfigTypeLRCLfeLsRs
+    , kSpeakerArr102 = vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2
+    , kSpeakerArrEmpty = vstSpeakerConfigTypeEmpty
+    , kSpeakerArrUserDefined = vstSpeakerConfigTypeUser
+};
+
+#if JUCE_BIG_ENDIAN
+ #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (a | (((uint32) b) << 8) | (((uint32) c) << 16) | (((uint32) d) << 24))
+#else
+ #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (d | (((uint32) c) << 8) | (((uint32) b) << 16) | (((uint32) a) << 24))
+#endif
+
+enum PresonusExtensionConstants
+{
+    presonusVendorID                = JUCE_MULTICHAR_CONSTANT ('P', 'r', 'e', 'S'),
+    presonusSetContentScaleFactor   = JUCE_MULTICHAR_CONSTANT ('A', 'e', 'C', 's')
+};
+
+//==============================================================================
+/** Structure used for VSTs
+
+    @tags{Audio}
+*/
+struct vst2FxBank
+{
+    int32 magic1;
+    int32 size;
+    int32 magic2;
+    int32 version1;
+    int32 fxID;
+    int32 version2;
+    int32 elements;
+    int32 current;
+    char shouldBeZero[124];
+    int32 chunkSize;
+    char chunk[1];
+};
+
+#if JUCE_MSVC
+ #pragma pack(pop)
+#elif JUCE_MAC || JUCE_IOS
+ #pragma options align=reset
+#else
+ #pragma pack(pop)
+#endif



More information about the arch-commits mailing list