diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..c6780b9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,432 @@ +# To get started on a new plugin, copy this entire folder (containing this file and C++ sources) to +# a convenient location, and then start making modifications. + +# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks +# that the installed CMake will be able to understand the following CMakeLists, and ensures that +# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more +# information can be found in the CMake docs. + +cmake_minimum_required(VERSION 3.15) + + +if (WIN32) + #set (CMAKE_GENERATOR_TOOLSET ClangCL) + #static linking in Windows + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +endif() + +# If we are compiling for Mac OS we want to target OS versions down to 10.9 +option(UniversalBinary "Build universal binary for mac" ON) + +if (APPLE) + set (CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE INTERNAL "") + if (UniversalBinary) + set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE INTERNAL "") + #set(CMAKE_OSX_ARCHITECTURES arm64 x86_64) + endif() +endif() + + + + + + + +# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the +# `project()` command. `project()` sets up some helpful variables that describe source/binary +# directories, and the current project version. This is a standard CMake command. + +project(PaulXStretch VERSION 1.5.0) + +set(BUILDVERSION 107) + + +# If you've installed JUCE somehow (via a package manager, or directly using the CMake install +# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've +# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to +# include that subdirectory as part of the build. + +# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system +# or + + +# By default we don't want Xcode schemes to be made for modules, etc +set(CMAKE_XCODE_GENERATE_SCHEME OFF) + +# No ZERO_CHECK target (it helps bust cache for cmake) +set(CMAKE_SUPPRESS_REGENERATION true) + +# prevent install all +#set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true) + +# Adds all the module sources so they appear correctly in the IDE +# Must be set before JUCE is added as a sub-dir (or any targets are made) +# https://github.com/juce-framework/JUCE/commit/6b1b4cf7f6b1008db44411f2c8887d71a3348889 +set_property(GLOBAL PROPERTY USE_FOLDERS YES) + +# This is a failed attempt to bury ALL_BUILD in Targets/ +# This should be called before any target is made +# Bug in Xcode? https://gitlab.kitware.com/cmake/cmake/-/issues/21383 +set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "Targets") + +# Create a /Modules directory in the IDE with the JUCE Module code +option(JUCE_ENABLE_MODULE_SOURCE_GROUPS "Show all module sources in IDE projects" ON) + + +# include JUCE + +add_subdirectory(deps/juce EXCLUDE_FROM_ALL ) + + +# juce_add_modules(deps/ff_meters) + + + +set (FormatsToBuild VST3 Standalone) + +# On Mac, an AU version will be built too +if (APPLE) + list (APPEND FormatsToBuild AU) +endif() + +# If you are building a VST2 or AAX plugin, CMake needs to be told where to find these SDKs on your +# system. This setup should be done before calling `juce_add_plugin`. + +#juce_set_vst2_sdk_path("../VST2_SDK") +#juce_set_aax_sdk_path("../AAX_SDK_2p3p2") + + +if (AAX_SDK_PATH) + juce_set_aax_sdk_path (${AAX_SDK_PATH}) + + if (APPLE OR (NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))) + list (APPEND FormatsToBuild AAX) + endif() +endif() + +#if (VST2_SDK_PATH) +# juce_set_vst2_sdk_path (${VST2_SDK_PATH}) +# list (APPEND FormatsToBuild VST) +#endif() + + +set (MacPList " + +CFBundleVersion +${BUILDVERSION} +CFBundleURLTypes + + + CFBundleURLName + com.sonosaurus.paulxstretch + CFBundleURLSchemes + + paulxstretch + + + + +") + + +# `juce_add_plugin` adds a static library target with the name passed as the first argument +# (AudioPluginExample here). This target is a normal CMake target, but has a lot of extra properties set +# up by default. As well as this shared code static library, this function adds targets for each of +# the formats specified by the FORMATS arguments. This function accepts many optional arguments. +# Check the readme at `docs/CMake API.md` in the JUCE repo for the full list. + +function(sono_add_custom_plugin_target target_name product_name formats is_instrument plugincode) + + if (is_instrument) + set (vst3cats Instrument Network) + set (vst2cat "kPlugCategSynth") + else() + set (vst3cats Fx Network) + set (vst2cat "kPlugCategEffect") + endif() + + juce_add_plugin("${target_name}" + IS_SYNTH "${is_instrument}" + NEEDS_MIDI_INPUT TRUE + NEEDS_MIDI_OUTPUT TRUE + EDITOR_WANTS_KEYBOARD_FOCUS TRUE + COMPANY_NAME "Sonosaurus" + BUNDLE_ID "com.sonosaurus.paulxstretch" + MICROPHONE_PERMISSION_ENABLED TRUE + + ICON_BIG "images/paulxstretch_icon_1024_rounded.png" + ICON_SMALL "images/paulxstretch_icon_256_rounded.png" + NEEDS_WEB_BROWSER FALSE + VST2_CATEGORY "${vst2cat}" + VST3_CATEGORIES "${vst3cats}" + AAX_CATEGORY "AAX_EPlugInCategory_Effect" + + + # mac settings + HARDENED_RUNTIME_ENABLED TRUE + HARDENED_RUNTIME_OPTIONS "com.apple.security.device.audio-input" + PLIST_TO_MERGE "${MacPList}" + AU_MAIN_TYPE "kAudioUnitType_MusicEffect" + + + # other settings... + PLUGIN_MANUFACTURER_CODE Sono + PLUGIN_CODE ${plugincode} + FORMATS ${formats} + DESCRIPTION "PaulXStretch - Extreme Timestretching" + PRODUCT_NAME "${product_name}") + + juce_generate_juce_header("${target_name}") + + + set (HEADER_INCLUDES + # Source/PS_Source + # Source/WDL + ) + + set (LIB_PATHS "") + + #set (PLAT_COMPILE_DEFS + # $<$:LOGLEVEL=2> + # USE_CODEC_OPUS=1 + # AOO_TIMEFILTER_CHECK=0 + # AOO_STATIC) + + set(PlatSourceFiles + Source/CrossPlatformUtils.h + ) + + + # platform specific stuff + if (APPLE) + list (APPEND HEADER_INCLUDES deps/mac/include) + list (APPEND LIB_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/deps/mac/lib) + list (APPEND PlatSourceFiles Source/CrossPlatformUtilsMac.mm) + elseif (WIN32) + list (APPEND HEADER_INCLUDES deps/windows ../asiosdk/common) + list (APPEND PlatSourceFiles Source/CrossPlatformUtilsWindows.cpp) + + message (STATUS "Win generator platform is: ${CMAKE_VS_PLATFORM_NAME}" ) + if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") + list (APPEND LIB_PATHS + $<$:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Debug32> + $<$:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Release32> + ) + else() + list (APPEND LIB_PATHS + $<$:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Debug> + $<$:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Release> + ) + endif() + + list (APPEND PLAT_COMPILE_DEFS + _USE_MATH_DEFINES + WINVER=0x0601 + _WIN32_WINNT=0x0601) + else() + # Linux + list (APPEND PlatSourceFiles Source/CrossPlatformUtilsLinux.cpp) + list ( APPEND PLAT_COMPILE_DEFS + JUCE_USE_MP3AUDIOFORMAT=1 ) + endif() + + + + set(SourceFiles + ${PlatSourceFiles} + Source/CustomLookAndFeel.cpp + Source/CustomLookAndFeel.h + Source/CustomStandaloneFilterApp.cpp + Source/CustomStandaloneFilterWindow.h + Source/PluginEditor.cpp + Source/PluginEditor.h + Source/PluginProcessor.cpp + Source/PluginProcessor.h + Source/RenderSettingsComponent.cpp + Source/RenderSettingsComponent.h + Source/envelope_component.cpp + Source/envelope_component.h + Source/jcdp_envelope.h + Source/ps3_BufferingAudioSource.cpp + Source/ps3_BufferingAudioSource.h + #Source/PS_Source/fftw3.h + Source/PS_Source/PaulStretchControl.cpp + Source/PS_Source/Stretch.h + Source/PS_Source/version.h + Source/PS_Source/Player.cpp + Source/PS_Source/BinauralBeats.h + Source/PS_Source/StretchSource.h + Source/PS_Source/ProcessedStretch.cpp + Source/PS_Source/Input + Source/PS_Source/Input/AInputS.h + Source/PS_Source/Input/InputS.h + Source/PS_Source/BinauralBeats.cpp + Source/PS_Source/ProcessedStretch.h + Source/PS_Source/StretchSource.cpp + Source/PS_Source/Player.h + Source/PS_Source/globals.h + Source/PS_Source/globals.cpp + Source/PS_Source/Stretch.cpp + Source/PS_Source/FreeEdit.h + Source/PS_Source/FreeEdit.cpp + Source/PS_Source/PaulStretchControl.h + Source/PS_Source/Input/AInputS.h + Source/PS_Source/Input/InputS.h + Source/WDL/resample.h + Source/WDL/resample.cpp + Source/WDL/wdltypes.h + Source/WDL/denormal.h + Source/WDL/heapbuf.h + ) + + target_sources("${target_name}" PRIVATE + ${SourceFiles} + ) + + # No, we don't want our source buried in extra nested folders + set_target_properties("${target_name}" PROPERTIES FOLDER "") + + # The source tree should uhhh, still look like the source tree, yo + source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/Source PREFIX "" FILES ${SourceFiles}) + + # Move the INTERFACE auto-created JUCE library stuff into its own folder + source_group("JUCE Library Code" REGULAR_EXPRESSION "juce_") + + + #target_include_directories("${target_name}" + # INTERFACE + # $) + + + + target_include_directories("${target_name}" + PUBLIC + ${HEADER_INCLUDES} + ) + + + # Require at least C++17 to build `my_target` + target_compile_features("${target_name}" PRIVATE cxx_std_17) + + + # This cleans up the folder organization, especially on Xcode. + # It tucks the Plugin varieties into a "Targets" folder and generate an Xcode Scheme manually + # Xcode scheme generation is turned off globally to limit noise from other targets + # The non-hacky way of doing this is via the global PREDEFINED_TARGETS_FOLDER propety + # However that doesn't seem to be working in Xcode + # Not all plugin types (au, vst) available on each build type (win, macos, linux) + foreach(target ${formats} "All") + if(TARGET ${target_name}_${target}) + set_target_properties(${target_name}_${target} PROPERTIES + # Tuck the actual plugin targets into a folder where they won't bother us + FOLDER "Targets" + + # MacOS only: Sets the default executable that Xcode will open on build + # For this exact path to to work, manually build the AudioPluginHost.xcodeproj in the JUCE subdir + # XCODE_SCHEME_EXECUTABLE "${CMAKE_CURRENT_SOURCE_DIR}/deps/juce/extras/AudioPluginHost/Builds/MacOSX/build/Debug/AudioPluginHost.app" + + # Let us build the target in Xcode + XCODE_GENERATE_SCHEME ON) + endif() + endforeach() + + + target_compile_definitions("${target_name}" + PUBLIC + JUCE_WEB_BROWSER=0 + JUCE_USE_CURL=0 + JUCE_VST3_CAN_REPLACE_VST2=0 + JUCE_DISPLAY_SPLASH_SCREEN=0 + JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP=1 + JUCE_USE_WINDOWS_MEDIA_FORMAT=1 + JUCE_LOAD_CURL_SYMBOLS_LAZILY=1 + JUCE_ASIO=1 + JUCE_WASAPI=1 + JUCE_DIRECTSOUND=0 + JUCE_JACK=1 + JUCE_ALSA=1 + JUCE_USE_ANDROID_OBOE=1 + JUCE_USE_OBOE_STABILIZED_CALLBACK=1 + JUCE_LOAD_CURL_SYMBOLS_LAZILY=1 + FF_AUDIO_ALLOW_ALLOCATIONS_IN_MEASURE_BLOCK=0 + PAULXSTRETCH_BUILD_VERSION="${VERSION}" + ${PLAT_COMPILE_DEFS} ) + + juce_add_binary_data("${target_name}_PSData" SOURCES + images/freeze.svg + images/loop_icon.svg + images/passthru.svg + images/passthru_enabled.svg + images/pause_icon.svg + images/play_icon.svg + images/power.svg + images/power_sel.svg + images/record.svg + images/record_active.svg + images/skipback_icon.svg + ) + + set_target_properties(${target_name}_PSData PROPERTIES FOLDER "Targets") + + if (UNIX AND NOT APPLE) + target_compile_options("${target_name}_PSData" + PRIVATE + -fPIC + ) + + find_library(FFTWF_LIB fftw3f) + if (NOT FFTWF_LIB) + message(FATAL_ERROR "fftw3f library not found, please install libfftw3f develop package") + endif() + + if (JUCE_LINUX_TARGET_ARCHITECTURE MATCHES "arm" ) + message(STATUS "ARM platform, adding -march=native") + target_compile_options(${target_name} PUBLIC + -march=native + ) + endif() + + if (TARGET ${target_name}_Standalone) + # make linux executable all lower case + string(TOLOWER ${target_name} tmptargname) + + set_target_properties("${target_name}_Standalone" + PROPERTIES + OUTPUT_NAME ${tmptargname} + ) + endif() + + endif() + + + target_link_directories("${target_name}" INTERFACE + ${LIB_PATHS} + ) + + target_link_libraries("${target_name}" + PRIVATE + juce::juce_audio_utils + juce::juce_dsp + juce::juce_audio_plugin_client + juce::juce_cryptography + + ${target_name}_PSData + + fftw3f + PUBLIC + juce::juce_recommended_config_flags + juce::juce_recommended_lto_flags + # juce::juce_recommended_warning_flags + ) + +endfunction() + +# most of the targets +sono_add_custom_plugin_target(PaulXStretch PaulXStretch "${FormatsToBuild}" FALSE "Pxst") + +# Mobile targets +#sono_add_custom_plugin_target(PaulXStretch "AUv3 Standalone" FALSE "NBus") + +# add VSTi target +# sono_add_custom_plugin_target(PaulXStretchInst "PaulXStretchInstrument" "VST3" TRUE "IBus") + diff --git a/buildcmake.sh b/buildcmake.sh new file mode 100755 index 0000000..6eaefb2 --- /dev/null +++ b/buildcmake.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +OPTS="" +CONFIG="Release" + +if [ "$1" = "debug" ]; then + CONFIG="Debug" +fi + +JOBS=2 +if nproc &> /dev/null ; then + JOBS=$(nproc) +elif sysctl -n hw.logicalcpu &> /dev/null; then + JOBS=$(sysctl -n hw.logicalcpu) +elif [ -n "$NUMBER_OF_PROCESSORS" ] ; then + JOBS=$NUMBER_OF_PROCESSORS +fi + +OPTS="-j ${JOBS}" + +cmake --build build --config $CONFIG $OPTS + +if [ -d build32 ] ; then + cmake --build build32 --config $CONFIG $OPTS +fi + diff --git a/deps/mac/include/fftw3.h b/deps/mac/include/fftw3.h new file mode 100644 index 0000000..7bd4c6e --- /dev/null +++ b/deps/mac/include/fftw3.h @@ -0,0 +1,514 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * The following statement of license applies *only* to this header file, + * and *not* to the other files distributed with FFTW or derived therefrom: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/***************************** NOTE TO USERS ********************************* + * + * THIS IS A HEADER FILE, NOT A MANUAL + * + * If you want to know how to use FFTW, please read the manual, + * online at http://www.fftw.org/doc/ and also included with FFTW. + * For a quick start, see the manual's tutorial section. + * + * (Reading header files to learn how to use a library is a habit + * stemming from code lacking a proper manual. Arguably, it's a + * *bad* habit in most cases, because header files can contain + * interfaces that are not part of the public, stable API.) + * + ****************************************************************************/ + +#ifndef FFTW3_H +#define FFTW3_H + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/* If is included, use the C99 complex type. Otherwise + define a type bit-compatible with C99 complex */ +#if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I) +# define FFTW_DEFINE_COMPLEX(R, C) typedef R _Complex C +#else +# define FFTW_DEFINE_COMPLEX(R, C) typedef R C[2] +#endif + +#define FFTW_CONCAT(prefix, name) prefix ## name +#define FFTW_MANGLE_DOUBLE(name) FFTW_CONCAT(fftw_, name) +#define FFTW_MANGLE_FLOAT(name) FFTW_CONCAT(fftwf_, name) +#define FFTW_MANGLE_LONG_DOUBLE(name) FFTW_CONCAT(fftwl_, name) +#define FFTW_MANGLE_QUAD(name) FFTW_CONCAT(fftwq_, name) + +/* IMPORTANT: for Windows compilers, you should add a line + #define FFTW_DLL + here and in kernel/ifftw.h if you are compiling/using FFTW as a + DLL, in order to do the proper importing/exporting, or + alternatively compile with -DFFTW_DLL or the equivalent + command-line flag. This is not necessary under MinGW/Cygwin, where + libtool does the imports/exports automatically. */ +#if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__)) + /* annoying Windows syntax for shared-library declarations */ +# if defined(COMPILING_FFTW) /* defined in api.h when compiling FFTW */ +# define FFTW_EXTERN extern __declspec(dllexport) +# else /* user is calling FFTW; import symbol */ +# define FFTW_EXTERN extern __declspec(dllimport) +# endif +#else +# define FFTW_EXTERN extern +#endif + +/* specify calling convention (Windows only) */ +#if defined(_WIN32) || defined(__WIN32__) +# define FFTW_CDECL __cdecl +#else +# define FFTW_CDECL +#endif + +enum fftw_r2r_kind_do_not_use_me { + FFTW_R2HC=0, FFTW_HC2R=1, FFTW_DHT=2, + FFTW_REDFT00=3, FFTW_REDFT01=4, FFTW_REDFT10=5, FFTW_REDFT11=6, + FFTW_RODFT00=7, FFTW_RODFT01=8, FFTW_RODFT10=9, FFTW_RODFT11=10 +}; + +struct fftw_iodim_do_not_use_me { + int n; /* dimension size */ + int is; /* input stride */ + int os; /* output stride */ +}; + +#include /* for ptrdiff_t */ +struct fftw_iodim64_do_not_use_me { + ptrdiff_t n; /* dimension size */ + ptrdiff_t is; /* input stride */ + ptrdiff_t os; /* output stride */ +}; + +typedef void (FFTW_CDECL *fftw_write_char_func_do_not_use_me)(char c, void *); +typedef int (FFTW_CDECL *fftw_read_char_func_do_not_use_me)(void *); + +/* + huge second-order macro that defines prototypes for all API + functions. We expand this macro for each supported precision + + X: name-mangling macro + R: real data type + C: complex data type +*/ + +#define FFTW_DEFINE_API(X, R, C) \ + \ +FFTW_DEFINE_COMPLEX(R, C); \ + \ +typedef struct X(plan_s) *X(plan); \ + \ +typedef struct fftw_iodim_do_not_use_me X(iodim); \ +typedef struct fftw_iodim64_do_not_use_me X(iodim64); \ + \ +typedef enum fftw_r2r_kind_do_not_use_me X(r2r_kind); \ + \ +typedef fftw_write_char_func_do_not_use_me X(write_char_func); \ +typedef fftw_read_char_func_do_not_use_me X(read_char_func); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute)(const X(plan) p); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft)(int rank, const int *n, \ + C *in, C *out, int sign, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_1d)(int n, C *in, C *out, int sign, \ + unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_2d)(int n0, int n1, \ + C *in, C *out, int sign, unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_3d)(int n0, int n1, int n2, \ + C *in, C *out, int sign, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_dft)(int rank, const int *n, \ + int howmany, \ + C *in, const int *inembed, \ + int istride, int idist, \ + C *out, const int *onembed, \ + int ostride, int odist, \ + int sign, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_dft)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + C *in, C *out, \ + int sign, unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_split_dft)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *ri, R *ii, R *ro, R *io, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_dft)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + C *in, C *out, \ + int sign, unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_split_dft)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *ri, R *ii, R *ro, R *io, \ + unsigned flags); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_dft)(const X(plan) p, C *in, C *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_split_dft)(const X(plan) p, R *ri, R *ii, \ + R *ro, R *io); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_dft_r2c)(int rank, const int *n, \ + int howmany, \ + R *in, const int *inembed, \ + int istride, int idist, \ + C *out, const int *onembed, \ + int ostride, int odist, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c)(int rank, const int *n, \ + R *in, C *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c_1d)(int n,R *in,C *out,unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c_2d)(int n0, int n1, \ + R *in, C *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c_3d)(int n0, int n1, \ + int n2, \ + R *in, C *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_dft_c2r)(int rank, const int *n, \ + int howmany, \ + C *in, const int *inembed, \ + int istride, int idist, \ + R *out, const int *onembed, \ + int ostride, int odist, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r)(int rank, const int *n, \ + C *in, R *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r_1d)(int n,C *in,R *out,unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r_2d)(int n0, int n1, \ + C *in, R *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r_3d)(int n0, int n1, \ + int n2, \ + C *in, R *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_dft_r2c)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *in, C *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_dft_c2r)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + C *in, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_split_dft_r2c)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *in, R *ro, R *io, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_split_dft_c2r)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *ri, R *ii, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_dft_r2c)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *in, C *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_dft_c2r)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + C *in, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_split_dft_r2c)(int rank, const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *in, R *ro, R *io, \ + unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_split_dft_c2r)(int rank, const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *ri, R *ii, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_dft_r2c)(const X(plan) p, R *in, C *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_dft_c2r)(const X(plan) p, C *in, R *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_split_dft_r2c)(const X(plan) p, \ + R *in, R *ro, R *io); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_split_dft_c2r)(const X(plan) p, \ + R *ri, R *ii, R *out); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_r2r)(int rank, const int *n, \ + int howmany, \ + R *in, const int *inembed, \ + int istride, int idist, \ + R *out, const int *onembed, \ + int ostride, int odist, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r)(int rank, const int *n, R *in, R *out, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r_1d)(int n, R *in, R *out, \ + X(r2r_kind) kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r_2d)(int n0, int n1, R *in, R *out, \ + X(r2r_kind) kind0, X(r2r_kind) kind1, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r_3d)(int n0, int n1, int n2, \ + R *in, R *out, X(r2r_kind) kind0, \ + X(r2r_kind) kind1, X(r2r_kind) kind2, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_r2r)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *in, R *out, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_r2r)(int rank, const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *in, R *out, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_r2r)(const X(plan) p, R *in, R *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(destroy_plan)(X(plan) p); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(forget_wisdom)(void); \ +FFTW_EXTERN void \ +FFTW_CDECL X(cleanup)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(set_timelimit)(double t); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(plan_with_nthreads)(int nthreads); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(init_threads)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(cleanup_threads)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(make_planner_thread_safe)(void); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(export_wisdom_to_filename)(const char *filename); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(export_wisdom_to_file)(FILE *output_file); \ + \ +FFTW_EXTERN char * \ +FFTW_CDECL X(export_wisdom_to_string)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(export_wisdom)(X(write_char_func) write_char, \ + void *data); \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_system_wisdom)(void); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom_from_filename)(const char *filename); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom_from_file)(FILE *input_file); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom_from_string)(const char *input_string); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom)(X(read_char_func) read_char, void *data); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(fprint_plan)(const X(plan) p, FILE *output_file); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(print_plan)(const X(plan) p); \ + \ +FFTW_EXTERN char * \ +FFTW_CDECL X(sprint_plan)(const X(plan) p); \ + \ +FFTW_EXTERN void * \ +FFTW_CDECL X(malloc)(size_t n); \ + \ +FFTW_EXTERN R * \ +FFTW_CDECL X(alloc_real)(size_t n); \ +FFTW_EXTERN C * \ +FFTW_CDECL X(alloc_complex)(size_t n); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(free)(void *p); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(flops)(const X(plan) p, \ + double *add, double *mul, double *fmas); \ +FFTW_EXTERN double \ +FFTW_CDECL X(estimate_cost)(const X(plan) p); \ + \ +FFTW_EXTERN double \ +FFTW_CDECL X(cost)(const X(plan) p); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(alignment_of)(R *p); \ + \ +FFTW_EXTERN const char X(version)[]; \ +FFTW_EXTERN const char X(cc)[]; \ +FFTW_EXTERN const char X(codelet_optim)[]; + + +/* end of FFTW_DEFINE_API macro */ + +FFTW_DEFINE_API(FFTW_MANGLE_DOUBLE, double, fftw_complex) +FFTW_DEFINE_API(FFTW_MANGLE_FLOAT, float, fftwf_complex) +FFTW_DEFINE_API(FFTW_MANGLE_LONG_DOUBLE, long double, fftwl_complex) + +/* __float128 (quad precision) is a gcc extension on i386, x86_64, and ia64 + for gcc >= 4.6 (compiled in FFTW with --enable-quad-precision) */ +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) \ + && !(defined(__ICC) || defined(__INTEL_COMPILER) || defined(__CUDACC__) || defined(__PGI)) \ + && (defined(__i386__) || defined(__x86_64__) || defined(__ia64__)) +# if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I) +/* note: __float128 is a typedef, which is not supported with the _Complex + keyword in gcc, so instead we use this ugly __attribute__ version. + However, we can't simply pass the __attribute__ version to + FFTW_DEFINE_API because the __attribute__ confuses gcc in pointer + types. Hence redefining FFTW_DEFINE_COMPLEX. Ugh. */ +# undef FFTW_DEFINE_COMPLEX +# define FFTW_DEFINE_COMPLEX(R, C) typedef _Complex float __attribute__((mode(TC))) C +# endif +FFTW_DEFINE_API(FFTW_MANGLE_QUAD, __float128, fftwq_complex) +#endif + +#define FFTW_FORWARD (-1) +#define FFTW_BACKWARD (+1) + +#define FFTW_NO_TIMELIMIT (-1.0) + +/* documented flags */ +#define FFTW_MEASURE (0U) +#define FFTW_DESTROY_INPUT (1U << 0) +#define FFTW_UNALIGNED (1U << 1) +#define FFTW_CONSERVE_MEMORY (1U << 2) +#define FFTW_EXHAUSTIVE (1U << 3) /* NO_EXHAUSTIVE is default */ +#define FFTW_PRESERVE_INPUT (1U << 4) /* cancels FFTW_DESTROY_INPUT */ +#define FFTW_PATIENT (1U << 5) /* IMPATIENT is default */ +#define FFTW_ESTIMATE (1U << 6) +#define FFTW_WISDOM_ONLY (1U << 21) + +/* undocumented beyond-guru flags */ +#define FFTW_ESTIMATE_PATIENT (1U << 7) +#define FFTW_BELIEVE_PCOST (1U << 8) +#define FFTW_NO_DFT_R2HC (1U << 9) +#define FFTW_NO_NONTHREADED (1U << 10) +#define FFTW_NO_BUFFERING (1U << 11) +#define FFTW_NO_INDIRECT_OP (1U << 12) +#define FFTW_ALLOW_LARGE_GENERIC (1U << 13) /* NO_LARGE_GENERIC is default */ +#define FFTW_NO_RANK_SPLITS (1U << 14) +#define FFTW_NO_VRANK_SPLITS (1U << 15) +#define FFTW_NO_VRECURSE (1U << 16) +#define FFTW_NO_SIMD (1U << 17) +#define FFTW_NO_SLOW (1U << 18) +#define FFTW_NO_FIXED_RADIX_LARGE_N (1U << 19) +#define FFTW_ALLOW_PRUNING (1U << 20) + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* FFTW3_H */ diff --git a/deps/mac/lib/libfftw3f.a b/deps/mac/lib/libfftw3f.a new file mode 100644 index 0000000..f8e39ae Binary files /dev/null and b/deps/mac/lib/libfftw3f.a differ diff --git a/release/buildmac.sh b/release/buildmac.sh index a708465..c3ab7a2 100755 --- a/release/buildmac.sh +++ b/release/buildmac.sh @@ -1,11 +1,11 @@ #!/bin/bash -cd ../Builds/MacOSX +cd .. +rm -rf build -if ! xcodebuild -configuration Release -scheme "PaulXStretch - All" ; then +./setupcmake.sh + +./buildcmake.sh - echo Error BUILDING - exit 2 -fi diff --git a/release/codesign.sh b/release/codesign.sh index 12e9c7d..b9925aa 100755 --- a/release/codesign.sh +++ b/release/codesign.sh @@ -13,16 +13,14 @@ codesign ${POPTS} --entitlements ${MAINNAME}.entitlements ${MAINNAME}/${MAINNAM codesign ${POPTS} --entitlements ${MAINNAME}.entitlements ${MAINNAME}/${MAINNAME}.vst3 -if false ; then - - # AAX is special - if [ -n "${AAXSIGNCMD}" ]; then +# AAX is special +if [ -n "${AAXSIGNCMD}" ]; then echo "Signing AAX plugin" ${AAXSIGNCMD} --in ${MAINNAME}/${MAINNAME}.aaxplugin --out ${MAINNAME}/${MAINNAME}.aaxplugin - fi fi + if [ "x$1" = "xonly" ] ; then echo Code-signing only exit 0 @@ -54,12 +52,3 @@ if ! ./notarize-app.sh --resume=tmp/sbvst3.uuid ${MAINNAME}/${MAINNAME}.vst3 ; t fi -#if ! ./notarize-app.sh SonoBus/SonoBus.aaxplugin ; then -# echo Notarization AAX failed -# exit 2 -#fi - - - - - diff --git a/release/distmac.sh b/release/distmac.sh index 64e31da..d1977d1 100755 --- a/release/distmac.sh +++ b/release/distmac.sh @@ -10,24 +10,25 @@ VERSION=$1 MAINNAME="PaulXStretch" -BUILDDIR=../Builds/MacOSX/build/Release -#BUILDDIR=../build/SonoBus_artefacts/Release -#INSTBUILDDIR=../build/SonoBusInst_artefacts/Release +#BUILDDIR=../Builds/MacOSX/build/Release +BUILDDIR=../build/${MAINNAME}_artefacts/Release +#INSTBUILDDIR=../build/${MAINNAME}Inst_artefacts/Release rm -rf ${MAINNAME} mkdir -p ${MAINNAME} -#cp ../doc/README_MAC.txt SonoBus/ +#cp ../doc/README_MAC.txt ${MAINNAME}/ -#cp -pLRv ${BUILDDIR}/Standalone/${MAINNAME}.app ${MAINNAME}/ -#cp -pLRv ${BUILDDIR}/AU/${MAINNAME}.component ${MAINNAME}/ -#cp -pLRv ${BUILDDIR}/VST3/${MAINNAME}.vst3 ${MAINNAME}/ +cp -pLRv ${BUILDDIR}/Standalone/${MAINNAME}.app ${MAINNAME}/ +cp -pLRv ${BUILDDIR}/AU/${MAINNAME}.component ${MAINNAME}/ +cp -pLRv ${BUILDDIR}/VST3/${MAINNAME}.vst3 ${MAINNAME}/ +cp -pRHv ${BUILDDIR}/AAX/${MAINNAME}.aaxplugin ${MAINNAME}/ -cp -pLRv ${BUILDDIR}/${MAINNAME}.app ${MAINNAME}/ -cp -pLRv ${BUILDDIR}/${MAINNAME}.component ${MAINNAME}/ -cp -pLRv ${BUILDDIR}/${MAINNAME}.vst3 ${MAINNAME}/ +#cp -pLRv ${BUILDDIR}/${MAINNAME}.app ${MAINNAME}/ +#cp -pLRv ${BUILDDIR}/${MAINNAME}.component ${MAINNAME}/ +#cp -pLRv ${BUILDDIR}/${MAINNAME}.vst3 ${MAINNAME}/ diff --git a/release/macpkg/PaulXStretch.pkgproj b/release/macpkg/PaulXStretch.pkgproj index 636c737..e7b0d92 100644 --- a/release/macpkg/PaulXStretch.pkgproj +++ b/release/macpkg/PaulXStretch.pkgproj @@ -499,12 +499,12 @@ USE_HFS+_COMPRESSION VERSION - 1.0.0 + 1.0 TYPE 0 UUID - E4E37793-C22E-485C-B28E-D0CA2A33A72D + a1080b3d-0af8-4722-add2-0a381e330bec MUST-CLOSE-APPLICATION-ITEMS @@ -1036,12 +1036,550 @@ USE_HFS+_COMPRESSION VERSION - 1.0.0 + 1.0 TYPE 0 UUID - 900E8D18-94AC-4140-AAF6-B4DD2CE114BD + 8836773b-66f6-4678-ba3b-83f87de99d33 + + + MUST-CLOSE-APPLICATION-ITEMS + + MUST-CLOSE-APPLICATIONS + + PACKAGE_FILES + + DEFAULT_INSTALL_LOCATION + / + HIERARCHY + + CHILDREN + + + CHILDREN + + GID + 80 + PATH + Applications + PATH_TYPE + 0 + PERMISSIONS + 509 + TYPE + 1 + UID + 0 + + + CHILDREN + + + CHILDREN + + + CHILDREN + + + CHILDREN + + + CHILDREN + + + BUNDLE_CAN_DOWNGRADE + + BUNDLE_POSTINSTALL_PATH + + PATH_TYPE + 0 + + BUNDLE_PREINSTALL_PATH + + PATH_TYPE + 0 + + CHILDREN + + GID + 80 + PATH + ../PaulXStretch/PaulXStretch.aaxplugin + PATH_TYPE + 1 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + GID + 80 + PATH + Plug-Ins + PATH_TYPE + 2 + PERMISSIONS + 509 + TYPE + 2 + UID + 0 + + + GID + 80 + PATH + Audio + PATH_TYPE + 2 + PERMISSIONS + 509 + TYPE + 2 + UID + 0 + + + GID + 80 + PATH + Avid + PATH_TYPE + 2 + PERMISSIONS + 509 + TYPE + 2 + UID + 0 + + + GID + 80 + PATH + Application Support + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Automator + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Documentation + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Extensions + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Filesystems + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Frameworks + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Input Methods + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Internet Plug-Ins + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + LaunchAgents + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + LaunchDaemons + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + PreferencePanes + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Preferences + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + Printers + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + PrivilegedHelperTools + PATH_TYPE + 0 + PERMISSIONS + 1005 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + QuickLook + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + QuickTime + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Screen Savers + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Scripts + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Services + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + Widgets + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + GID + 0 + PATH + Library + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + CHILDREN + + + CHILDREN + + GID + 0 + PATH + Shared + PATH_TYPE + 0 + PERMISSIONS + 1023 + TYPE + 1 + UID + 0 + + + GID + 80 + PATH + Users + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + + GID + 0 + PATH + / + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 1 + UID + 0 + + PAYLOAD_TYPE + 0 + PRESERVE_EXTENDED_ATTRIBUTES + + SHOW_INVISIBLE + + SPLIT_FORKS + + TREAT_MISSING_FILES_AS_WARNING + + VERSION + 5 + + PACKAGE_SETTINGS + + AUTHENTICATION + 1 + CONCLUSION_ACTION + 0 + FOLLOW_SYMBOLIC_LINKS + + IDENTIFIER + com.sonosaurus.paulxstretch.pkg.aax + LOCATION + 0 + NAME + AAX Plugin + OVERWRITE_PERMISSIONS + + PAYLOAD_SIZE + -1 + REFERENCE_PATH + + RELOCATABLE + + USE_HFS+_COMPRESSION + + VERSION + 1.0 + + TYPE + 0 + UUID + 84eda216-acaf-46b6-b5f7-654e1d753eff MUST-CLOSE-APPLICATION-ITEMS @@ -1573,12 +2111,12 @@ USE_HFS+_COMPRESSION VERSION - 1.0.0 + 1.0 TYPE 0 UUID - 437BF225-E33D-4FC1-8573-A6D19877367C + 4e2d6b27-ad75-4fb4-b465-f7951c7b1048 PROJECT @@ -1624,13 +2162,13 @@ 1 PACKAGE_UUID - E4E37793-C22E-485C-B28E-D0CA2A33A72D + a1080b3d-0af8-4722-add2-0a381e330bec TITLE TYPE 0 UUID - D63A2FB3-6971-4E95-BFF9-84751C6FECCC + b6e8c856-781f-4593-9bbe-e2af5a6ff54d CHILDREN @@ -1645,13 +2183,13 @@ 1 PACKAGE_UUID - 900E8D18-94AC-4140-AAF6-B4DD2CE114BD + 8836773b-66f6-4678-ba3b-83f87de99d33 TITLE TYPE 0 UUID - F26B10B7-7821-4E17-8C75-9950A933737C + 3a934fcb-1c38-4e0c-8fa0-351140f1d236 CHILDREN @@ -1666,13 +2204,34 @@ 1 PACKAGE_UUID - 437BF225-E33D-4FC1-8573-A6D19877367C + 4e2d6b27-ad75-4fb4-b465-f7951c7b1048 TITLE TYPE 0 UUID - F010F943-527F-46D2-B29B-87A1E9B0D863 + 895ee614-6bed-4459-baa1-23d7e2209aa8 + + + CHILDREN + + DESCRIPTION + + OPTIONS + + HIDDEN + + STATE + 1 + + PACKAGE_UUID + 84eda216-acaf-46b6-b5f7-654e1d753eff + TITLE + + TYPE + 0 + UUID + c25a3faf-335f-4a45-a66c-f8410ccf1892 REMOVED diff --git a/release/wininstaller.iss b/release/wininstaller.iss index d687b42..e1c3fff 100644 --- a/release/wininstaller.iss +++ b/release/wininstaller.iss @@ -31,7 +31,7 @@ Name: "app"; Description: "Standalone 64-bit application (.exe)"; Types: full cu ;Name: "vst2_64"; Description: "64-bit VST2 Plugin (.dll)"; Types: full custom; Check: Is64BitInstallMode; Name: "vst3_64"; Description: "64-bit VST3 Plugin (.vst3)"; Types: full custom; Check: Is64BitInstallMode; ;;Name: "aax_32"; Description: "32-bit AAX Plugin (.aaxplugin)"; Types: full custom; -;Name: "aax_64"; Description: "64-bit AAX Plugin (.aaxplugin)"; Types: full custom; Check: Is64BitInstallMode; +Name: "aax_64"; Description: "64-bit AAX Plugin (.aaxplugin)"; Types: full custom; Check: Is64BitInstallMode; ;Name: "vst2_32"; Description: "32-bit VST2 Plugin (.dll)"; Types: full custom; ;Name: "vst3_32"; Description: "32-bit VST3 Plugin (.vst3)"; Types: full custom; @@ -41,9 +41,9 @@ Name: "vst3_64"; Description: "64-bit VST3 Plugin (.vst3)"; Types: full custom; [Files] Source: "PaulXStretch\PaulXStretch.exe"; DestDir: "{app}" ; Check: Is64BitInstallMode; Components:app; Flags: ignoreversion signonce; -;Source: "SonoBus\Plugins\SonoBus.dll"; DestDir: {code:GetVST2Dir|0}; Check: Is64BitInstallMode; Components:vst2_64; Flags: ignoreversion signonce; +;Source: "SonoBus\Plugins\PaulXStretch.dll"; DestDir: {code:GetVST2Dir|0}; Check: Is64BitInstallMode; Components:vst2_64; Flags: ignoreversion signonce; Source: "PaulXStretch\Plugins\PaulXStretch.vst3"; DestDir: "{commoncf64}\VST3\"; Check: Is64BitInstallMode; Components:vst3_64; Flags: ignoreversion signonce ; -;Source: "SonoBus\Plugins\SonoBus.aaxplugin"; DestDir: "{commoncf64}\Avid\Audio\Plug-Ins\"; Check: Is64BitInstallMode; Components:aax_64; Flags: ignoreversion recursesubdirs createallsubdirs ; +Source: "SonoBus\Plugins\PaulXStretch.aaxplugin"; DestDir: "{commoncf64}\Avid\Audio\Plug-Ins\"; Check: Is64BitInstallMode; Components:aax_64; Flags: ignoreversion recursesubdirs createallsubdirs ; ;Source: "SonoBus\SonoBus32.exe"; DestDir: "{app}" ; DestName:"SonoBus.exe"; Check: not Is64BitInstallMode; Components:app32; Flags: ignoreversion signonce; ;Source: "SonoBus\Plugins32\SonoBus.dll"; DestDir: {code:GetVST2Dir|1}; Components:vst2_32; Flags: ignoreversion signonce; diff --git a/setupcmake.sh b/setupcmake.sh new file mode 100755 index 0000000..731543d --- /dev/null +++ b/setupcmake.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +DEFS="" +CONFIG="Release" + +if [ -n "${AAX_SDK_PATH}" ] ; then + echo "Will build AAX plugin" + DEPS="$DEPS -DAAX_SDK_PATH=${AAX_SDK_PATH}" +fi + +#if [ -n "${VST2_SDK_PATH}" ] ; then +# echo "Will build VST2 plugin" +# DEPS="$DEPS -DVST2_SDK_PATH=${VST2_SDK_PATH}" +#fi + + +if [ "$1" = "debug" ] ; then + CONFIG="Debug" +fi + +cmake -DCMAKE_BUILD_TYPE=$CONFIG $DEPS -B build + + + + diff --git a/setupcmakewin.sh b/setupcmakewin.sh new file mode 100755 index 0000000..dbaae8a --- /dev/null +++ b/setupcmakewin.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +DEFS="" + +if [ -n "${AAX_SDK_PATH}" ] ; then + echo "Will build AAX plugin" + DEPS="$DEPS -DAAX_SDK_PATH=${AAX_SDK_PATH}" +fi + +#if [ -n "${VST2_SDK_PATH}" ] ; then +# echo "Will build VST2 plugin" +# DEPS="$DEPS -DVST2_SDK_PATH=${VST2_SDK_PATH}" +#fi + + +#cmake -G "Visual Studio 15 2017" -A "x64" $DEPS -B build +cmake -G "Visual Studio 16 2019" -A "x64" $DEPS -B build + + + + diff --git a/setupcmakewin32.sh b/setupcmakewin32.sh new file mode 100755 index 0000000..d45268c --- /dev/null +++ b/setupcmakewin32.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +DEFS="" + +if [ -n "${AAX_SDK_PATH}" ] ; then + echo "Will build AAX plugin" + DEPS="$DEPS -DAAX_SDK_PATH=${AAX_SDK_PATH}" +fi + +#if [ -n "${VST2_SDK_PATH}" ] ; then +# echo "Will build VST2 plugin" +# DEPS="$DEPS -DVST2_SDK_PATH=${VST2_SDK_PATH}" +#fi + + +cmake -G "Visual Studio 15 2017" $DEPS -B build32 + + + + + + diff --git a/setupcmakexcode.sh b/setupcmakexcode.sh new file mode 100755 index 0000000..81aa4b4 --- /dev/null +++ b/setupcmakexcode.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +DEFS="" + +if [ -n "${AAX_SDK_PATH}" ] ; then + DEPS="$DEPS -DAAX_SDK_PATH=${AAX_SDK_PATH}" +fi + +#if [ -n "${VST2_SDK_PATH}" ] ; then +# DEPS="$DEPS -DVST2_SDK_PATH=${VST2_SDK_PATH}" +#fi + +# xcode +cmake -GXcode ${DEPS} -B buildXcode + + +