migrating to the latest JUCE version
This commit is contained in:
@ -50,7 +50,7 @@
|
||||
<MODULEPATH id="juce_audio_utils" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</XCODE_IPHONE>
|
||||
<VS2019 targetFolder="Builds/VisualStudio2019">
|
||||
<VS2022 targetFolder="Builds/VisualStudio2022">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION isDebug="1" name="Debug"/>
|
||||
<CONFIGURATION isDebug="0" name="Release"/>
|
||||
@ -68,7 +68,7 @@
|
||||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2019>
|
||||
</VS2022>
|
||||
<LINUX_MAKE targetFolder="Builds/LinuxMakefile">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" targetName="AudioPerformanceTest"/>
|
||||
@ -92,8 +92,8 @@
|
||||
androidCpp11="1" targetFolder="Builds/Android" extraCompilerFlags="-mfpu=neon -mfloat-abi=hard -ffast-math -funroll-loops --param max-unroll-times=8 -mhard-float -D_NDK_MATH_NO_SOFTFP=1 -DJUCE_DISABLE_ASSERTIONS=1"
|
||||
gradleToolchainVersion="3.6" androidMinimumSDK="23">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" androidArchitectures="arm64-v8a" isDebug="1" targetName="AudioPerformanceTest"/>
|
||||
<CONFIGURATION name="Release" androidArchitectures="arm64-v8a" isDebug="0" optimisation="6"
|
||||
<CONFIGURATION name="Debug" isDebug="1" targetName="AudioPerformanceTest"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="6"
|
||||
targetName="AudioPerformanceTest"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path "CMakeLists.txt"
|
||||
@ -20,7 +20,7 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "com.juce.audioperformancetest"
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 29
|
||||
targetSdkVersion 30
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_CXX_STANDARD=14", "-DCMAKE_CXX_EXTENSIONS=OFF"
|
||||
@ -47,7 +47,7 @@ android {
|
||||
productFlavors {
|
||||
debug_ {
|
||||
ndk {
|
||||
abiFilters "arm64-v8a"
|
||||
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
@ -58,9 +58,6 @@ android {
|
||||
dimension "default"
|
||||
}
|
||||
release_ {
|
||||
ndk {
|
||||
abiFilters "arm64-v8a"
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DJUCE_BUILD_CONFIGURATION=RELEASE", "-DCMAKE_CXX_FLAGS_RELEASE=-Ofast", "-DCMAKE_C_FLAGS_RELEASE=-Ofast"
|
||||
|
@ -1,11 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0.0"
|
||||
package="com.juce.AudioPerformanceTest">
|
||||
package="com.juce.audioperformancetest">
|
||||
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"
|
||||
android:xlargeScreens="true"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"/>
|
||||
@ -13,7 +14,8 @@
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:hardwareAccelerated="false">
|
||||
<activity android:name="com.rmsl.juce.JuceActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:screenOrientation="unspecified" android:launchMode="singleTask" android:hardwareAccelerated="true">
|
||||
android:screenOrientation="unspecified" android:launchMode="singleTask" android:hardwareAccelerated="true"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
|
@ -11,6 +11,10 @@ endif
|
||||
# (this disables dependency generation if multiple architectures are set)
|
||||
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)
|
||||
|
||||
ifndef PKG_CONFIG
|
||||
PKG_CONFIG=pkg-config
|
||||
endif
|
||||
|
||||
ifndef STRIP
|
||||
STRIP=strip
|
||||
endif
|
||||
@ -35,13 +39,13 @@ ifeq ($(CONFIG),Debug)
|
||||
TARGET_ARCH :=
|
||||
endif
|
||||
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60102" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell pkg-config --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0"
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x70002" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0"
|
||||
JUCE_TARGET_APP := AudioPerformanceTest
|
||||
|
||||
JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS)
|
||||
JUCE_CXXFLAGS += $(JUCE_CFLAGS) -std=c++14 $(CXXFLAGS)
|
||||
JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
|
||||
JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell $(PKG_CONFIG) --libs alsa freetype2 libcurl) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
|
||||
|
||||
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||
endif
|
||||
@ -56,13 +60,13 @@ ifeq ($(CONFIG),Release)
|
||||
TARGET_ARCH :=
|
||||
endif
|
||||
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60102" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell pkg-config --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0"
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x70002" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0"
|
||||
JUCE_TARGET_APP := AudioPerformanceTest
|
||||
|
||||
JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS)
|
||||
JUCE_CXXFLAGS += $(JUCE_CFLAGS) -std=c++14 $(CXXFLAGS)
|
||||
JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
|
||||
JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell $(PKG_CONFIG) --libs alsa freetype2 libcurl) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
|
||||
|
||||
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||
endif
|
||||
@ -73,6 +77,8 @@ OBJECTS_APP := \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_processors_ara_2a4c6ef7.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \
|
||||
$(JUCE_OBJDIR)/include_juce_core_f26d17db.o \
|
||||
$(JUCE_OBJDIR)/include_juce_data_structures_7471b1e3.o \
|
||||
@ -86,8 +92,8 @@ OBJECTS_APP := \
|
||||
all : $(JUCE_OUTDIR)/$(JUCE_TARGET_APP)
|
||||
|
||||
$(JUCE_OUTDIR)/$(JUCE_TARGET_APP) : $(OBJECTS_APP) $(RESOURCES)
|
||||
@command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
|
||||
@pkg-config --print-errors alsa freetype2 libcurl
|
||||
@command -v $(PKG_CONFIG) >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
|
||||
@$(PKG_CONFIG) --print-errors alsa freetype2 libcurl
|
||||
@echo Linking "AudioPerformanceTest - App"
|
||||
-$(V_AT)mkdir -p $(JUCE_BINDIR)
|
||||
-$(V_AT)mkdir -p $(JUCE_LIBDIR)
|
||||
@ -119,6 +125,16 @@ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/i
|
||||
@echo "Compiling include_juce_audio_processors.cpp"
|
||||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<"
|
||||
|
||||
$(JUCE_OBJDIR)/include_juce_audio_processors_ara_2a4c6ef7.o: ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp
|
||||
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
|
||||
@echo "Compiling include_juce_audio_processors_ara.cpp"
|
||||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<"
|
||||
|
||||
$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp
|
||||
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
|
||||
@echo "Compiling include_juce_audio_processors_lv2_libs.cpp"
|
||||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<"
|
||||
|
||||
$(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp
|
||||
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
|
||||
@echo "Compiling include_juce_audio_utils.cpp"
|
||||
|
@ -10,6 +10,7 @@
|
||||
01C9BC9A0A0F54B693CDA31A /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 322D3066DCD98A8D0542236A; };
|
||||
0319B40AD2FD96007FFA928B /* Cocoa.framework */ = {isa = PBXBuildFile; fileRef = 453777CEB7099A5D61901D13; };
|
||||
07451DA87757F9EF80E31BE8 /* Main.cpp */ = {isa = PBXBuildFile; fileRef = 0564535EEA7E4462926EA0C9; };
|
||||
2028993D80CFDE5A0ABA4A52 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 932123993B04597421D5C406; };
|
||||
2BAED5B831BB736E77A718AE /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 89B3243200BAA6BD72905DBB; };
|
||||
30BE30F31D1AAED9FC893AA5 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 18C1CCE5684F9FA0478F27AD; };
|
||||
3825E8984D8F6AA00DDC6BAC /* DiscRecording.framework */ = {isa = PBXBuildFile; fileRef = EE758AD71415EB31BD3E82F3; };
|
||||
@ -20,10 +21,10 @@
|
||||
65FC2E13B65977FED63BDDE3 /* include_juce_graphics.mm */ = {isa = PBXBuildFile; fileRef = 7E951216B6138C76653B1460; };
|
||||
699954AF666E644C7B688381 /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 0BC3C6A4F4FC1DD30DD8E17C; };
|
||||
71863EE98034AB7C3CBCAA81 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 24D90B40648CC05A9B1AA55B; };
|
||||
7BB1EEA0BB910DD93C1DBAD5 /* include_juce_audio_processors_ara.cpp */ = {isa = PBXBuildFile; fileRef = CBD298606CB4777F17CFCC2F; };
|
||||
7E870C094BAE67D7EB149F1C /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 248FAA119A4FC24C522165EF; };
|
||||
8A0F71A4EEC7FE694352DD94 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 9EADBF913B7A454B6BE93A4A; };
|
||||
9031C69145EE085B60904363 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 43775DC3D9F7917846EA5327; };
|
||||
9B19A6655FCC8086134C8656 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1DA5C6A474916745AFEC6DA5; };
|
||||
9D47995A33BBA693ED435B31 /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = B06AE97C86D27E7FEBCB4631; };
|
||||
C7B090C29D8DE4D2503204B1 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = BAFDA8DE51E7A69E477439EB; };
|
||||
CC782AABFA20787BABBCED90 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = E1BB9D521BF6C055F5B88628; };
|
||||
@ -42,7 +43,6 @@
|
||||
12C680C68A15B9A590264B18 /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
|
||||
18C1CCE5684F9FA0478F27AD /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
18E39207A0F5F9B8BC7EE94F /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; };
|
||||
1DA5C6A474916745AFEC6DA5 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
|
||||
24425FFB0BCC7E54CADAA013 /* include_juce_core.mm */ /* include_juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_core.mm; path = ../../JuceLibraryCode/include_juce_core.mm; sourceTree = SOURCE_ROOT; };
|
||||
248FAA119A4FC24C522165EF /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; };
|
||||
24D90B40648CC05A9B1AA55B /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
|
||||
@ -60,6 +60,7 @@
|
||||
81017699F857F5BBFCA6E055 /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; };
|
||||
89B3243200BAA6BD72905DBB /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; };
|
||||
920FF34D4A00A5AD433EE5F4 /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; };
|
||||
932123993B04597421D5C406 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; };
|
||||
9516A19EE58DED8326DD0306 /* Info-App.plist */ /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; };
|
||||
9E05B63699A307598B66F829 /* include_juce_audio_formats.mm */ /* include_juce_audio_formats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_formats.mm; path = ../../JuceLibraryCode/include_juce_audio_formats.mm; sourceTree = SOURCE_ROOT; };
|
||||
9EADBF913B7A454B6BE93A4A /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
|
||||
@ -70,6 +71,7 @@
|
||||
BAFDA8DE51E7A69E477439EB /* include_juce_audio_utils.mm */ /* include_juce_audio_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_utils.mm; sourceTree = SOURCE_ROOT; };
|
||||
C8EE61FDD1F06817A014B881 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; };
|
||||
CBBC98B7CD350A07F5145FB4 /* juce_audio_utils */ /* juce_audio_utils */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_utils; path = ../../../../modules/juce_audio_utils; sourceTree = SOURCE_ROOT; };
|
||||
CBD298606CB4777F17CFCC2F /* include_juce_audio_processors_ara.cpp */ /* include_juce_audio_processors_ara.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_ara.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp; sourceTree = SOURCE_ROOT; };
|
||||
D03C9A859FB4DBA8268D7FBA /* juce_audio_processors */ /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_processors; path = ../../../../modules/juce_audio_processors; sourceTree = SOURCE_ROOT; };
|
||||
E1BB9D521BF6C055F5B88628 /* Foundation.framework */ /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
E575FE2AD2F19FA6AEB536C2 /* juce_core */ /* juce_core */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_core; path = ../../../../modules/juce_core; sourceTree = SOURCE_ROOT; };
|
||||
@ -85,7 +87,6 @@
|
||||
files = (
|
||||
8A0F71A4EEC7FE694352DD94,
|
||||
30BE30F31D1AAED9FC893AA5,
|
||||
9B19A6655FCC8086134C8656,
|
||||
0319B40AD2FD96007FFA928B,
|
||||
5AFD011031C266431687C922,
|
||||
71863EE98034AB7C3CBCAA81,
|
||||
@ -106,7 +107,6 @@
|
||||
children = (
|
||||
9EADBF913B7A454B6BE93A4A,
|
||||
18C1CCE5684F9FA0478F27AD,
|
||||
1DA5C6A474916745AFEC6DA5,
|
||||
453777CEB7099A5D61901D13,
|
||||
9F28F179EF6B90EB9F4DBEE9,
|
||||
24D90B40648CC05A9B1AA55B,
|
||||
@ -127,6 +127,8 @@
|
||||
322D3066DCD98A8D0542236A,
|
||||
9E05B63699A307598B66F829,
|
||||
18E39207A0F5F9B8BC7EE94F,
|
||||
CBD298606CB4777F17CFCC2F,
|
||||
932123993B04597421D5C406,
|
||||
BAFDA8DE51E7A69E477439EB,
|
||||
24425FFB0BCC7E54CADAA013,
|
||||
EDD11E2CC0B18196ADA0C87B,
|
||||
@ -230,7 +232,7 @@
|
||||
9CE2A44801B5B4BE7A9667DA = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1300;
|
||||
LastUpgradeCheck = 1340;
|
||||
ORGANIZATIONNAME = "Raw Material Software Limited";
|
||||
TargetAttributes = {
|
||||
E9FD2656EC625C9C8DE30219 = {
|
||||
@ -294,6 +296,8 @@
|
||||
01C9BC9A0A0F54B693CDA31A,
|
||||
48ADBEF873A610909D727C97,
|
||||
D145903EE5DBFD1BD98423F3,
|
||||
7BB1EEA0BB910DD93C1DBAD5,
|
||||
2028993D80CFDE5A0ABA4A52,
|
||||
C7B090C29D8DE4D2503204B1,
|
||||
FFAF94080FF4A9995B33151E,
|
||||
D2CECF93178A1738DA02CA4A,
|
||||
@ -317,6 +321,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
EXCLUDED_ARCHS = "";
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
@ -324,7 +329,7 @@
|
||||
"DEBUG=1",
|
||||
"JUCE_DISPLAY_SPLASH_SCREEN=0",
|
||||
"JUCE_USE_DARK_SPLASH_SCREEN=1",
|
||||
"JUCE_PROJUCER_VERSION=0x60102",
|
||||
"JUCE_PROJUCER_VERSION=0x70002",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
@ -345,10 +350,10 @@
|
||||
"JucePlugin_Build_VST3=0",
|
||||
"JucePlugin_Build_AU=0",
|
||||
"JucePlugin_Build_AUv3=0",
|
||||
"JucePlugin_Build_RTAS=0",
|
||||
"JucePlugin_Build_AAX=0",
|
||||
"JucePlugin_Build_Standalone=0",
|
||||
"JucePlugin_Build_Unity=0",
|
||||
"JucePlugin_Build_LV2=0",
|
||||
);
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@ -361,6 +366,7 @@
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
|
||||
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.juce.AudioPerformanceTest;
|
||||
PRODUCT_NAME = "AudioPerformanceTest";
|
||||
USE_HEADERMAP = NO;
|
||||
@ -378,6 +384,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
EXCLUDED_ARCHS = "";
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 3;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
@ -385,7 +392,7 @@
|
||||
"NDEBUG=1",
|
||||
"JUCE_DISPLAY_SPLASH_SCREEN=0",
|
||||
"JUCE_USE_DARK_SPLASH_SCREEN=1",
|
||||
"JUCE_PROJUCER_VERSION=0x60102",
|
||||
"JUCE_PROJUCER_VERSION=0x70002",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
@ -406,10 +413,10 @@
|
||||
"JucePlugin_Build_VST3=0",
|
||||
"JucePlugin_Build_AU=0",
|
||||
"JucePlugin_Build_AUv3=0",
|
||||
"JucePlugin_Build_RTAS=0",
|
||||
"JucePlugin_Build_AAX=0",
|
||||
"JucePlugin_Build_Standalone=0",
|
||||
"JucePlugin_Build_Unity=0",
|
||||
"JucePlugin_Build_LV2=0",
|
||||
);
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@ -423,6 +430,7 @@
|
||||
LLVM_LTO = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
|
||||
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.juce.AudioPerformanceTest;
|
||||
PRODUCT_NAME = "AudioPerformanceTest";
|
||||
USE_HEADERMAP = NO;
|
||||
|
@ -1,20 +1,21 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2019
|
||||
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioPerformanceTest - App", "AudioPerformanceTest_App.vcxproj", "{78607AE9-F43B-3DDB-0FE1-D745771AF527}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Debug|x64.Build.0 = Debug|x64
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Release|x64.ActiveCfg = Release|x64
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio Version 17
|
||||
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioPerformanceTest - App", "AudioPerformanceTest_App.vcxproj", "{78607AE9-F43B-3DDB-0FE1-D745771AF527}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Debug|x64.Build.0 = Debug|x64
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Release|x64.ActiveCfg = Release|x64
|
||||
{78607AE9-F43B-3DDB-0FE1-D745771AF527}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,33 +1,33 @@
|
||||
#pragma code_page(65001)
|
||||
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Limited\0"
|
||||
VALUE "LegalCopyright", "Raw Material Software Limited\0"
|
||||
VALUE "FileDescription", "AudioPerformanceTest\0"
|
||||
VALUE "FileVersion", "1.0.0\0"
|
||||
VALUE "ProductName", "AudioPerformanceTest\0"
|
||||
VALUE "ProductVersion", "1.0.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
#pragma code_page(65001)
|
||||
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Limited\0"
|
||||
VALUE "LegalCopyright", "Raw Material Software Limited\0"
|
||||
VALUE "FileDescription", "AudioPerformanceTest\0"
|
||||
VALUE "FileVersion", "1.0.0\0"
|
||||
VALUE "ProductName", "AudioPerformanceTest\0"
|
||||
VALUE "ProductVersion", "1.0.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
@ -10,6 +10,7 @@
|
||||
01C9BC9A0A0F54B693CDA31A /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 322D3066DCD98A8D0542236A; };
|
||||
06735FD618809C6823B18CFA /* CoreServices.framework */ = {isa = PBXBuildFile; fileRef = 5622D2E05ACA8C4395206C56; };
|
||||
07451DA87757F9EF80E31BE8 /* Main.cpp */ = {isa = PBXBuildFile; fileRef = 0564535EEA7E4462926EA0C9; };
|
||||
2028993D80CFDE5A0ABA4A52 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 932123993B04597421D5C406; };
|
||||
2BAED5B831BB736E77A718AE /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 89B3243200BAA6BD72905DBB; };
|
||||
30BE30F31D1AAED9FC893AA5 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 18C1CCE5684F9FA0478F27AD; };
|
||||
3C0CA1E555411B8B5B8F8FF0 /* LaunchScreen.storyboard */ = {isa = PBXBuildFile; fileRef = C8D9488DE9A88E4FBF28D417; };
|
||||
@ -20,6 +21,7 @@
|
||||
65FC2E13B65977FED63BDDE3 /* include_juce_graphics.mm */ = {isa = PBXBuildFile; fileRef = 7E951216B6138C76653B1460; };
|
||||
699954AF666E644C7B688381 /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 0BC3C6A4F4FC1DD30DD8E17C; };
|
||||
71863EE98034AB7C3CBCAA81 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 24D90B40648CC05A9B1AA55B; };
|
||||
7BB1EEA0BB910DD93C1DBAD5 /* include_juce_audio_processors_ara.cpp */ = {isa = PBXBuildFile; fileRef = CBD298606CB4777F17CFCC2F; };
|
||||
7E870C094BAE67D7EB149F1C /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 248FAA119A4FC24C522165EF; };
|
||||
893A86EF99F57B81286E58A1 /* CoreImage.framework */ = {isa = PBXBuildFile; fileRef = F40C1815F7E7E4FBAF3A3091; };
|
||||
8A0F71A4EEC7FE694352DD94 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 9EADBF913B7A454B6BE93A4A; };
|
||||
@ -65,6 +67,7 @@
|
||||
8693552B5FA53C2003A66302 /* Images.xcassets */ /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AudioPerformanceTest/Images.xcassets; sourceTree = SOURCE_ROOT; };
|
||||
89B3243200BAA6BD72905DBB /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; };
|
||||
920FF34D4A00A5AD433EE5F4 /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; };
|
||||
932123993B04597421D5C406 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; };
|
||||
9516A19EE58DED8326DD0306 /* Info-App.plist */ /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; };
|
||||
9E05B63699A307598B66F829 /* include_juce_audio_formats.mm */ /* include_juce_audio_formats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_formats.mm; path = ../../JuceLibraryCode/include_juce_audio_formats.mm; sourceTree = SOURCE_ROOT; };
|
||||
9EADBF913B7A454B6BE93A4A /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
|
||||
@ -77,6 +80,7 @@
|
||||
C8D9488DE9A88E4FBF28D417 /* LaunchScreen.storyboard */ /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = LaunchScreen.storyboard; sourceTree = SOURCE_ROOT; };
|
||||
C8EE61FDD1F06817A014B881 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; };
|
||||
CBBC98B7CD350A07F5145FB4 /* juce_audio_utils */ /* juce_audio_utils */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_utils; path = ../../../../modules/juce_audio_utils; sourceTree = SOURCE_ROOT; };
|
||||
CBD298606CB4777F17CFCC2F /* include_juce_audio_processors_ara.cpp */ /* include_juce_audio_processors_ara.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_ara.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp; sourceTree = SOURCE_ROOT; };
|
||||
D03C9A859FB4DBA8268D7FBA /* juce_audio_processors */ /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_processors; path = ../../../../modules/juce_audio_processors; sourceTree = SOURCE_ROOT; };
|
||||
E1BB9D521BF6C055F5B88628 /* Foundation.framework */ /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
E575FE2AD2F19FA6AEB536C2 /* juce_core */ /* juce_core */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_core; path = ../../../../modules/juce_core; sourceTree = SOURCE_ROOT; };
|
||||
@ -137,6 +141,8 @@
|
||||
322D3066DCD98A8D0542236A,
|
||||
9E05B63699A307598B66F829,
|
||||
18E39207A0F5F9B8BC7EE94F,
|
||||
CBD298606CB4777F17CFCC2F,
|
||||
932123993B04597421D5C406,
|
||||
BAFDA8DE51E7A69E477439EB,
|
||||
24425FFB0BCC7E54CADAA013,
|
||||
EDD11E2CC0B18196ADA0C87B,
|
||||
@ -241,7 +247,7 @@
|
||||
9CE2A44801B5B4BE7A9667DA = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1300;
|
||||
LastUpgradeCheck = 1340;
|
||||
ORGANIZATIONNAME = "Raw Material Software Limited";
|
||||
TargetAttributes = {
|
||||
E9FD2656EC625C9C8DE30219 = {
|
||||
@ -306,6 +312,8 @@
|
||||
01C9BC9A0A0F54B693CDA31A,
|
||||
48ADBEF873A610909D727C97,
|
||||
D145903EE5DBFD1BD98423F3,
|
||||
7BB1EEA0BB910DD93C1DBAD5,
|
||||
2028993D80CFDE5A0ABA4A52,
|
||||
C7B090C29D8DE4D2503204B1,
|
||||
FFAF94080FF4A9995B33151E,
|
||||
D2CECF93178A1738DA02CA4A,
|
||||
@ -338,7 +346,7 @@
|
||||
"JUCE_CONTENT_SHARING=1",
|
||||
"JUCE_DISPLAY_SPLASH_SCREEN=0",
|
||||
"JUCE_USE_DARK_SPLASH_SCREEN=1",
|
||||
"JUCE_PROJUCER_VERSION=0x60102",
|
||||
"JUCE_PROJUCER_VERSION=0x70002",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
@ -359,10 +367,10 @@
|
||||
"JucePlugin_Build_VST3=0",
|
||||
"JucePlugin_Build_AU=0",
|
||||
"JucePlugin_Build_AUv3=0",
|
||||
"JucePlugin_Build_RTAS=0",
|
||||
"JucePlugin_Build_AAX=0",
|
||||
"JucePlugin_Build_Standalone=0",
|
||||
"JucePlugin_Build_Unity=0",
|
||||
"JucePlugin_Build_LV2=0",
|
||||
);
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@ -374,6 +382,7 @@
|
||||
INFOPLIST_PREPROCESS = NO;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
|
||||
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit -weak_framework UserNotifications";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.juce.AudioPerformanceTest;
|
||||
PRODUCT_NAME = "AudioPerformanceTest";
|
||||
USE_HEADERMAP = NO;
|
||||
@ -399,7 +408,7 @@
|
||||
"JUCE_CONTENT_SHARING=1",
|
||||
"JUCE_DISPLAY_SPLASH_SCREEN=0",
|
||||
"JUCE_USE_DARK_SPLASH_SCREEN=1",
|
||||
"JUCE_PROJUCER_VERSION=0x60102",
|
||||
"JUCE_PROJUCER_VERSION=0x70002",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
@ -420,10 +429,10 @@
|
||||
"JucePlugin_Build_VST3=0",
|
||||
"JucePlugin_Build_AU=0",
|
||||
"JucePlugin_Build_AUv3=0",
|
||||
"JucePlugin_Build_RTAS=0",
|
||||
"JucePlugin_Build_AAX=0",
|
||||
"JucePlugin_Build_Standalone=0",
|
||||
"JucePlugin_Build_Unity=0",
|
||||
"JucePlugin_Build_LV2=0",
|
||||
);
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@ -436,6 +445,7 @@
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
LLVM_LTO = YES;
|
||||
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
|
||||
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit -weak_framework UserNotifications";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.juce.AudioPerformanceTest;
|
||||
PRODUCT_NAME = "AudioPerformanceTest";
|
||||
USE_HEADERMAP = NO;
|
||||
|
@ -42,18 +42,6 @@
|
||||
"filename": "Icon-Spotlight-40@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "57x57",
|
||||
"filename": "Icon.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "57x57",
|
||||
"filename": "Icon@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "60x60",
|
||||
@ -102,30 +90,6 @@
|
||||
"filename": "Icon-Spotlight-40@2x-1.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "50x50",
|
||||
"filename": "Icon-Small-50.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "50x50",
|
||||
"filename": "Icon-Small-50@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "72x72",
|
||||
"filename": "Icon-72.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "72x72",
|
||||
"filename": "Icon-72@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "76x76",
|
||||
|
@ -1,15 +1,15 @@
|
||||
# ==============================================================================
|
||||
#
|
||||
# This file is part of the JUCE library.
|
||||
# Copyright (c) 2020 - Raw Material Software Limited
|
||||
# Copyright (c) 2022 - Raw Material Software Limited
|
||||
#
|
||||
# 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 6 End-User License
|
||||
# Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
|
||||
# By using JUCE, you agree to the terms of both the JUCE 7 End-User License
|
||||
# Agreement and JUCE Privacy Policy.
|
||||
#
|
||||
# End User License Agreement: www.juce.com/juce-6-licence
|
||||
# End User License Agreement: www.juce.com/juce-7-licence
|
||||
# Privacy Policy: www.juce.com/juce-privacy-policy
|
||||
#
|
||||
# Or: You may also use this code under the terms of the GPL v3 (see
|
||||
|
@ -1,52 +1,52 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
This is the header file that your files should include in order to get all the
|
||||
JUCE library headers. You should avoid including the JUCE headers directly in
|
||||
your own source files, because that wouldn't pick up the correct configuration
|
||||
options for your app.
|
||||
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include <juce_audio_basics/juce_audio_basics.h>
|
||||
#include <juce_audio_devices/juce_audio_devices.h>
|
||||
#include <juce_audio_formats/juce_audio_formats.h>
|
||||
#include <juce_audio_processors/juce_audio_processors.h>
|
||||
#include <juce_audio_utils/juce_audio_utils.h>
|
||||
#include <juce_core/juce_core.h>
|
||||
#include <juce_data_structures/juce_data_structures.h>
|
||||
#include <juce_events/juce_events.h>
|
||||
#include <juce_graphics/juce_graphics.h>
|
||||
#include <juce_gui_basics/juce_gui_basics.h>
|
||||
#include <juce_gui_extra/juce_gui_extra.h>
|
||||
|
||||
|
||||
#if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION
|
||||
/** If you've hit this error then the version of the Projucer that was used to generate this project is
|
||||
older than the version of the JUCE modules being included. To fix this error, re-save your project
|
||||
using the latest version of the Projucer or, if you aren't using the Projucer to manage your project,
|
||||
remove the JUCE_PROJUCER_VERSION define.
|
||||
*/
|
||||
#error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error."
|
||||
#endif
|
||||
|
||||
#if ! DONT_SET_USING_JUCE_NAMESPACE
|
||||
// If your code uses a lot of JUCE classes, then this will obviously save you
|
||||
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
|
||||
using namespace juce;
|
||||
#endif
|
||||
|
||||
#if ! JUCE_DONT_DECLARE_PROJECTINFO
|
||||
namespace ProjectInfo
|
||||
{
|
||||
const char* const projectName = "AudioPerformanceTest";
|
||||
const char* const companyName = "Raw Material Software Limited";
|
||||
const char* const versionString = "1.0.0";
|
||||
const int versionNumber = 0x10000;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
This is the header file that your files should include in order to get all the
|
||||
JUCE library headers. You should avoid including the JUCE headers directly in
|
||||
your own source files, because that wouldn't pick up the correct configuration
|
||||
options for your app.
|
||||
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include <juce_audio_basics/juce_audio_basics.h>
|
||||
#include <juce_audio_devices/juce_audio_devices.h>
|
||||
#include <juce_audio_formats/juce_audio_formats.h>
|
||||
#include <juce_audio_processors/juce_audio_processors.h>
|
||||
#include <juce_audio_utils/juce_audio_utils.h>
|
||||
#include <juce_core/juce_core.h>
|
||||
#include <juce_data_structures/juce_data_structures.h>
|
||||
#include <juce_events/juce_events.h>
|
||||
#include <juce_graphics/juce_graphics.h>
|
||||
#include <juce_gui_basics/juce_gui_basics.h>
|
||||
#include <juce_gui_extra/juce_gui_extra.h>
|
||||
|
||||
|
||||
#if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION
|
||||
/** If you've hit this error then the version of the Projucer that was used to generate this project is
|
||||
older than the version of the JUCE modules being included. To fix this error, re-save your project
|
||||
using the latest version of the Projucer or, if you aren't using the Projucer to manage your project,
|
||||
remove the JUCE_PROJUCER_VERSION define.
|
||||
*/
|
||||
#error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error."
|
||||
#endif
|
||||
|
||||
#if ! DONT_SET_USING_JUCE_NAMESPACE
|
||||
// If your code uses a lot of JUCE classes, then this will obviously save you
|
||||
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
|
||||
using namespace juce;
|
||||
#endif
|
||||
|
||||
#if ! JUCE_DONT_DECLARE_PROJECTINFO
|
||||
namespace ProjectInfo
|
||||
{
|
||||
const char* const projectName = "AudioPerformanceTest";
|
||||
const char* const companyName = "Raw Material Software Limited";
|
||||
const char* const versionString = "1.0.0";
|
||||
const int versionNumber = 0x10000;
|
||||
}
|
||||
#endif
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_basics/juce_audio_basics.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_basics/juce_audio_basics.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_devices/juce_audio_devices.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_devices/juce_audio_devices.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_formats/juce_audio_formats.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_formats/juce_audio_formats.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_processors/juce_audio_processors.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_processors/juce_audio_processors.cpp>
|
||||
|
8
deps/juce/extras/AudioPerformanceTest/JuceLibraryCode/include_juce_audio_processors_ara.cpp
vendored
Normal file
8
deps/juce/extras/AudioPerformanceTest/JuceLibraryCode/include_juce_audio_processors_ara.cpp
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_processors/juce_audio_processors_ara.cpp>
|
@ -0,0 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_processors/juce_audio_processors_lv2_libs.cpp>
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_utils/juce_audio_utils.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_audio_utils/juce_audio_utils.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_core/juce_core.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_core/juce_core.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_data_structures/juce_data_structures.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_data_structures/juce_data_structures.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_events/juce_events.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_events/juce_events.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_graphics/juce_graphics.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_graphics/juce_graphics.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_gui_basics/juce_gui_basics.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_gui_basics/juce_gui_basics.cpp>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_gui_extra/juce_gui_extra.cpp>
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_gui_extra/juce_gui_extra.cpp>
|
||||
|
@ -1,91 +1,91 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2020 - Raw Material Software Limited
|
||||
|
||||
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 6 End-User License
|
||||
Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
|
||||
|
||||
End User License Agreement: www.juce.com/juce-6-licence
|
||||
Privacy Policy: www.juce.com/juce-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.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include <JuceHeader.h>
|
||||
#include "MainComponent.h"
|
||||
|
||||
//==============================================================================
|
||||
class AudioPerformanceTestApplication : public JUCEApplication
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
AudioPerformanceTestApplication() {}
|
||||
|
||||
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||
bool moreThanOneInstanceAllowed() override { return true; }
|
||||
|
||||
//==============================================================================
|
||||
void initialise (const String&) override
|
||||
{
|
||||
mainWindow.reset (new MainWindow (getApplicationName()));
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
mainWindow = nullptr; // (deletes our window)
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void systemRequestedQuit() override
|
||||
{
|
||||
quit();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
class MainWindow : public DocumentWindow
|
||||
{
|
||||
public:
|
||||
explicit MainWindow (String name)
|
||||
: DocumentWindow (name, Colours::lightgrey, DocumentWindow::allButtons)
|
||||
{
|
||||
setUsingNativeTitleBar (true);
|
||||
setContentOwned (createMainContentComponent(), true);
|
||||
setResizable (false, false);
|
||||
|
||||
#if JUCE_IOS || JUCE_ANDROID
|
||||
setFullScreen (true);
|
||||
#else
|
||||
centreWithSize (getWidth(), getHeight());
|
||||
#endif
|
||||
|
||||
setVisible (true);
|
||||
}
|
||||
|
||||
void closeButtonPressed() override
|
||||
{
|
||||
JUCEApplication::getInstance()->systemRequestedQuit();
|
||||
}
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||
};
|
||||
|
||||
private:
|
||||
std::unique_ptr<MainWindow> mainWindow;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
START_JUCE_APPLICATION (AudioPerformanceTestApplication)
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2022 - Raw Material Software Limited
|
||||
|
||||
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 7 End-User License
|
||||
Agreement and JUCE Privacy Policy.
|
||||
|
||||
End User License Agreement: www.juce.com/juce-7-licence
|
||||
Privacy Policy: www.juce.com/juce-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.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include <JuceHeader.h>
|
||||
#include "MainComponent.h"
|
||||
|
||||
//==============================================================================
|
||||
class AudioPerformanceTestApplication : public JUCEApplication
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
AudioPerformanceTestApplication() {}
|
||||
|
||||
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||
bool moreThanOneInstanceAllowed() override { return true; }
|
||||
|
||||
//==============================================================================
|
||||
void initialise (const String&) override
|
||||
{
|
||||
mainWindow.reset (new MainWindow (getApplicationName()));
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
mainWindow = nullptr; // (deletes our window)
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void systemRequestedQuit() override
|
||||
{
|
||||
quit();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
class MainWindow : public DocumentWindow
|
||||
{
|
||||
public:
|
||||
explicit MainWindow (String name)
|
||||
: DocumentWindow (name, Colours::lightgrey, DocumentWindow::allButtons)
|
||||
{
|
||||
setUsingNativeTitleBar (true);
|
||||
setContentOwned (createMainContentComponent(), true);
|
||||
setResizable (false, false);
|
||||
|
||||
#if JUCE_IOS || JUCE_ANDROID
|
||||
setFullScreen (true);
|
||||
#else
|
||||
centreWithSize (getWidth(), getHeight());
|
||||
#endif
|
||||
|
||||
setVisible (true);
|
||||
}
|
||||
|
||||
void closeButtonPressed() override
|
||||
{
|
||||
JUCEApplication::getInstance()->systemRequestedQuit();
|
||||
}
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||
};
|
||||
|
||||
private:
|
||||
std::unique_ptr<MainWindow> mainWindow;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
START_JUCE_APPLICATION (AudioPerformanceTestApplication)
|
||||
|
@ -1,277 +1,277 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2020 - Raw Material Software Limited
|
||||
|
||||
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 6 End-User License
|
||||
Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
|
||||
|
||||
End User License Agreement: www.juce.com/juce-6-licence
|
||||
Privacy Policy: www.juce.com/juce-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.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <JuceHeader.h>
|
||||
#include <mutex>
|
||||
|
||||
//==============================================================================
|
||||
class MainContentComponent : public AudioAppComponent,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
MainContentComponent()
|
||||
{
|
||||
setSize (400, 400);
|
||||
setAudioChannels (0, 2);
|
||||
|
||||
initGui();
|
||||
Desktop::getInstance().setScreenSaverEnabled (false);
|
||||
startTimer (1000);
|
||||
}
|
||||
|
||||
~MainContentComponent() override
|
||||
{
|
||||
shutdownAudio();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void prepareToPlay (int bufferSize, double sampleRate) override
|
||||
{
|
||||
currentSampleRate = sampleRate;
|
||||
allocateBuffers (static_cast<size_t> (bufferSize));
|
||||
printHeader();
|
||||
}
|
||||
|
||||
void releaseResources() override
|
||||
{
|
||||
a.clear();
|
||||
b.clear();
|
||||
c.clear();
|
||||
currentSampleRate = 0.0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override
|
||||
{
|
||||
const double startTimeMs = getPreciseTimeMs();
|
||||
|
||||
AudioBuffer<float>& outputAudio = *bufferToFill.buffer;
|
||||
std::size_t bufferSize = (std::size_t) outputAudio.getNumSamples();
|
||||
initialiseBuffers (bufferToFill, bufferSize);
|
||||
|
||||
for (int ch = 0; ch < outputAudio.getNumChannels(); ++ch)
|
||||
crunchSomeNumbers (outputAudio.getWritePointer (ch), bufferSize, numLoopIterationsPerCallback);
|
||||
|
||||
std::lock_guard<std::mutex> lock (metricMutex);
|
||||
|
||||
double endTimeMs = getPreciseTimeMs();
|
||||
addCallbackMetrics (startTimeMs, endTimeMs);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void addCallbackMetrics (double startTimeMs, double endTimeMs)
|
||||
{
|
||||
double runtimeMs = endTimeMs - startTimeMs;
|
||||
audioCallbackRuntimeMs.addValue (runtimeMs);
|
||||
|
||||
if (runtimeMs > getPhysicalTimeLimitMs())
|
||||
numCallbacksOverPhysicalTimeLimit++;
|
||||
|
||||
if (lastCallbackStartTimeMs > 0.0)
|
||||
{
|
||||
double gapMs = startTimeMs - lastCallbackStartTimeMs;
|
||||
audioCallbackGapMs.addValue (gapMs);
|
||||
|
||||
if (gapMs > 1.5 * getPhysicalTimeLimitMs())
|
||||
numLateCallbacks++;
|
||||
}
|
||||
|
||||
lastCallbackStartTimeMs = startTimeMs;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.fillAll (Colours::black);
|
||||
g.setFont (Font (16.0f));
|
||||
g.setColour (Colours::white);
|
||||
g.drawText ("loop iterations / audio callback",
|
||||
getLocalBounds().withY (loopIterationsSlider.getHeight()), Justification::centred, true);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void resized() override
|
||||
{
|
||||
loopIterationsSlider.setBounds (getLocalBounds().withSizeKeepingCentre (proportionOfWidth (0.9f), 50));
|
||||
}
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
void initGui()
|
||||
{
|
||||
loopIterationsSlider.setSliderStyle (Slider::LinearBar);
|
||||
loopIterationsSlider.setRange (0, 30000, 250);
|
||||
loopIterationsSlider.setValue (15000);
|
||||
loopIterationsSlider.setColour (Slider::thumbColourId, Colours::white);
|
||||
loopIterationsSlider.setColour (Slider::textBoxTextColourId, Colours::grey);
|
||||
updateNumLoopIterationsPerCallback();
|
||||
addAndMakeVisible (loopIterationsSlider);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void allocateBuffers (std::size_t bufferSize)
|
||||
{
|
||||
a.resize (bufferSize);
|
||||
b.resize (bufferSize);
|
||||
c.resize (bufferSize);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void initialiseBuffers (const AudioSourceChannelInfo& bufferToFill, std::size_t bufferSize)
|
||||
{
|
||||
if (bufferSize != a.size())
|
||||
{
|
||||
jassertfalse;
|
||||
Logger::writeToLog ("WARNING: Unexpected buffer size received."
|
||||
"expected: " + String (a.size()) +
|
||||
", actual: " + String (bufferSize));
|
||||
|
||||
if (bufferSize > a.size())
|
||||
Logger::writeToLog ("WARNING: Need to allocate larger buffers on audio thread!");
|
||||
|
||||
allocateBuffers (bufferSize);
|
||||
}
|
||||
|
||||
bufferToFill.clearActiveBufferRegion();
|
||||
std::fill (a.begin(), a.end(), 0.09f);
|
||||
std::fill (b.begin(), b.end(), 0.1f );
|
||||
std::fill (c.begin(), c.end(), 0.11f);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void crunchSomeNumbers (float* outBuffer, std::size_t bufferSize, int numIterations) noexcept
|
||||
{
|
||||
jassert (a.size() == bufferSize && b.size() == bufferSize && c.size() == bufferSize);
|
||||
|
||||
for (int i = 0; i < numIterations; ++i)
|
||||
{
|
||||
FloatVectorOperations::multiply (c.data(), a.data(), b.data(), (int) bufferSize);
|
||||
FloatVectorOperations::addWithMultiply (outBuffer, b.data(), c.data(), (int) bufferSize);
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void timerCallback() override
|
||||
{
|
||||
printAndResetPerformanceMetrics();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void printHeader() const
|
||||
{
|
||||
Logger::writeToLog ("buffer size = " + String (a.size()) + " samples");
|
||||
Logger::writeToLog ("sample rate = " + String (currentSampleRate) + " Hz");
|
||||
Logger::writeToLog ("physical time limit / callback = " + String (getPhysicalTimeLimitMs() )+ " ms");
|
||||
Logger::writeToLog ("");
|
||||
Logger::writeToLog (" | callback exec time / physLimit | callback time gap / physLimit | callback counters ");
|
||||
Logger::writeToLog ("numLoops | avg min max stddev | avg min max stddev | called late >limit ");
|
||||
Logger::writeToLog ("----- | ----- ----- ----- ----- | ----- ----- ----- ----- | --- --- --- ");
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void printAndResetPerformanceMetrics()
|
||||
{
|
||||
std::unique_lock<std::mutex> lock (metricMutex);
|
||||
|
||||
auto runtimeMetric = audioCallbackRuntimeMs;
|
||||
auto gapMetric = audioCallbackGapMs;
|
||||
auto late = numLateCallbacks;
|
||||
auto overLimit = numCallbacksOverPhysicalTimeLimit;
|
||||
|
||||
resetPerformanceMetrics();
|
||||
updateNumLoopIterationsPerCallback();
|
||||
|
||||
lock.unlock();
|
||||
|
||||
Logger::writeToLog (String (numLoopIterationsPerCallback).paddedRight (' ', 8) + " | "
|
||||
+ getPercentFormattedMetricString (runtimeMetric) + " | "
|
||||
+ getPercentFormattedMetricString (gapMetric) + " | "
|
||||
+ String (runtimeMetric.getCount()).paddedRight (' ', 8)
|
||||
+ String (late).paddedRight (' ', 8)
|
||||
+ String (overLimit).paddedRight (' ', 8) + " | ");
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
String getPercentFormattedMetricString (const StatisticsAccumulator<double> metric) const
|
||||
{
|
||||
auto physTimeLimit = getPhysicalTimeLimitMs();
|
||||
|
||||
return (String (100.0 * metric.getAverage() / physTimeLimit, 1) + "%").paddedRight (' ', 8)
|
||||
+ (String (100.0 * metric.getMinValue() / physTimeLimit, 1) + "%").paddedRight (' ', 8)
|
||||
+ (String (100.0 * metric.getMaxValue() / physTimeLimit, 1) + "%").paddedRight (' ', 8)
|
||||
+ String (metric.getStandardDeviation(), 3).paddedRight (' ', 8);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void resetPerformanceMetrics()
|
||||
{
|
||||
audioCallbackRuntimeMs.reset();
|
||||
audioCallbackGapMs.reset();
|
||||
numLateCallbacks = 0;
|
||||
numCallbacksOverPhysicalTimeLimit = 0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void updateNumLoopIterationsPerCallback()
|
||||
{
|
||||
numLoopIterationsPerCallback = (int) loopIterationsSlider.getValue();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static double getPreciseTimeMs() noexcept
|
||||
{
|
||||
return 1000.0 * (double) Time::getHighResolutionTicks() / (double) Time::getHighResolutionTicksPerSecond();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
double getPhysicalTimeLimitMs() const noexcept
|
||||
{
|
||||
return 1000.0 * (double) a.size() / currentSampleRate;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
std::vector<float> a, b, c; // must always be of size == current bufferSize
|
||||
double currentSampleRate = 0.0;
|
||||
|
||||
StatisticsAccumulator<double> audioCallbackRuntimeMs;
|
||||
StatisticsAccumulator<double> audioCallbackGapMs;
|
||||
double lastCallbackStartTimeMs = 0.0;
|
||||
int numLateCallbacks = 0;
|
||||
int numCallbacksOverPhysicalTimeLimit = 0;
|
||||
int numLoopIterationsPerCallback;
|
||||
|
||||
Slider loopIterationsSlider;
|
||||
std::mutex metricMutex;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
|
||||
};
|
||||
|
||||
|
||||
// (This function is called by the app startup code to create our main component)
|
||||
Component* createMainContentComponent() { return new MainContentComponent(); }
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2022 - Raw Material Software Limited
|
||||
|
||||
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 7 End-User License
|
||||
Agreement and JUCE Privacy Policy.
|
||||
|
||||
End User License Agreement: www.juce.com/juce-7-licence
|
||||
Privacy Policy: www.juce.com/juce-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.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <JuceHeader.h>
|
||||
#include <mutex>
|
||||
|
||||
//==============================================================================
|
||||
class MainContentComponent : public AudioAppComponent,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
MainContentComponent()
|
||||
{
|
||||
setSize (400, 400);
|
||||
setAudioChannels (0, 2);
|
||||
|
||||
initGui();
|
||||
Desktop::getInstance().setScreenSaverEnabled (false);
|
||||
startTimer (1000);
|
||||
}
|
||||
|
||||
~MainContentComponent() override
|
||||
{
|
||||
shutdownAudio();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void prepareToPlay (int bufferSize, double sampleRate) override
|
||||
{
|
||||
currentSampleRate = sampleRate;
|
||||
allocateBuffers (static_cast<size_t> (bufferSize));
|
||||
printHeader();
|
||||
}
|
||||
|
||||
void releaseResources() override
|
||||
{
|
||||
a.clear();
|
||||
b.clear();
|
||||
c.clear();
|
||||
currentSampleRate = 0.0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override
|
||||
{
|
||||
const double startTimeMs = getPreciseTimeMs();
|
||||
|
||||
AudioBuffer<float>& outputAudio = *bufferToFill.buffer;
|
||||
std::size_t bufferSize = (std::size_t) outputAudio.getNumSamples();
|
||||
initialiseBuffers (bufferToFill, bufferSize);
|
||||
|
||||
for (int ch = 0; ch < outputAudio.getNumChannels(); ++ch)
|
||||
crunchSomeNumbers (outputAudio.getWritePointer (ch), bufferSize, numLoopIterationsPerCallback);
|
||||
|
||||
std::lock_guard<std::mutex> lock (metricMutex);
|
||||
|
||||
double endTimeMs = getPreciseTimeMs();
|
||||
addCallbackMetrics (startTimeMs, endTimeMs);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void addCallbackMetrics (double startTimeMs, double endTimeMs)
|
||||
{
|
||||
double runtimeMs = endTimeMs - startTimeMs;
|
||||
audioCallbackRuntimeMs.addValue (runtimeMs);
|
||||
|
||||
if (runtimeMs > getPhysicalTimeLimitMs())
|
||||
numCallbacksOverPhysicalTimeLimit++;
|
||||
|
||||
if (lastCallbackStartTimeMs > 0.0)
|
||||
{
|
||||
double gapMs = startTimeMs - lastCallbackStartTimeMs;
|
||||
audioCallbackGapMs.addValue (gapMs);
|
||||
|
||||
if (gapMs > 1.5 * getPhysicalTimeLimitMs())
|
||||
numLateCallbacks++;
|
||||
}
|
||||
|
||||
lastCallbackStartTimeMs = startTimeMs;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.fillAll (Colours::black);
|
||||
g.setFont (Font (16.0f));
|
||||
g.setColour (Colours::white);
|
||||
g.drawText ("loop iterations / audio callback",
|
||||
getLocalBounds().withY (loopIterationsSlider.getHeight()), Justification::centred, true);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void resized() override
|
||||
{
|
||||
loopIterationsSlider.setBounds (getLocalBounds().withSizeKeepingCentre (proportionOfWidth (0.9f), 50));
|
||||
}
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
void initGui()
|
||||
{
|
||||
loopIterationsSlider.setSliderStyle (Slider::LinearBar);
|
||||
loopIterationsSlider.setRange (0, 30000, 250);
|
||||
loopIterationsSlider.setValue (15000);
|
||||
loopIterationsSlider.setColour (Slider::thumbColourId, Colours::white);
|
||||
loopIterationsSlider.setColour (Slider::textBoxTextColourId, Colours::grey);
|
||||
updateNumLoopIterationsPerCallback();
|
||||
addAndMakeVisible (loopIterationsSlider);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void allocateBuffers (std::size_t bufferSize)
|
||||
{
|
||||
a.resize (bufferSize);
|
||||
b.resize (bufferSize);
|
||||
c.resize (bufferSize);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void initialiseBuffers (const AudioSourceChannelInfo& bufferToFill, std::size_t bufferSize)
|
||||
{
|
||||
if (bufferSize != a.size())
|
||||
{
|
||||
jassertfalse;
|
||||
Logger::writeToLog ("WARNING: Unexpected buffer size received."
|
||||
"expected: " + String (a.size()) +
|
||||
", actual: " + String (bufferSize));
|
||||
|
||||
if (bufferSize > a.size())
|
||||
Logger::writeToLog ("WARNING: Need to allocate larger buffers on audio thread!");
|
||||
|
||||
allocateBuffers (bufferSize);
|
||||
}
|
||||
|
||||
bufferToFill.clearActiveBufferRegion();
|
||||
std::fill (a.begin(), a.end(), 0.09f);
|
||||
std::fill (b.begin(), b.end(), 0.1f );
|
||||
std::fill (c.begin(), c.end(), 0.11f);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void crunchSomeNumbers (float* outBuffer, std::size_t bufferSize, int numIterations) noexcept
|
||||
{
|
||||
jassert (a.size() == bufferSize && b.size() == bufferSize && c.size() == bufferSize);
|
||||
|
||||
for (int i = 0; i < numIterations; ++i)
|
||||
{
|
||||
FloatVectorOperations::multiply (c.data(), a.data(), b.data(), (int) bufferSize);
|
||||
FloatVectorOperations::addWithMultiply (outBuffer, b.data(), c.data(), (int) bufferSize);
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void timerCallback() override
|
||||
{
|
||||
printAndResetPerformanceMetrics();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void printHeader() const
|
||||
{
|
||||
Logger::writeToLog ("buffer size = " + String (a.size()) + " samples");
|
||||
Logger::writeToLog ("sample rate = " + String (currentSampleRate) + " Hz");
|
||||
Logger::writeToLog ("physical time limit / callback = " + String (getPhysicalTimeLimitMs() )+ " ms");
|
||||
Logger::writeToLog ("");
|
||||
Logger::writeToLog (" | callback exec time / physLimit | callback time gap / physLimit | callback counters ");
|
||||
Logger::writeToLog ("numLoops | avg min max stddev | avg min max stddev | called late >limit ");
|
||||
Logger::writeToLog ("----- | ----- ----- ----- ----- | ----- ----- ----- ----- | --- --- --- ");
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void printAndResetPerformanceMetrics()
|
||||
{
|
||||
std::unique_lock<std::mutex> lock (metricMutex);
|
||||
|
||||
auto runtimeMetric = audioCallbackRuntimeMs;
|
||||
auto gapMetric = audioCallbackGapMs;
|
||||
auto late = numLateCallbacks;
|
||||
auto overLimit = numCallbacksOverPhysicalTimeLimit;
|
||||
|
||||
resetPerformanceMetrics();
|
||||
updateNumLoopIterationsPerCallback();
|
||||
|
||||
lock.unlock();
|
||||
|
||||
Logger::writeToLog (String (numLoopIterationsPerCallback).paddedRight (' ', 8) + " | "
|
||||
+ getPercentFormattedMetricString (runtimeMetric) + " | "
|
||||
+ getPercentFormattedMetricString (gapMetric) + " | "
|
||||
+ String (runtimeMetric.getCount()).paddedRight (' ', 8)
|
||||
+ String (late).paddedRight (' ', 8)
|
||||
+ String (overLimit).paddedRight (' ', 8) + " | ");
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
String getPercentFormattedMetricString (const StatisticsAccumulator<double> metric) const
|
||||
{
|
||||
auto physTimeLimit = getPhysicalTimeLimitMs();
|
||||
|
||||
return (String (100.0 * metric.getAverage() / physTimeLimit, 1) + "%").paddedRight (' ', 8)
|
||||
+ (String (100.0 * metric.getMinValue() / physTimeLimit, 1) + "%").paddedRight (' ', 8)
|
||||
+ (String (100.0 * metric.getMaxValue() / physTimeLimit, 1) + "%").paddedRight (' ', 8)
|
||||
+ String (metric.getStandardDeviation(), 3).paddedRight (' ', 8);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void resetPerformanceMetrics()
|
||||
{
|
||||
audioCallbackRuntimeMs.reset();
|
||||
audioCallbackGapMs.reset();
|
||||
numLateCallbacks = 0;
|
||||
numCallbacksOverPhysicalTimeLimit = 0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void updateNumLoopIterationsPerCallback()
|
||||
{
|
||||
numLoopIterationsPerCallback = (int) loopIterationsSlider.getValue();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static double getPreciseTimeMs() noexcept
|
||||
{
|
||||
return 1000.0 * (double) Time::getHighResolutionTicks() / (double) Time::getHighResolutionTicksPerSecond();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
double getPhysicalTimeLimitMs() const noexcept
|
||||
{
|
||||
return 1000.0 * (double) a.size() / currentSampleRate;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
std::vector<float> a, b, c; // must always be of size == current bufferSize
|
||||
double currentSampleRate = 0.0;
|
||||
|
||||
StatisticsAccumulator<double> audioCallbackRuntimeMs;
|
||||
StatisticsAccumulator<double> audioCallbackGapMs;
|
||||
double lastCallbackStartTimeMs = 0.0;
|
||||
int numLateCallbacks = 0;
|
||||
int numCallbacksOverPhysicalTimeLimit = 0;
|
||||
int numLoopIterationsPerCallback;
|
||||
|
||||
Slider loopIterationsSlider;
|
||||
std::mutex metricMutex;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
|
||||
};
|
||||
|
||||
|
||||
// (This function is called by the app startup code to create our main component)
|
||||
Component* createMainContentComponent() { return new MainContentComponent(); }
|
||||
|
Reference in New Issue
Block a user