diff --git a/.travis.yml b/.travis.yml
index 69010c09..02325201 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,7 +32,6 @@ matrix:
- cp README.md Plugins/README.md
- cp ChangeLog.md Plugins/ChangeLog.md
- cp LICENSE Plugins/LICENSE.txt
- - cp Documentation.pdf Plugins/Documentation.pdf
- mv Plugins Camomile
- zip -r $release.zip Camomile
- os: osx
@@ -50,7 +49,6 @@ matrix:
- cp README.md Plugins/README.md
- cp ChangeLog.md Plugins/ChangeLog.md
- cp LICENSE Plugins/LICENSE.txt
- - cp Documentation.pdf Plugins/Documentation.pdf
- mv Plugins Camomile
- zip -r $release.zip Camomile
deploy:
diff --git a/Camomile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Camomile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 00000000..18d98100
--- /dev/null
+++ b/Camomile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/ChangeLog.md b/ChangeLog.md
index a153f2df..ec010f4b 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,14 @@
+v1.0.5
+- Fix warnings when audio buses are not well configured
+- Fix MIDI out issue when block size is superior to 64 samples (#107)
+- Improve multibus support for multichannel & side-chain - experimental with iolayout (#110)
+- Add support for autoprogram to disable parameters recording within programs
+- Add program updated method to notify the host that internal state has changed
+- Fix plugin format recognition VST/VST3/AU
+- Improve online documentation & remove locale documentation
+- Add plugin's state management for dynamic reloading
+- Improve background image resizing and positioning
+
v1.0.4
- Add label support for GUI objects (#95)
- Add graphical array support for GUI array objects (graph) (#93)
diff --git a/Documentation.pdf b/Documentation.pdf
deleted file mode 100644
index 0a2a7c29..00000000
Binary files a/Documentation.pdf and /dev/null differ
diff --git a/Effect/Builds/LinuxMakefile/Makefile b/Effect/Builds/LinuxMakefile/Makefile
index 7b5a68eb..c5ddc369 100644
--- a/Effect/Builds/LinuxMakefile/Makefile
+++ b/Effect/Builds/LinuxMakefile/Makefile
@@ -35,7 +35,7 @@ ifeq ($(CONFIG),Debug)
TARGET_ARCH := -march=native
endif
- JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DPD_INTERNAL=1 -DHAVE_UNISTD_H=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.4 -DJUCE_APP_VERSION_HEX=0x10004 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DPD_INTERNAL=1 -DHAVE_UNISTD_H=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.5 -DJUCE_APP_VERSION_HEX=0x10005 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
JUCE_CPPFLAGS_VST := -DJucePlugin_Build_VST=1 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0
JUCE_CFLAGS_VST := -fPIC -fvisibility=hidden
@@ -62,7 +62,7 @@ ifeq ($(CONFIG),Release)
TARGET_ARCH := -march=native
endif
- JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DPD_INTERNAL=1 -DHAVE_UNISTD_H=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.4 -DJUCE_APP_VERSION_HEX=0x10004 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DPD_INTERNAL=1 -DHAVE_UNISTD_H=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.5 -DJUCE_APP_VERSION_HEX=0x10005 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
JUCE_CPPFLAGS_VST := -DJucePlugin_Build_VST=1 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0
JUCE_CFLAGS_VST := -fPIC -fvisibility=hidden
@@ -86,6 +86,8 @@ OBJECTS_VST := \
OBJECTS_SHARED_CODE := \
$(JUCE_OBJDIR)/PluginProcessor_319d19ef.o \
+ $(JUCE_OBJDIR)/PluginProcessorBuses_ff06f3c9.o \
+ $(JUCE_OBJDIR)/PluginProcessorReceive_8862f77e.o \
$(JUCE_OBJDIR)/PluginEditor_ef07f2fa.o \
$(JUCE_OBJDIR)/PluginEditorComponents_6d39f4f0.o \
$(JUCE_OBJDIR)/PluginEditorConsole_207d0487.o \
@@ -147,6 +149,16 @@ $(JUCE_OBJDIR)/PluginProcessor_319d19ef.o: ../../../Source/PluginProcessor.cpp
@echo "Compiling PluginProcessor.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
+$(JUCE_OBJDIR)/PluginProcessorBuses_ff06f3c9.o: ../../../Source/PluginProcessorBuses.cpp
+ -$(V_AT)mkdir -p $(JUCE_OBJDIR)
+ @echo "Compiling PluginProcessorBuses.cpp"
+ $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
+
+$(JUCE_OBJDIR)/PluginProcessorReceive_8862f77e.o: ../../../Source/PluginProcessorReceive.cpp
+ -$(V_AT)mkdir -p $(JUCE_OBJDIR)
+ @echo "Compiling PluginProcessorReceive.cpp"
+ $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
+
$(JUCE_OBJDIR)/PluginEditor_ef07f2fa.o: ../../../Source/PluginEditor.cpp
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
@echo "Compiling PluginEditor.cpp"
diff --git a/Effect/Builds/MacOSX/CamomileFx.xcodeproj/project.pbxproj b/Effect/Builds/MacOSX/CamomileFx.xcodeproj/project.pbxproj
index 9085d62a..c8f0e8d5 100644
--- a/Effect/Builds/MacOSX/CamomileFx.xcodeproj/project.pbxproj
+++ b/Effect/Builds/MacOSX/CamomileFx.xcodeproj/project.pbxproj
@@ -44,35 +44,35 @@
6E9F820E4E00076026F8B29F /* PluginParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4180B270C578F80651F4E657 /* PluginParameter.cpp */; };
71CE59DFC9B492815819B62B /* PdArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BCAF008D6BEB4E12A741F90 /* PdArray.cpp */; };
78905FC75640977BEA9CB160 /* include_juce_audio_plugin_client_VST2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53B14A3227113D23D86B6F4F /* include_juce_audio_plugin_client_VST2.cpp */; };
- 7BBE10E6FDD1CD23F494C0C2 /* include_juce_audio_plugin_client_AU.r in Rez */ = {isa = PBXBuildFile; fileRef = 013C9D8BD6D358E549C03D94 /* include_juce_audio_plugin_client_AU.r */; };
+ 7B7F6F55C2E21F9074EFABC2 /* PluginProcessorBuses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C36AC6E988343B87302C5E5 /* PluginProcessorBuses.cpp */; };
7E4BED42B5591BFD32C645C6 /* x_libpd_extra_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A712B8BE5C0838F28EFDB23 /* x_libpd_extra_utils.c */; };
7F815B8445658BC9603C94F4 /* PdPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B0AAC6036B2298E672A6025F /* PdPatch.cpp */; };
80BF521EFCF22E6936AA95F2 /* PluginProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8316FA8AA73A7793367AE385 /* PluginProcessor.cpp */; };
824C0432B9D51334CD0BFFBC /* PluginLookAndFeel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDB495D39563B154CD43B2B6 /* PluginLookAndFeel.cpp */; };
8390F31E7B7096D3DA0944D1 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
83F519C42E92991125F7540E /* PluginEditorConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD5189476C601579540C3631 /* PluginEditorConsole.cpp */; };
- 8F706FBE206E996800ECE958 /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
- 8F706FBF206E996800ECE958 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
- 8F706FC0206E996800ECE958 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
- 8F706FC1206E996800ECE958 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
- 8F706FC2206E996800ECE958 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
- 8F706FC3206E996800ECE958 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
- 8F706FC4206E996800ECE958 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
- 8F706FC5206E996800ECE958 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
- 8F706FC6206E996800ECE958 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
- 8F706FC7206E996800ECE958 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
- 8F706FC8206E996800ECE958 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
- 8F706FC9206E996800ECE958 /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
- 8F706FCA206E996800ECE958 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
- 8F706FCB206E996800ECE958 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
- 8F706FCC206E996800ECE958 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
- 8F706FCD206E996800ECE958 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
- 8F706FCE206E996800ECE958 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
- 8F706FCF206E996800ECE958 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
- 8F706FD0206E996800ECE958 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
- 8F706FD1206E996800ECE958 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
- 8F706FD2206E996800ECE958 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
- 8F706FD3206E996800ECE958 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
+ 8FDA448E20850FCE003363AB /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
+ 8FDA448F20850FCE003363AB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
+ 8FDA449020850FCE003363AB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
+ 8FDA449120850FCE003363AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
+ 8FDA449220850FCE003363AB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
+ 8FDA449320850FCE003363AB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
+ 8FDA449420850FCE003363AB /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
+ 8FDA449520850FCE003363AB /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
+ 8FDA449620850FCE003363AB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
+ 8FDA449720850FCE003363AB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
+ 8FDA449820850FCE003363AB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
+ 8FDA449920850FCE003363AB /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
+ 8FDA449A20850FCE003363AB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
+ 8FDA449B20850FCE003363AB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
+ 8FDA449C20850FCE003363AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
+ 8FDA449D20850FCE003363AB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
+ 8FDA449E20850FCE003363AB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
+ 8FDA449F20850FCE003363AB /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
+ 8FDA44A020850FCE003363AB /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
+ 8FDA44A120850FCE003363AB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
+ 8FDA44A220850FCE003363AB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
+ 8FDA44A320850FCE003363AB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
9ED45AEC443ADEB8BE4CBA5A /* PluginEditorInteraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 584F0645E5F980B129306159 /* PluginEditorInteraction.cpp */; };
A2DE2F4FD68866479695F432 /* PluginEnvironment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5639CA5B96F7FF71250CB01 /* PluginEnvironment.cpp */; };
A4A537DAE5811714A93FA77E /* PdGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36F47BEB55DEDA79DFA192CB /* PdGui.cpp */; };
@@ -95,31 +95,32 @@
F602C1CD22553264FCB0DB22 /* include_juce_audio_processors.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECA218C8F959D75DB14BDA70 /* include_juce_audio_processors.mm */; };
F7AA88D706F73F4C397B30B1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
F9EB9D074B63BC4B1A5FE2B7 /* include_juce_audio_plugin_client_AU_2.mm in Sources */ = {isa = PBXBuildFile; fileRef = C954F9431CE6C4895C5A23FF /* include_juce_audio_plugin_client_AU_2.mm */; };
+ FA6CB1714128D903B87A9C89 /* PluginProcessorReceive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94F406BCB710D5F670B567BE /* PluginProcessorReceive.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- 8F706FD4206E996800ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44A420850FCF003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 783348B185006D1B6D1CF889;
remoteInfo = "CamomileFx - VST";
};
- 8F706FD5206E996800ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44A520850FCF003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
remoteGlobalIDString = DDC710B892FDE37A0F19292D;
remoteInfo = "CamomileFx - Shared Code";
};
- 8F706FD6206E996800ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44A620850FCF003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 074FFE22626A916E5D070022;
remoteInfo = "CamomileFx - VST3";
};
- 8F706FD7206E996800ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44A720850FCF003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
@@ -129,7 +130,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
- 013C9D8BD6D358E549C03D94 /* include_juce_audio_plugin_client_AU.r */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; name = include_juce_audio_plugin_client_AU.r; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU.r; sourceTree = SOURCE_ROOT; };
+ 013C9D8BD6D358E549C03D94 /* include_juce_audio_plugin_client_AU.r */ = {isa = PBXFileReference; lastKnownFileType = file.r; name = include_juce_audio_plugin_client_AU.r; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU.r; sourceTree = SOURCE_ROOT; };
0142193359A9D97378D55458 /* include_juce_audio_plugin_client_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_plugin_client_utils.cpp; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_utils.cpp; sourceTree = SOURCE_ROOT; };
03C65E32457C2DF8DCEFECC6 /* DejaVuSansMono.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = DejaVuSansMono.ttf; path = ../../../Ressources/Polices/DejaVuSansMono.ttf; sourceTree = SOURCE_ROOT; };
040299E7BDC34386103FC2DC /* PdObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PdObject.cpp; path = ../../../Source/Pd/PdObject.cpp; sourceTree = SOURCE_ROOT; };
@@ -164,6 +165,7 @@
584F0645E5F980B129306159 /* PluginEditorInteraction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginEditorInteraction.cpp; path = ../../../Source/PluginEditorInteraction.cpp; sourceTree = SOURCE_ROOT; };
5ACCD6343F95DECDF7C87622 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
5B62A53E3DAF1438808D719A /* copy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = copy.png; path = ../../../Ressources/Images/copy.png; sourceTree = SOURCE_ROOT; };
+ 5C36AC6E988343B87302C5E5 /* PluginProcessorBuses.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessorBuses.cpp; path = ../../../Source/PluginProcessorBuses.cpp; sourceTree = SOURCE_ROOT; };
5D02B31CECB54B43601874CC /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_events; path = ../../../Juce/modules/juce_events; sourceTree = SOURCE_ROOT; };
5D7ECB5D028435D6C0D2B563 /* include_juce_audio_plugin_client_AU_1.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_plugin_client_AU_1.mm; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm; sourceTree = SOURCE_ROOT; };
62AE406B0AB1237903C5C14B /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_audio_processors; path = ../../../Juce/modules/juce_audio_processors; sourceTree = SOURCE_ROOT; };
@@ -190,6 +192,7 @@
9186017086D0F372BA064B37 /* juce_data_structures */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_data_structures; path = ../../../Juce/modules/juce_data_structures; sourceTree = SOURCE_ROOT; };
9361164F8C7545AF133B200A /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
94796974590C40EEA252FE11 /* garbage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = garbage.png; path = ../../../Ressources/Images/garbage.png; sourceTree = SOURCE_ROOT; };
+ 94F406BCB710D5F670B567BE /* PluginProcessorReceive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessorReceive.cpp; path = ../../../Source/PluginProcessorReceive.cpp; sourceTree = SOURCE_ROOT; };
95B90FA25F5E97F158275591 /* PluginEditorObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginEditorObject.cpp; path = ../../../Source/PluginEditorObject.cpp; sourceTree = SOURCE_ROOT; };
966FC7F9824B81033BD2BEA6 /* juce_gui_extra */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_gui_extra; path = ../../../Juce/modules/juce_gui_extra; sourceTree = SOURCE_ROOT; };
9AE91F9D1604D8DD53364454 /* PluginEditorComponents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginEditorComponents.h; path = ../../../Source/PluginEditorComponents.h; sourceTree = SOURCE_ROOT; };
@@ -254,18 +257,18 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FCA206E996800ECE958 /* Accelerate.framework in Frameworks */,
- 8F706FCB206E996800ECE958 /* AudioToolbox.framework in Frameworks */,
+ 8FDA449A20850FCE003363AB /* Accelerate.framework in Frameworks */,
+ 8FDA449B20850FCE003363AB /* AudioToolbox.framework in Frameworks */,
F0E616AAADE2C8DFABCA8F14 /* AudioUnit.framework in Frameworks */,
- 8F706FCC206E996800ECE958 /* Carbon.framework in Frameworks */,
- 8F706FCD206E996800ECE958 /* Cocoa.framework in Frameworks */,
- 8F706FCE206E996800ECE958 /* CoreAudio.framework in Frameworks */,
+ 8FDA449C20850FCE003363AB /* Carbon.framework in Frameworks */,
+ 8FDA449D20850FCE003363AB /* Cocoa.framework in Frameworks */,
+ 8FDA449E20850FCE003363AB /* CoreAudio.framework in Frameworks */,
BABB947ED89952F98B386B72 /* CoreAudioKit.framework in Frameworks */,
- 8F706FCF206E996800ECE958 /* CoreMIDI.framework in Frameworks */,
- 8F706FD0206E996800ECE958 /* DiscRecording.framework in Frameworks */,
- 8F706FD1206E996800ECE958 /* IOKit.framework in Frameworks */,
- 8F706FD2206E996800ECE958 /* QuartzCore.framework in Frameworks */,
- 8F706FD3206E996800ECE958 /* WebKit.framework in Frameworks */,
+ 8FDA449F20850FCE003363AB /* CoreMIDI.framework in Frameworks */,
+ 8FDA44A020850FCE003363AB /* DiscRecording.framework in Frameworks */,
+ 8FDA44A120850FCE003363AB /* IOKit.framework in Frameworks */,
+ 8FDA44A220850FCE003363AB /* QuartzCore.framework in Frameworks */,
+ 8FDA44A320850FCE003363AB /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -273,31 +276,22 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FBF206E996800ECE958 /* Accelerate.framework in Frameworks */,
- 8F706FC0206E996800ECE958 /* AudioToolbox.framework in Frameworks */,
- 8F706FC1206E996800ECE958 /* Carbon.framework in Frameworks */,
- 8F706FC2206E996800ECE958 /* Cocoa.framework in Frameworks */,
- 8F706FC3206E996800ECE958 /* CoreAudio.framework in Frameworks */,
- 8F706FC4206E996800ECE958 /* CoreMIDI.framework in Frameworks */,
- 8F706FC5206E996800ECE958 /* DiscRecording.framework in Frameworks */,
- 8F706FC6206E996800ECE958 /* IOKit.framework in Frameworks */,
- 8F706FC7206E996800ECE958 /* QuartzCore.framework in Frameworks */,
- 8F706FC8206E996800ECE958 /* WebKit.framework in Frameworks */,
+ 8FDA448F20850FCE003363AB /* Accelerate.framework in Frameworks */,
+ 8FDA449020850FCE003363AB /* AudioToolbox.framework in Frameworks */,
+ 8FDA449120850FCE003363AB /* Carbon.framework in Frameworks */,
+ 8FDA449220850FCE003363AB /* Cocoa.framework in Frameworks */,
+ 8FDA449320850FCE003363AB /* CoreAudio.framework in Frameworks */,
+ 8FDA449420850FCE003363AB /* CoreMIDI.framework in Frameworks */,
+ 8FDA449520850FCE003363AB /* DiscRecording.framework in Frameworks */,
+ 8FDA449620850FCE003363AB /* IOKit.framework in Frameworks */,
+ 8FDA449720850FCE003363AB /* QuartzCore.framework in Frameworks */,
+ 8FDA449820850FCE003363AB /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 09B6F5A65F1ED9D628312F07 /* Credits */ = {
- isa = PBXGroup;
- children = (
- 7C40B2D7FB1D45BFD75DD0CE /* CreditsAU */,
- 7F64050048E006DE82109198 /* CreditsVST */,
- );
- name = Credits;
- sourceTree = "";
- };
0CAD382A752A9E300C30E94E /* Pd */ = {
isa = PBXGroup;
children = (
@@ -346,6 +340,8 @@
isa = PBXGroup;
children = (
8316FA8AA73A7793367AE385 /* PluginProcessor.cpp */,
+ 5C36AC6E988343B87302C5E5 /* PluginProcessorBuses.cpp */,
+ 94F406BCB710D5F670B567BE /* PluginProcessorReceive.cpp */,
12D18A515768FDD5F06713B8 /* PluginProcessor.h */,
BBB154BFC6C6C7D97D835E2B /* PluginConsole.h */,
7B3F90B6162FAD72942CD046 /* PluginEditor.cpp */,
@@ -384,8 +380,8 @@
8CCC4A823EBBBC964569EE98 /* Ressources */ = {
isa = PBXGroup;
children = (
- 09B6F5A65F1ED9D628312F07 /* Credits */,
- F4EF883EF36207C50C5CEE98 /* Images */,
+ C86A0EEA322AF20148520DA8 /* Credits */,
+ EF8AB64DCB22B6F0218ECE84 /* Images */,
4C431F0B0996381F2241E2A8 /* Polices */,
);
name = Ressources;
@@ -458,6 +454,15 @@
name = "JUCE Library Code";
sourceTree = "";
};
+ C86A0EEA322AF20148520DA8 /* Credits */ = {
+ isa = PBXGroup;
+ children = (
+ 7C40B2D7FB1D45BFD75DD0CE /* CreditsAU */,
+ 7F64050048E006DE82109198 /* CreditsVST */,
+ );
+ name = Credits;
+ sourceTree = "";
+ };
E0811CE76297EA217932344A /* Products */ = {
isa = PBXGroup;
children = (
@@ -480,12 +485,12 @@
name = Resources;
sourceTree = "";
};
- F4EF883EF36207C50C5CEE98 /* Images */ = {
+ EF8AB64DCB22B6F0218ECE84 /* Images */ = {
isa = PBXGroup;
children = (
+ 5B62A53E3DAF1438808D719A /* copy.png */,
3E954945588A4344B03456E6 /* flower_center.png */,
47A9152911E901D11E317E8D /* flower_petals.png */,
- 5B62A53E3DAF1438808D719A /* copy.png */,
94796974590C40EEA252FE11 /* garbage.png */,
E52D665A06D80A15B611BAAA /* reload.png */,
D092AE31C378719147EA8339 /* settings.png */,
@@ -697,7 +702,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FC9206E996800ECE958 /* RecentFilesMenuTemplate.nib in Resources */,
+ 8FDA449920850FCE003363AB /* RecentFilesMenuTemplate.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -713,7 +718,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FBE206E996800ECE958 /* RecentFilesMenuTemplate.nib in Resources */,
+ 8FDA448E20850FCE003363AB /* RecentFilesMenuTemplate.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -724,7 +729,6 @@
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
files = (
- 7BBE10E6FDD1CD23F494C0C2 /* include_juce_audio_plugin_client_AU.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -761,6 +765,8 @@
buildActionMask = 2147483647;
files = (
80BF521EFCF22E6936AA95F2 /* PluginProcessor.cpp in Sources */,
+ 7B7F6F55C2E21F9074EFABC2 /* PluginProcessorBuses.cpp in Sources */,
+ FA6CB1714128D903B87A9C89 /* PluginProcessorReceive.cpp in Sources */,
F204C0EBE6F8499BD5F0030F /* PluginEditor.cpp in Sources */,
F45B9A1E1D0E8EDB6678043A /* PluginEditorComponents.cpp in Sources */,
83F519C42E92991125F7540E /* PluginEditorConsole.cpp in Sources */,
@@ -800,22 +806,22 @@
398955D5066CDD4932E310CA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 783348B185006D1B6D1CF889 /* CamomileFx - VST */;
- targetProxy = 8F706FD4206E996800ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44A420850FCF003363AB /* PBXContainerItemProxy */;
};
3B6CB08BC817F55EB2060FF0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = DDC710B892FDE37A0F19292D /* CamomileFx - Shared Code */;
- targetProxy = 8F706FD5206E996800ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44A520850FCF003363AB /* PBXContainerItemProxy */;
};
7D367FF9FDC3FA3B59CD142E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 6E51637F255AB3A3BE377A27 /* CamomileFx - AU */;
- targetProxy = 8F706FD7206E996800ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44A720850FCF003363AB /* PBXContainerItemProxy */;
};
A1C3BEFB2FD635B36DFEC246 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 074FFE22626A916E5D070022 /* CamomileFx - VST3 */;
- targetProxy = 8F706FD6206E996800ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44A620850FCF003363AB /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@@ -893,8 +899,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
@@ -954,8 +960,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=1",
@@ -1016,8 +1022,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=1",
@@ -1072,8 +1078,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=1",
@@ -1136,8 +1142,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=0",
@@ -1240,8 +1246,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=1",
@@ -1294,8 +1300,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=0",
@@ -1355,8 +1361,8 @@
"PD_INTERNAL=1",
"HAVE_UNISTD_H=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
diff --git a/Effect/Builds/MacOSX/Info-AU.plist b/Effect/Builds/MacOSX/Info-AU.plist
index 45f3b706..ce856037 100644
--- a/Effect/Builds/MacOSX/Info-AU.plist
+++ b/Effect/Builds/MacOSX/Info-AU.plist
@@ -18,9 +18,9 @@
CFBundleSignature
????
CFBundleShortVersionString
- 1.0.4
+ 1.0.5
CFBundleVersion
- 1.0.4
+ 1.0.5
NSHumanReadableCopyright
Pierre Guillot
NSHighResolutionCapable
@@ -41,7 +41,7 @@
subtype
Kpq9
version
- 65540
+ 65541
diff --git a/Effect/Builds/MacOSX/Info-VST.plist b/Effect/Builds/MacOSX/Info-VST.plist
index b7ab5ac0..7c05b90c 100644
--- a/Effect/Builds/MacOSX/Info-VST.plist
+++ b/Effect/Builds/MacOSX/Info-VST.plist
@@ -18,9 +18,9 @@
CFBundleSignature
????
CFBundleShortVersionString
- 1.0.4
+ 1.0.5
CFBundleVersion
- 1.0.4
+ 1.0.5
NSHumanReadableCopyright
Pierre Guillot
NSHighResolutionCapable
diff --git a/Effect/Builds/MacOSX/Info-VST3.plist b/Effect/Builds/MacOSX/Info-VST3.plist
index b7ab5ac0..7c05b90c 100644
--- a/Effect/Builds/MacOSX/Info-VST3.plist
+++ b/Effect/Builds/MacOSX/Info-VST3.plist
@@ -18,9 +18,9 @@
CFBundleSignature
????
CFBundleShortVersionString
- 1.0.4
+ 1.0.5
CFBundleVersion
- 1.0.4
+ 1.0.5
NSHumanReadableCopyright
Pierre Guillot
NSHighResolutionCapable
diff --git a/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj b/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj
index c0ecdcde..9ec48519 100644
--- a/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj
+++ b/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj
@@ -110,7 +110,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -157,7 +157,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -207,7 +207,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -258,7 +258,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -302,6 +302,8 @@
+
+
@@ -729,6 +731,9 @@
true
+
+ true
+
true
@@ -2640,9 +2645,9 @@
+
-
diff --git a/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj.filters b/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj.filters
index 231dcc17..fc12f2ec 100644
--- a/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj.filters
+++ b/Effect/Builds/VisualStudio2015/CamomileFx_SharedCode.vcxproj.filters
@@ -373,6 +373,12 @@
CamomileFx\Source
+
+ CamomileFx\Source
+
+
+ CamomileFx\Source
+
CamomileFx\Source
@@ -850,6 +856,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\format_types
+
JUCE Modules\juce_audio_processors\format_types
@@ -4190,13 +4199,13 @@
CamomileFx\Ressources\Credits
-
+
CamomileFx\Ressources\Images
-
+
CamomileFx\Ressources\Images
-
+
CamomileFx\Ressources\Images
diff --git a/Effect/Builds/VisualStudio2015/CamomileFx_VST.vcxproj b/Effect/Builds/VisualStudio2015/CamomileFx_VST.vcxproj
index 1a5216a6..1142823c 100644
--- a/Effect/Builds/VisualStudio2015/CamomileFx_VST.vcxproj
+++ b/Effect/Builds/VisualStudio2015/CamomileFx_VST.vcxproj
@@ -110,7 +110,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -157,7 +157,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -207,7 +207,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -255,7 +255,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
diff --git a/Effect/Builds/VisualStudio2015/CamomileFx_VST3.vcxproj b/Effect/Builds/VisualStudio2015/CamomileFx_VST3.vcxproj
index f5f81534..89bbb060 100644
--- a/Effect/Builds/VisualStudio2015/CamomileFx_VST3.vcxproj
+++ b/Effect/Builds/VisualStudio2015/CamomileFx_VST3.vcxproj
@@ -110,7 +110,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -157,7 +157,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -207,7 +207,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -255,7 +255,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
diff --git a/Effect/Builds/VisualStudio2015/resources.rc b/Effect/Builds/VisualStudio2015/resources.rc
index ef7b4546..dd583af4 100644
--- a/Effect/Builds/VisualStudio2015/resources.rc
+++ b/Effect/Builds/VisualStudio2015/resources.rc
@@ -7,7 +7,7 @@
#include
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,0,4,0
+FILEVERSION 1,0,5,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
@@ -16,9 +16,9 @@ BEGIN
VALUE "CompanyName", "Pierre Guillot\0"
VALUE "LegalCopyright", "Pierre Guillot\0"
VALUE "FileDescription", "CamomileFx\0"
- VALUE "FileVersion", "1.0.4\0"
+ VALUE "FileVersion", "1.0.5\0"
VALUE "ProductName", "CamomileFx\0"
- VALUE "ProductVersion", "1.0.4\0"
+ VALUE "ProductVersion", "1.0.5\0"
END
END
diff --git a/Effect/CamomileFx.jucer b/Effect/CamomileFx.jucer
index 06c34137..89fecadd 100644
--- a/Effect/CamomileFx.jucer
+++ b/Effect/CamomileFx.jucer
@@ -1,7 +1,7 @@
+ pluginAUExportPrefix="CamomileFxAU" aaxIdentifier="com.pierreguillot.camomilefx"
+ pluginAAXCategory="2" jucerVersion="5.3.1" companyName="Pierre Guillot"
+ headerPath="../../../Dependencies/LibPd/pure-data/src
../../../Dependencies/LibPd/libpd_wrapper
../../../Dependencies/LibPd/libpd_wrapper/util
../../../Dependencies/LibPd/cpp
"
+ companyWebsite="github.com/pierreguillot/camomile" defines="PD_INTERNAL=1"
+ pluginFormats="buildVST,buildVST3,buildAU" pluginCharacteristicsValue="pluginWantsMidiIn,pluginProducesMidiOut,pluginEditorRequiresKeys">
+
+
@@ -76,22 +81,22 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
-
diff --git a/Effect/JuceLibraryCode/AppConfig.h b/Effect/JuceLibraryCode/AppConfig.h
index ca75c7f5..c2771e08 100644
--- a/Effect/JuceLibraryCode/AppConfig.h
+++ b/Effect/JuceLibraryCode/AppConfig.h
@@ -341,13 +341,13 @@
#define JucePlugin_EditorRequiresKeyboardFocus 1
#endif
#ifndef JucePlugin_Version
- #define JucePlugin_Version 1.0.4
+ #define JucePlugin_Version 1.0.5
#endif
#ifndef JucePlugin_VersionCode
- #define JucePlugin_VersionCode 0x10004
+ #define JucePlugin_VersionCode 0x10005
#endif
#ifndef JucePlugin_VersionString
- #define JucePlugin_VersionString "1.0.4"
+ #define JucePlugin_VersionString "1.0.5"
#endif
#ifndef JucePlugin_VSTUniqueID
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode
@@ -355,8 +355,11 @@
#ifndef JucePlugin_VSTCategory
#define JucePlugin_VSTCategory kPlugCategEffect
#endif
+#ifndef JucePlugin_Vst3Category
+ #define JucePlugin_Vst3Category "Fx"
+#endif
#ifndef JucePlugin_AUMainType
- #define JucePlugin_AUMainType kAudioUnitType_MusicEffect
+ #define JucePlugin_AUMainType 'aumf'
#endif
#ifndef JucePlugin_AUSubType
#define JucePlugin_AUSubType JucePlugin_PluginCode
@@ -374,7 +377,7 @@
#define JucePlugin_CFBundleIdentifier com.pierreguillot.camomile
#endif
#ifndef JucePlugin_RTASCategory
- #define JucePlugin_RTASCategory ePlugInCategory_None
+ #define JucePlugin_RTASCategory 0
#endif
#ifndef JucePlugin_RTASManufacturerCode
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
@@ -398,7 +401,7 @@
#define JucePlugin_AAXProductId JucePlugin_PluginCode
#endif
#ifndef JucePlugin_AAXCategory
- #define JucePlugin_AAXCategory AAX_ePlugInCategory_Dynamics
+ #define JucePlugin_AAXCategory 2
#endif
#ifndef JucePlugin_AAXDisableBypass
#define JucePlugin_AAXDisableBypass 0
diff --git a/Effect/JuceLibraryCode/BinaryData.cpp b/Effect/JuceLibraryCode/BinaryData.cpp
index 57c80129..9855185f 100644
--- a/Effect/JuceLibraryCode/BinaryData.cpp
+++ b/Effect/JuceLibraryCode/BinaryData.cpp
@@ -11,7 +11,7 @@ namespace BinaryData
static const unsigned char temp_binary_data_0[] =
"Camomile is a free and open-source audio plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.\n"
"\n"
-"Version: 1.0.4\n"
+"Version: 1.0.5\n"
"Author: Pierre Guillot\n"
"Organizations: CICM | Universit\xc3\xa9 Paris 8\n"
"Website: github.com/pierreguillot/camomile\n"
@@ -28,7 +28,7 @@ const char* CreditsAU = (const char*) temp_binary_data_0;
static const unsigned char temp_binary_data_1[] =
"Camomile is a free and open-source audio plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.\n"
"\n"
-"Version: 1.0.4\n"
+"Version: 1.0.5\n"
"Author: Pierre Guillot\n"
"Organizations: CICM | Universit\xc3\xa9 Paris 8\n"
"Website: github.com/pierreguillot/camomile\n"
@@ -42,8 +42,62 @@ static const unsigned char temp_binary_data_1[] =
const char* CreditsVST = (const char*) temp_binary_data_1;
-//================== flower_center.png ==================
+//================== copy.png ==================
static const unsigned char temp_binary_data_2[] =
+{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,3,0,0,0,195,166,36,200,0,0,0,3,115,66,73,84,8,8,8,219,225,79,224,0,0,0,9,112,72,89,115,0,0,14,131,0,0,14,131,1,56,78,237,13,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,119,119,
+119,46,105,110,107,115,99,97,112,101,46,111,114,103,155,238,60,26,0,0,2,139,80,76,84,69,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,142,61,39,0,0,0,216,116,82,78,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,28,29,
+30,31,32,33,34,36,37,38,39,40,41,42,43,44,45,48,49,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,75,76,77,78,80,81,82,83,84,85,86,88,90,91,92,93,95,96,97,98,101,102,104,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,
+123,124,126,127,128,129,130,131,132,135,137,138,139,142,143,144,146,147,148,149,150,151,152,153,154,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,179,180,181,183,184,185,186,187,188,189,190,191,192,193,194,197,198,199,202,
+203,204,205,206,207,208,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,10,6,38,255,0,0,12,5,73,68,65,84,120,218,237,221,11,151,
+149,85,29,7,224,61,195,76,32,50,130,35,8,162,162,53,64,48,153,105,101,166,230,5,24,211,68,3,69,17,144,52,50,80,1,65,203,74,13,185,40,130,87,200,164,171,8,130,133,104,154,23,212,160,18,98,194,20,152,65,112,102,224,124,156,166,203,114,121,97,246,185,172,
+5,195,217,251,249,125,128,179,206,127,255,158,245,190,251,188,151,153,16,170,41,181,205,19,166,206,95,178,102,243,142,174,66,78,233,218,177,121,205,146,249,83,39,52,215,134,156,211,111,252,178,214,66,222,105,93,54,190,95,166,237,15,154,180,186,189,32,
+133,66,251,234,73,131,242,171,191,105,85,167,234,63,74,231,170,166,188,234,31,186,88,253,159,34,176,120,104,62,245,55,44,116,236,63,204,153,96,97,67,30,245,215,207,220,165,237,195,102,215,204,250,12,250,31,178,81,211,61,102,227,144,228,251,31,187,77,
+205,145,108,27,155,120,255,45,109,74,142,166,173,37,233,254,103,31,84,113,145,28,156,157,110,253,125,87,234,183,132,172,236,155,42,128,21,202,45,41,43,82,61,254,171,182,196,164,121,22,104,113,254,47,121,31,144,226,78,112,204,94,197,150,156,189,99,146,
+235,127,240,86,181,150,145,173,131,19,235,191,110,131,82,203,202,134,186,180,0,76,83,105,153,153,158,84,255,3,118,106,180,204,180,38,117,111,112,158,66,203,206,130,132,250,63,217,29,128,242,179,111,88,58,0,238,87,103,5,89,154,76,255,103,118,104,179,130,
+116,141,74,5,192,99,202,172,40,79,37,210,127,195,135,186,172,40,157,39,166,1,96,162,42,43,204,164,52,0,60,170,201,10,179,42,137,254,235,119,23,159,244,95,191,187,107,226,229,57,101,226,93,191,125,183,248,178,180,37,241,104,200,37,197,198,60,112,251,25,
+33,199,156,126,235,254,98,75,115,89,10,115,46,42,50,228,166,209,33,215,52,253,161,200,218,44,78,96,200,154,237,209,17,59,110,235,19,242,77,237,172,248,47,164,29,53,213,63,227,232,184,241,219,67,222,153,21,95,158,4,142,142,241,45,192,166,62,153,3,168,
+141,159,5,46,173,254,9,175,141,205,183,127,84,200,61,77,209,157,224,148,234,31,112,78,108,190,31,6,185,53,182,64,119,84,255,124,247,198,230,27,161,255,112,122,108,129,22,85,255,124,171,35,227,189,167,254,238,196,222,150,127,186,250,199,123,62,50,222,
+90,237,119,231,55,145,21,122,161,250,199,139,189,14,254,35,237,119,103,65,236,66,64,245,143,183,39,50,222,53,218,239,206,85,145,21,58,88,253,227,109,141,140,247,13,237,119,231,242,216,46,48,237,61,192,231,181,159,62,128,135,34,151,129,250,105,63,125,
+0,87,37,253,27,7,128,162,137,60,17,120,157,242,51,0,16,150,246,52,219,206,227,149,159,3,128,97,251,178,120,253,17,128,30,211,195,221,142,151,235,117,159,7,128,240,196,225,38,251,231,105,170,207,5,64,255,195,252,117,136,247,191,166,249,108,0,132,250,207,
+108,4,183,52,41,62,35,0,33,92,253,137,123,66,31,254,116,160,222,243,2,16,250,206,220,116,232,255,51,109,95,228,57,144,252,0,252,231,247,224,53,63,248,201,3,115,111,56,171,70,231,121,2,16,0,4,0,1,64,0,16,0,4,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,44,15,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,28,193,156,48,242,162,201,179,102,231,148,89,147,47,28,217,0,64,8,141,147,151,175,219,210,150,233,191,112,111,123,227,217,7,175,25,148,49,128,17,55,175,239,44,228,158,
+142,103,102,12,207,18,64,211,194,87,10,242,191,188,56,119,68,110,0,134,45,233,210,251,199,255,190,229,207,6,231,4,160,97,65,187,206,63,149,221,115,142,203,5,64,221,180,86,125,31,38,239,92,95,155,5,128,243,222,212,117,15,249,243,151,51,0,48,181,67,209,
+61,230,131,171,83,7,80,119,159,150,163,89,88,147,52,128,198,181,42,46,146,95,28,159,48,128,81,111,43,184,104,94,62,53,89,0,231,238,81,111,9,105,29,157,40,128,225,59,149,91,82,222,62,41,73,0,253,95,82,109,137,89,87,151,32,128,154,39,21,91,114,30,72,16,
+192,92,181,150,145,233,201,1,184,226,144,86,203,72,231,183,18,3,112,134,187,63,229,229,189,161,105,1,120,92,165,189,177,13,56,102,0,156,237,4,80,246,73,224,11,41,1,88,175,208,178,179,58,33,0,227,212,89,65,190,146,12,128,62,175,106,179,130,108,72,6,192,
+245,202,172,40,227,82,1,176,85,151,21,229,143,137,0,104,86,101,101,57,116,74,26,0,230,169,178,183,46,8,31,27,0,74,186,11,216,245,214,27,57,229,111,37,1,120,54,9,0,195,139,206,185,125,197,247,190,122,92,200,43,141,151,220,246,212,222,162,23,131,26,83,
+0,48,163,216,153,110,209,128,144,103,78,253,125,49,1,215,166,0,224,153,248,140,219,46,12,249,102,106,145,131,192,47,19,0,48,48,254,30,192,218,1,33,231,156,22,223,12,124,208,191,250,1,156,19,157,112,247,41,33,239,92,28,63,4,52,87,63,128,43,163,3,78,9,
+185,103,201,145,188,24,120,44,0,184,41,246,29,126,157,125,255,161,225,175,177,5,186,161,250,1,220,29,251,14,163,0,8,83,98,11,52,175,250,1,60,28,249,10,239,215,232,63,140,140,149,180,180,250,1,196,222,6,92,171,254,16,106,98,63,5,127,85,253,0,94,143,124,
+133,187,213,31,226,143,75,253,169,250,1,196,222,7,188,82,251,221,185,39,178,66,173,213,15,32,246,21,206,209,126,119,110,142,172,208,126,0,242,6,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,142,0,128,233,145,143,222,3,64,250,0,30,140,124,244,235,0,164,15,224,213,200,71,175,5,32,121,0,199,119,69,62,
+250,97,0,146,7,112,65,108,241,239,6,32,117,0,125,54,197,22,255,38,0,82,7,48,39,182,246,133,43,1,72,28,192,23,15,20,142,133,197,7,160,151,0,156,244,98,180,255,142,129,0,36,13,224,219,173,209,254,11,207,4,0,18,6,208,248,104,161,72,102,0,144,42,128,19,190,
+57,235,241,93,197,250,47,12,7,32,61,0,53,103,207,127,100,221,91,135,10,37,228,165,0,64,106,0,142,187,109,123,161,228,204,3,32,53,0,19,223,41,148,145,102,0,210,2,80,251,227,114,234,47,108,13,0,36,5,160,230,137,178,250,47,92,15,64,90,0,238,42,175,255,87,
+251,0,144,20,128,241,229,245,95,24,23,0,72,9,64,159,215,202,235,127,125,0,32,41,0,215,149,215,255,161,179,1,72,11,192,115,229,1,120,60,0,144,20,128,198,174,178,250,111,63,3,128,180,0,124,167,188,19,192,21,1,128,180,0,124,191,44,0,115,3,0,137,1,184,167,
+156,254,159,172,1,32,53,0,139,203,232,255,165,254,1,128,212,0,220,89,122,255,59,135,7,0,146,3,112,99,201,253,239,57,55,0,144,30,128,175,151,218,255,219,163,2,0,9,2,232,243,110,105,253,175,109,12,0,36,121,37,112,121,73,253,223,87,23,0,72,19,64,115,9,143,
+1,118,76,237,165,241,0,56,242,0,66,209,135,192,11,111,158,23,0,72,23,192,240,34,111,129,180,78,171,11,0,36,12,32,156,179,63,118,247,103,65,67,47,142,7,192,209,0,16,38,180,247,244,17,93,75,134,245,234,120,0,28,21,0,225,75,127,63,236,7,188,178,176,169,
+151,199,3,224,232,0,8,141,247,124,250,52,208,185,254,230,17,189,63,30,0,71,9,64,8,167,204,251,232,141,240,182,45,235,150,79,110,60,38,198,3,224,168,1,232,206,176,243,191,123,203,228,139,70,158,112,12,141,7,192,209,4,112,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,37,7,35,227,93,160,253,238,204,137,172,208,
+190,234,31,111,71,100,188,91,180,223,157,39,34,43,180,173,250,199,123,33,50,222,35,218,239,206,95,34,43,244,124,245,143,247,116,100,188,45,218,15,161,49,182,75,90,93,253,243,45,138,140,119,104,160,254,195,197,49,0,247,86,255,124,119,196,230,155,161,255,
+176,50,182,64,115,170,127,190,41,177,249,218,71,100,223,127,75,244,191,62,95,91,253,3,94,26,29,240,185,154,220,119,0,255,136,174,207,37,213,63,225,232,248,63,54,207,253,36,176,50,190,60,163,171,127,194,154,29,209,9,59,238,168,203,184,254,19,31,142,247,
+191,61,133,3,228,226,248,140,133,23,199,100,219,255,184,237,69,214,102,81,10,83,94,86,100,200,194,135,119,158,245,185,12,219,31,112,254,242,98,43,147,194,22,32,132,190,109,69,231,44,28,216,244,243,233,55,230,148,91,150,191,118,176,248,178,236,174,79,
+130,250,170,130,84,150,71,211,56,214,77,210,100,133,153,152,200,86,183,83,149,21,229,64,67,34,219,157,167,116,89,81,30,75,101,191,59,170,75,153,21,164,227,204,100,126,241,44,213,102,5,185,63,157,159,188,195,246,169,179,236,180,157,156,208,69,143,5,250,
+44,59,243,82,186,234,213,208,170,208,50,179,115,64,82,215,61,167,107,180,204,76,75,235,194,119,221,6,149,150,149,13,169,221,36,29,188,85,169,101,100,235,224,228,110,126,141,217,171,214,146,179,55,197,91,228,45,7,21,91,98,14,182,36,121,3,124,182,102,75,
+204,236,68,31,129,88,161,218,146,178,34,213,103,96,250,174,84,110,9,89,217,55,221,199,160,102,219,7,20,61,255,207,14,41,167,165,77,197,241,59,0,45,33,237,140,221,166,228,72,182,141,13,169,103,200,70,53,247,152,141,67,66,250,169,159,185,75,211,135,205,
+174,153,245,33,139,52,44,108,215,246,103,210,190,176,33,100,147,161,139,61,40,250,201,116,46,30,26,178,74,211,42,4,62,86,255,170,166,144,93,6,77,90,237,76,240,223,99,255,234,73,131,66,158,233,55,126,89,238,143,10,181,46,27,223,47,228,156,218,230,9,83,
+231,47,89,179,121,71,94,143,142,119,237,216,188,102,201,252,169,19,154,107,171,170,173,127,3,217,192,72,154,199,230,175,22,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
+
+const char* copy_png = (const char*) temp_binary_data_2;
+
+//================== flower_center.png ==================
+static const unsigned char temp_binary_data_3[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,223,9,12,14,31,51,16,110,155,
17,0,0,12,112,73,68,65,84,120,218,237,221,77,142,220,56,18,6,80,185,209,62,129,119,188,80,157,217,23,138,157,79,80,139,234,69,163,225,114,117,101,165,126,72,49,72,190,7,24,24,140,61,202,212,207,40,62,134,40,230,182,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -86,10 +140,10 @@ static const unsigned char temp_binary_data_2[] =
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,104,228,31,147,91,47,206,240,210,17,157,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-const char* flower_center_png = (const char*) temp_binary_data_2;
+const char* flower_center_png = (const char*) temp_binary_data_3;
//================== flower_petals.png ==================
-static const unsigned char temp_binary_data_3[] =
+static const unsigned char temp_binary_data_4[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,224,3,11,14,50,54,98,101,160,
17,0,0,32,0,73,68,65,84,120,218,237,189,61,139,36,91,180,37,182,118,113,25,198,120,204,205,246,158,241,160,163,153,135,24,239,102,123,18,188,161,163,97,92,81,121,145,37,16,84,148,39,75,93,23,198,239,236,31,32,170,26,253,128,202,178,198,236,44,70,150,
64,84,20,204,128,188,202,244,198,120,168,179,96,140,231,117,166,120,134,144,115,100,196,142,174,172,236,250,200,143,136,115,246,57,103,45,40,186,239,71,119,68,236,179,207,222,107,127,156,125,4,4,65,36,3,231,220,7,253,237,16,192,0,64,161,63,45,54,255,
@@ -402,61 +456,7 @@ static const unsigned char temp_binary_data_3[] =
145,32,72,0,8,130,232,134,12,148,250,171,149,204,192,10,192,20,205,144,35,58,125,130,32,1,32,8,162,103,66,48,68,115,138,160,253,241,149,33,184,5,48,107,127,120,126,159,32,72,0,8,130,176,65,10,6,74,8,6,0,10,253,105,81,224,249,185,3,247,0,22,107,255,188,
208,159,165,58,251,37,157,61,65,164,131,255,31,36,166,129,112,251,243,66,102,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-const char* flower_petals_png = (const char*) temp_binary_data_3;
-
-//================== copy.png ==================
-static const unsigned char temp_binary_data_4[] =
-{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,3,0,0,0,195,166,36,200,0,0,0,3,115,66,73,84,8,8,8,219,225,79,224,0,0,0,9,112,72,89,115,0,0,14,131,0,0,14,131,1,56,78,237,13,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,119,119,
-119,46,105,110,107,115,99,97,112,101,46,111,114,103,155,238,60,26,0,0,2,139,80,76,84,69,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,142,61,39,0,0,0,216,116,82,78,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,28,29,
-30,31,32,33,34,36,37,38,39,40,41,42,43,44,45,48,49,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,75,76,77,78,80,81,82,83,84,85,86,88,90,91,92,93,95,96,97,98,101,102,104,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,
-123,124,126,127,128,129,130,131,132,135,137,138,139,142,143,144,146,147,148,149,150,151,152,153,154,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,179,180,181,183,184,185,186,187,188,189,190,191,192,193,194,197,198,199,202,
-203,204,205,206,207,208,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,10,6,38,255,0,0,12,5,73,68,65,84,120,218,237,221,11,151,
-149,85,29,7,224,61,195,76,32,50,130,35,8,162,162,53,64,48,153,105,101,166,230,5,24,211,68,3,69,17,144,52,50,80,1,65,203,74,13,185,40,130,87,200,164,171,8,130,133,104,154,23,212,160,18,98,194,20,152,65,112,102,224,124,156,166,203,114,121,97,246,185,172,
-5,195,217,251,249,125,128,179,206,127,255,158,245,190,251,188,151,153,16,170,41,181,205,19,166,206,95,178,102,243,142,174,66,78,233,218,177,121,205,146,249,83,39,52,215,134,156,211,111,252,178,214,66,222,105,93,54,190,95,166,237,15,154,180,186,189,32,
-133,66,251,234,73,131,242,171,191,105,85,167,234,63,74,231,170,166,188,234,31,186,88,253,159,34,176,120,104,62,245,55,44,116,236,63,204,153,96,97,67,30,245,215,207,220,165,237,195,102,215,204,250,12,250,31,178,81,211,61,102,227,144,228,251,31,187,77,
-205,145,108,27,155,120,255,45,109,74,142,166,173,37,233,254,103,31,84,113,145,28,156,157,110,253,125,87,234,183,132,172,236,155,42,128,21,202,45,41,43,82,61,254,171,182,196,164,121,22,104,113,254,47,121,31,144,226,78,112,204,94,197,150,156,189,99,146,
-235,127,240,86,181,150,145,173,131,19,235,191,110,131,82,203,202,134,186,180,0,76,83,105,153,153,158,84,255,3,118,106,180,204,180,38,117,111,112,158,66,203,206,130,132,250,63,217,29,128,242,179,111,88,58,0,238,87,103,5,89,154,76,255,103,118,104,179,130,
-116,141,74,5,192,99,202,172,40,79,37,210,127,195,135,186,172,40,157,39,166,1,96,162,42,43,204,164,52,0,60,170,201,10,179,42,137,254,235,119,23,159,244,95,191,187,107,226,229,57,101,226,93,191,125,183,248,178,180,37,241,104,200,37,197,198,60,112,251,25,
-33,199,156,126,235,254,98,75,115,89,10,115,46,42,50,228,166,209,33,215,52,253,161,200,218,44,78,96,200,154,237,209,17,59,110,235,19,242,77,237,172,248,47,164,29,53,213,63,227,232,184,241,219,67,222,153,21,95,158,4,142,142,241,45,192,166,62,153,3,168,
-141,159,5,46,173,254,9,175,141,205,183,127,84,200,61,77,209,157,224,148,234,31,112,78,108,190,31,6,185,53,182,64,119,84,255,124,247,198,230,27,161,255,112,122,108,129,22,85,255,124,171,35,227,189,167,254,238,196,222,150,127,186,250,199,123,62,50,222,
-90,237,119,231,55,145,21,122,161,250,199,139,189,14,254,35,237,119,103,65,236,66,64,245,143,183,39,50,222,53,218,239,206,85,145,21,58,88,253,227,109,141,140,247,13,237,119,231,242,216,46,48,237,61,192,231,181,159,62,128,135,34,151,129,250,105,63,125,
-0,87,37,253,27,7,128,162,137,60,17,120,157,242,51,0,16,150,246,52,219,206,227,149,159,3,128,97,251,178,120,253,17,128,30,211,195,221,142,151,235,117,159,7,128,240,196,225,38,251,231,105,170,207,5,64,255,195,252,117,136,247,191,166,249,108,0,132,250,207,
-108,4,183,52,41,62,35,0,33,92,253,137,123,66,31,254,116,160,222,243,2,16,250,206,220,116,232,255,51,109,95,228,57,144,252,0,252,231,247,224,53,63,248,201,3,115,111,56,171,70,231,121,2,16,0,4,0,1,64,0,16,0,4,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,44,15,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,28,193,156,48,242,162,201,179,102,231,148,89,147,47,28,217,0,64,8,141,147,151,175,219,210,150,233,191,112,111,123,227,217,7,175,25,148,49,128,17,55,175,239,44,228,158,
-142,103,102,12,207,18,64,211,194,87,10,242,191,188,56,119,68,110,0,134,45,233,210,251,199,255,190,229,207,6,231,4,160,97,65,187,206,63,149,221,115,142,203,5,64,221,180,86,125,31,38,239,92,95,155,5,128,243,222,212,117,15,249,243,151,51,0,48,181,67,209,
-61,230,131,171,83,7,80,119,159,150,163,89,88,147,52,128,198,181,42,46,146,95,28,159,48,128,81,111,43,184,104,94,62,53,89,0,231,238,81,111,9,105,29,157,40,128,225,59,149,91,82,222,62,41,73,0,253,95,82,109,137,89,87,151,32,128,154,39,21,91,114,30,72,16,
-192,92,181,150,145,233,201,1,184,226,144,86,203,72,231,183,18,3,112,134,187,63,229,229,189,161,105,1,120,92,165,189,177,13,56,102,0,156,237,4,80,246,73,224,11,41,1,88,175,208,178,179,58,33,0,227,212,89,65,190,146,12,128,62,175,106,179,130,108,72,6,192,
-245,202,172,40,227,82,1,176,85,151,21,229,143,137,0,104,86,101,101,57,116,74,26,0,230,169,178,183,46,8,31,27,0,74,186,11,216,245,214,27,57,229,111,37,1,120,54,9,0,195,139,206,185,125,197,247,190,122,92,200,43,141,151,220,246,212,222,162,23,131,26,83,
-0,48,163,216,153,110,209,128,144,103,78,253,125,49,1,215,166,0,224,153,248,140,219,46,12,249,102,106,145,131,192,47,19,0,48,48,254,30,192,218,1,33,231,156,22,223,12,124,208,191,250,1,156,19,157,112,247,41,33,239,92,28,63,4,52,87,63,128,43,163,3,78,9,
-185,103,201,145,188,24,120,44,0,184,41,246,29,126,157,125,255,161,225,175,177,5,186,161,250,1,220,29,251,14,163,0,8,83,98,11,52,175,250,1,60,28,249,10,239,215,232,63,140,140,149,180,180,250,1,196,222,6,92,171,254,16,106,98,63,5,127,85,253,0,94,143,124,
-133,187,213,31,226,143,75,253,169,250,1,196,222,7,188,82,251,221,185,39,178,66,173,213,15,32,246,21,206,209,126,119,110,142,172,208,126,0,242,6,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,142,0,128,233,145,143,222,3,64,250,0,30,140,124,244,235,0,164,15,224,213,200,71,175,5,32,121,0,199,119,69,62,
-250,97,0,146,7,112,65,108,241,239,6,32,117,0,125,54,197,22,255,38,0,82,7,48,39,182,246,133,43,1,72,28,192,23,15,20,142,133,197,7,160,151,0,156,244,98,180,255,142,129,0,36,13,224,219,173,209,254,11,207,4,0,18,6,208,248,104,161,72,102,0,144,42,128,19,190,
-57,235,241,93,197,250,47,12,7,32,61,0,53,103,207,127,100,221,91,135,10,37,228,165,0,64,106,0,142,187,109,123,161,228,204,3,32,53,0,19,223,41,148,145,102,0,210,2,80,251,227,114,234,47,108,13,0,36,5,160,230,137,178,250,47,92,15,64,90,0,238,42,175,255,87,
-251,0,144,20,128,241,229,245,95,24,23,0,72,9,64,159,215,202,235,127,125,0,32,41,0,215,149,215,255,161,179,1,72,11,192,115,229,1,120,60,0,144,20,128,198,174,178,250,111,63,3,128,180,0,124,167,188,19,192,21,1,128,180,0,124,191,44,0,115,3,0,137,1,184,167,
-156,254,159,172,1,32,53,0,139,203,232,255,165,254,1,128,212,0,220,89,122,255,59,135,7,0,146,3,112,99,201,253,239,57,55,0,144,30,128,175,151,218,255,219,163,2,0,9,2,232,243,110,105,253,175,109,12,0,36,121,37,112,121,73,253,223,87,23,0,72,19,64,115,9,143,
-1,118,76,237,165,241,0,56,242,0,66,209,135,192,11,111,158,23,0,72,23,192,240,34,111,129,180,78,171,11,0,36,12,32,156,179,63,118,247,103,65,67,47,142,7,192,209,0,16,38,180,247,244,17,93,75,134,245,234,120,0,28,21,0,225,75,127,63,236,7,188,178,176,169,
-151,199,3,224,232,0,8,141,247,124,250,52,208,185,254,230,17,189,63,30,0,71,9,64,8,167,204,251,232,141,240,182,45,235,150,79,110,60,38,198,3,224,168,1,232,206,176,243,191,123,203,228,139,70,158,112,12,141,7,192,209,4,112,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,37,7,35,227,93,160,253,238,204,137,172,208,
-190,234,31,111,71,100,188,91,180,223,157,39,34,43,180,173,250,199,123,33,50,222,35,218,239,206,95,34,43,244,124,245,143,247,116,100,188,45,218,15,161,49,182,75,90,93,253,243,45,138,140,119,104,160,254,195,197,49,0,247,86,255,124,119,196,230,155,161,255,
-176,50,182,64,115,170,127,190,41,177,249,218,71,100,223,127,75,244,191,62,95,91,253,3,94,26,29,240,185,154,220,119,0,255,136,174,207,37,213,63,225,232,248,63,54,207,253,36,176,50,190,60,163,171,127,194,154,29,209,9,59,238,168,203,184,254,19,31,142,247,
-191,61,133,3,228,226,248,140,133,23,199,100,219,255,184,237,69,214,102,81,10,83,94,86,100,200,194,135,119,158,245,185,12,219,31,112,254,242,98,43,147,194,22,32,132,190,109,69,231,44,28,216,244,243,233,55,230,148,91,150,191,118,176,248,178,236,174,79,
-130,250,170,130,84,150,71,211,56,214,77,210,100,133,153,152,200,86,183,83,149,21,229,64,67,34,219,157,167,116,89,81,30,75,101,191,59,170,75,153,21,164,227,204,100,126,241,44,213,102,5,185,63,157,159,188,195,246,169,179,236,180,157,156,208,69,143,5,250,
-44,59,243,82,186,234,213,208,170,208,50,179,115,64,82,215,61,167,107,180,204,76,75,235,194,119,221,6,149,150,149,13,169,221,36,29,188,85,169,101,100,235,224,228,110,126,141,217,171,214,146,179,55,197,91,228,45,7,21,91,98,14,182,36,121,3,124,182,102,75,
-204,236,68,31,129,88,161,218,146,178,34,213,103,96,250,174,84,110,9,89,217,55,221,199,160,102,219,7,20,61,255,207,14,41,167,165,77,197,241,59,0,45,33,237,140,221,166,228,72,182,141,13,169,103,200,70,53,247,152,141,67,66,250,169,159,185,75,211,135,205,
-174,153,245,33,139,52,44,108,215,246,103,210,190,176,33,100,147,161,139,61,40,250,201,116,46,30,26,178,74,211,42,4,62,86,255,170,166,144,93,6,77,90,237,76,240,223,99,255,234,73,131,66,158,233,55,126,89,238,143,10,181,46,27,223,47,228,156,218,230,9,83,
-231,47,89,179,121,71,94,143,142,119,237,216,188,102,201,252,169,19,154,107,171,170,173,127,3,217,192,72,154,199,230,175,22,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-
-const char* copy_png = (const char*) temp_binary_data_4;
+const char* flower_petals_png = (const char*) temp_binary_data_4;
//================== garbage.png ==================
static const unsigned char temp_binary_data_5[] =
@@ -4841,8 +4841,7 @@ static const unsigned char temp_binary_data_8[] =
const char* DejaVuSansMono_ttf = (const char*) temp_binary_data_8;
-const char* getNamedResource (const char*, int&) throw();
-const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw()
+const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) noexcept
{
unsigned int hash = 0;
if (resourceNameUTF8 != 0)
@@ -4853,9 +4852,9 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
{
case 0x9fa71e2e: numBytes = 479; return CreditsAU;
case 0x553cf67d: numBytes = 537; return CreditsVST;
+ case 0xe1dcce5f: numBytes = 4098; return copy_png;
case 0x4e66dfa3: numBytes = 3299; return flower_center_png;
case 0x44524977: numBytes = 22287; return flower_petals_png;
- case 0xe1dcce5f: numBytes = 4098; return copy_png;
case 0x0340271f: numBytes = 5113; return garbage_png;
case 0xb5baee83: numBytes = 8380; return reload_png;
case 0x1fded40d: numBytes = 12539; return settings_png;
@@ -4864,20 +4863,44 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
}
numBytes = 0;
- return 0;
+ return nullptr;
}
const char* namedResourceList[] =
{
"CreditsAU",
"CreditsVST",
+ "copy_png",
"flower_center_png",
"flower_petals_png",
- "copy_png",
"garbage_png",
"reload_png",
"settings_png",
"DejaVuSansMono_ttf"
};
+const char* originalFilenames[] =
+{
+ "CreditsAU",
+ "CreditsVST",
+ "copy.png",
+ "flower_center.png",
+ "flower_petals.png",
+ "garbage.png",
+ "reload.png",
+ "settings.png",
+ "DejaVuSansMono.ttf"
+};
+
+const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept
+{
+ for (unsigned int i = 0; i < (sizeof (namedResourceList) / sizeof (namedResourceList[0])); ++i)
+ {
+ if (namedResourceList[i] == resourceNameUTF8)
+ return originalFilenames[i];
+ }
+
+ return nullptr;
+}
+
}
diff --git a/Effect/JuceLibraryCode/BinaryData.h b/Effect/JuceLibraryCode/BinaryData.h
index 4839c4ec..ddcdaa77 100644
--- a/Effect/JuceLibraryCode/BinaryData.h
+++ b/Effect/JuceLibraryCode/BinaryData.h
@@ -14,15 +14,15 @@ namespace BinaryData
extern const char* CreditsVST;
const int CreditsVSTSize = 537;
+ extern const char* copy_png;
+ const int copy_pngSize = 4098;
+
extern const char* flower_center_png;
const int flower_center_pngSize = 3299;
extern const char* flower_petals_png;
const int flower_petals_pngSize = 22287;
- extern const char* copy_png;
- const int copy_pngSize = 4098;
-
extern const char* garbage_png;
const int garbage_pngSize = 5113;
@@ -35,13 +35,20 @@ namespace BinaryData
extern const char* DejaVuSansMono_ttf;
const int DejaVuSansMono_ttfSize = 340712;
+ // Number of elements in the namedResourceList and originalFileNames arrays.
+ const int namedResourceListSize = 9;
+
// Points to the start of a list of resource names.
extern const char* namedResourceList[];
- // Number of elements in the namedResourceList array.
- const int namedResourceListSize = 9;
+ // Points to the start of a list of resource filenames.
+ extern const char* originalFilenames[];
// If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found).
- const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();
+ const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) noexcept;
+
+ // If you provide the name of one of the binary resource variables above, this function will
+ // return the corresponding original, non-mangled filename (or a null pointer if the name isn't found).
+ const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept;
}
diff --git a/Effect/JuceLibraryCode/JuceHeader.h b/Effect/JuceLibraryCode/JuceHeader.h
index f2c7fc5f..ba6b0aed 100644
--- a/Effect/JuceLibraryCode/JuceHeader.h
+++ b/Effect/JuceLibraryCode/JuceHeader.h
@@ -39,7 +39,7 @@
namespace ProjectInfo
{
const char* const projectName = "CamomileFx";
- const char* const versionString = "1.0.4";
- const int versionNumber = 0x10004;
+ const char* const versionString = "1.0.5";
+ const int versionNumber = 0x10005;
}
#endif
diff --git a/Instrument/Builds/LinuxMakefile/Makefile b/Instrument/Builds/LinuxMakefile/Makefile
index 27b7765b..dbac38e4 100644
--- a/Instrument/Builds/LinuxMakefile/Makefile
+++ b/Instrument/Builds/LinuxMakefile/Makefile
@@ -35,7 +35,7 @@ ifeq ($(CONFIG),Debug)
TARGET_ARCH := -march=native
endif
- JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DPD_INTERNAL=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.4 -DJUCE_APP_VERSION_HEX=0x10004 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DPD_INTERNAL=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.5 -DJUCE_APP_VERSION_HEX=0x10005 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
JUCE_CPPFLAGS_VST := -DJucePlugin_Build_VST=1 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0
JUCE_CFLAGS_VST := -fPIC -fvisibility=hidden
@@ -62,7 +62,7 @@ ifeq ($(CONFIG),Release)
TARGET_ARCH := -march=native
endif
- JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DPD_INTERNAL=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.4 -DJUCE_APP_VERSION_HEX=0x10004 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DPD_INTERNAL=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.5 -DJUCE_APP_VERSION_HEX=0x10005 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Juce/modules -I../../../Dependencies/LibPd/pure-data/src -I../../../Dependencies/LibPd/libpd_wrapper -I../../../Dependencies/LibPd/libpd_wrapper/util -I../../../Dependencies/LibPd/cpp $(CPPFLAGS)
JUCE_CPPFLAGS_VST := -DJucePlugin_Build_VST=1 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0
JUCE_CFLAGS_VST := -fPIC -fvisibility=hidden
@@ -86,6 +86,8 @@ OBJECTS_VST := \
OBJECTS_SHARED_CODE := \
$(JUCE_OBJDIR)/PluginProcessor_319d19ef.o \
+ $(JUCE_OBJDIR)/PluginProcessorBuses_ff06f3c9.o \
+ $(JUCE_OBJDIR)/PluginProcessorReceive_8862f77e.o \
$(JUCE_OBJDIR)/PluginEditor_ef07f2fa.o \
$(JUCE_OBJDIR)/PluginEditorComponents_6d39f4f0.o \
$(JUCE_OBJDIR)/PluginEditorConsole_207d0487.o \
@@ -147,6 +149,16 @@ $(JUCE_OBJDIR)/PluginProcessor_319d19ef.o: ../../../Source/PluginProcessor.cpp
@echo "Compiling PluginProcessor.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
+$(JUCE_OBJDIR)/PluginProcessorBuses_ff06f3c9.o: ../../../Source/PluginProcessorBuses.cpp
+ -$(V_AT)mkdir -p $(JUCE_OBJDIR)
+ @echo "Compiling PluginProcessorBuses.cpp"
+ $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
+
+$(JUCE_OBJDIR)/PluginProcessorReceive_8862f77e.o: ../../../Source/PluginProcessorReceive.cpp
+ -$(V_AT)mkdir -p $(JUCE_OBJDIR)
+ @echo "Compiling PluginProcessorReceive.cpp"
+ $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
+
$(JUCE_OBJDIR)/PluginEditor_ef07f2fa.o: ../../../Source/PluginEditor.cpp
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
@echo "Compiling PluginEditor.cpp"
diff --git a/Instrument/Builds/MacOSX/Camomile.xcodeproj/project.pbxproj b/Instrument/Builds/MacOSX/Camomile.xcodeproj/project.pbxproj
index 7aca1693..fbabaae6 100644
--- a/Instrument/Builds/MacOSX/Camomile.xcodeproj/project.pbxproj
+++ b/Instrument/Builds/MacOSX/Camomile.xcodeproj/project.pbxproj
@@ -44,35 +44,35 @@
6E9F820E4E00076026F8B29F /* PluginParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4180B270C578F80651F4E657 /* PluginParameter.cpp */; };
71CE59DFC9B492815819B62B /* PdArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BCAF008D6BEB4E12A741F90 /* PdArray.cpp */; };
78905FC75640977BEA9CB160 /* include_juce_audio_plugin_client_VST2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53B14A3227113D23D86B6F4F /* include_juce_audio_plugin_client_VST2.cpp */; };
- 7BBE10E6FDD1CD23F494C0C2 /* include_juce_audio_plugin_client_AU.r in Rez */ = {isa = PBXBuildFile; fileRef = 013C9D8BD6D358E549C03D94 /* include_juce_audio_plugin_client_AU.r */; };
+ 7B7F6F55C2E21F9074EFABC2 /* PluginProcessorBuses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C36AC6E988343B87302C5E5 /* PluginProcessorBuses.cpp */; };
7E4BED42B5591BFD32C645C6 /* x_libpd_extra_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A712B8BE5C0838F28EFDB23 /* x_libpd_extra_utils.c */; };
7F815B8445658BC9603C94F4 /* PdPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B0AAC6036B2298E672A6025F /* PdPatch.cpp */; };
80BF521EFCF22E6936AA95F2 /* PluginProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8316FA8AA73A7793367AE385 /* PluginProcessor.cpp */; };
824C0432B9D51334CD0BFFBC /* PluginLookAndFeel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDB495D39563B154CD43B2B6 /* PluginLookAndFeel.cpp */; };
8390F31E7B7096D3DA0944D1 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
83F519C42E92991125F7540E /* PluginEditorConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD5189476C601579540C3631 /* PluginEditorConsole.cpp */; };
- 8F706FD8206E996E00ECE958 /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
- 8F706FD9206E996E00ECE958 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
- 8F706FDA206E996E00ECE958 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
- 8F706FDB206E996E00ECE958 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
- 8F706FDC206E996E00ECE958 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
- 8F706FDD206E996E00ECE958 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
- 8F706FDE206E996E00ECE958 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
- 8F706FDF206E996E00ECE958 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
- 8F706FE0206E996E00ECE958 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
- 8F706FE1206E996E00ECE958 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
- 8F706FE2206E996E00ECE958 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
- 8F706FE3206E996E00ECE958 /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
- 8F706FE4206E996E00ECE958 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
- 8F706FE5206E996E00ECE958 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
- 8F706FE6206E996E00ECE958 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
- 8F706FE7206E996E00ECE958 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
- 8F706FE8206E996E00ECE958 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
- 8F706FE9206E996E00ECE958 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
- 8F706FEA206E996E00ECE958 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
- 8F706FEB206E996E00ECE958 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
- 8F706FEC206E996E00ECE958 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
- 8F706FED206E996E00ECE958 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
+ 8FDA44A82085101C003363AB /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
+ 8FDA44A92085101C003363AB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
+ 8FDA44AA2085101C003363AB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
+ 8FDA44AB2085101C003363AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
+ 8FDA44AC2085101C003363AB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
+ 8FDA44AD2085101C003363AB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
+ 8FDA44AE2085101C003363AB /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
+ 8FDA44AF2085101C003363AB /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
+ 8FDA44B02085101C003363AB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
+ 8FDA44B12085101C003363AB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
+ 8FDA44B22085101C003363AB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
+ 8FDA44B32085101C003363AB /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8126A2FEEEADA13BE0FBBEDC /* RecentFilesMenuTemplate.nib */; };
+ 8FDA44B42085101C003363AB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1E3A85F79B93B336420138 /* Accelerate.framework */; };
+ 8FDA44B52085101C003363AB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF8F36AEFDA9E963BDBA6C1C /* AudioToolbox.framework */; };
+ 8FDA44B62085101C003363AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CEA086029F58AA542CBA7F /* Carbon.framework */; };
+ 8FDA44B72085101C003363AB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C22689D9A7644931A85906FC /* Cocoa.framework */; };
+ 8FDA44B82085101C003363AB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
+ 8FDA44B92085101C003363AB /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF6201286A446C72F198F49 /* CoreMIDI.framework */; };
+ 8FDA44BA2085101C003363AB /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C463ABD44177594470FFE47 /* DiscRecording.framework */; };
+ 8FDA44BB2085101C003363AB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 045F064420B996DA482F0524 /* IOKit.framework */; };
+ 8FDA44BC2085101C003363AB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACBF9F7DFC62377D880D402F /* QuartzCore.framework */; };
+ 8FDA44BD2085101C003363AB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBD83515A888D164A72466A /* WebKit.framework */; };
9ED45AEC443ADEB8BE4CBA5A /* PluginEditorInteraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 584F0645E5F980B129306159 /* PluginEditorInteraction.cpp */; };
A2DE2F4FD68866479695F432 /* PluginEnvironment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5639CA5B96F7FF71250CB01 /* PluginEnvironment.cpp */; };
A4A537DAE5811714A93FA77E /* PdGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36F47BEB55DEDA79DFA192CB /* PdGui.cpp */; };
@@ -95,31 +95,32 @@
F602C1CD22553264FCB0DB22 /* include_juce_audio_processors.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECA218C8F959D75DB14BDA70 /* include_juce_audio_processors.mm */; };
F7AA88D706F73F4C397B30B1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE27C1948ACEC6272612D72E /* CoreAudio.framework */; };
F9EB9D074B63BC4B1A5FE2B7 /* include_juce_audio_plugin_client_AU_2.mm in Sources */ = {isa = PBXBuildFile; fileRef = C954F9431CE6C4895C5A23FF /* include_juce_audio_plugin_client_AU_2.mm */; };
+ FA6CB1714128D903B87A9C89 /* PluginProcessorReceive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94F406BCB710D5F670B567BE /* PluginProcessorReceive.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- 8F706FEE206E996E00ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44BE2085101C003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
- remoteGlobalIDString = DDC710B892FDE37A0F19292D;
- remoteInfo = "Camomile - Shared Code";
+ remoteGlobalIDString = 783348B185006D1B6D1CF889;
+ remoteInfo = "Camomile - VST";
};
- 8F706FEF206E996E00ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44BF2085101C003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
- remoteGlobalIDString = 783348B185006D1B6D1CF889;
- remoteInfo = "Camomile - VST";
+ remoteGlobalIDString = DDC710B892FDE37A0F19292D;
+ remoteInfo = "Camomile - Shared Code";
};
- 8F706FF0206E996E00ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44C02085101C003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 074FFE22626A916E5D070022;
remoteInfo = "Camomile - VST3";
};
- 8F706FF1206E996E00ECE958 /* PBXContainerItemProxy */ = {
+ 8FDA44C12085101C003363AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15ACA8DC04997A4E478AA331 /* Project object */;
proxyType = 1;
@@ -129,7 +130,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
- 013C9D8BD6D358E549C03D94 /* include_juce_audio_plugin_client_AU.r */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; name = include_juce_audio_plugin_client_AU.r; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU.r; sourceTree = SOURCE_ROOT; };
+ 013C9D8BD6D358E549C03D94 /* include_juce_audio_plugin_client_AU.r */ = {isa = PBXFileReference; lastKnownFileType = file.r; name = include_juce_audio_plugin_client_AU.r; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU.r; sourceTree = SOURCE_ROOT; };
0142193359A9D97378D55458 /* include_juce_audio_plugin_client_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_plugin_client_utils.cpp; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_utils.cpp; sourceTree = SOURCE_ROOT; };
03C65E32457C2DF8DCEFECC6 /* DejaVuSansMono.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = DejaVuSansMono.ttf; path = ../../../Ressources/Polices/DejaVuSansMono.ttf; sourceTree = SOURCE_ROOT; };
040299E7BDC34386103FC2DC /* PdObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PdObject.cpp; path = ../../../Source/Pd/PdObject.cpp; sourceTree = SOURCE_ROOT; };
@@ -164,6 +165,7 @@
584F0645E5F980B129306159 /* PluginEditorInteraction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginEditorInteraction.cpp; path = ../../../Source/PluginEditorInteraction.cpp; sourceTree = SOURCE_ROOT; };
5ACCD6343F95DECDF7C87622 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
5B62A53E3DAF1438808D719A /* copy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = copy.png; path = ../../../Ressources/Images/copy.png; sourceTree = SOURCE_ROOT; };
+ 5C36AC6E988343B87302C5E5 /* PluginProcessorBuses.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessorBuses.cpp; path = ../../../Source/PluginProcessorBuses.cpp; sourceTree = SOURCE_ROOT; };
5D02B31CECB54B43601874CC /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_events; path = ../../../Juce/modules/juce_events; sourceTree = SOURCE_ROOT; };
5D7ECB5D028435D6C0D2B563 /* include_juce_audio_plugin_client_AU_1.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_plugin_client_AU_1.mm; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm; sourceTree = SOURCE_ROOT; };
62AE406B0AB1237903C5C14B /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_audio_processors; path = ../../../Juce/modules/juce_audio_processors; sourceTree = SOURCE_ROOT; };
@@ -190,6 +192,7 @@
9186017086D0F372BA064B37 /* juce_data_structures */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_data_structures; path = ../../../Juce/modules/juce_data_structures; sourceTree = SOURCE_ROOT; };
9361164F8C7545AF133B200A /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
94796974590C40EEA252FE11 /* garbage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = garbage.png; path = ../../../Ressources/Images/garbage.png; sourceTree = SOURCE_ROOT; };
+ 94F406BCB710D5F670B567BE /* PluginProcessorReceive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessorReceive.cpp; path = ../../../Source/PluginProcessorReceive.cpp; sourceTree = SOURCE_ROOT; };
95B90FA25F5E97F158275591 /* PluginEditorObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginEditorObject.cpp; path = ../../../Source/PluginEditorObject.cpp; sourceTree = SOURCE_ROOT; };
966FC7F9824B81033BD2BEA6 /* juce_gui_extra */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_gui_extra; path = ../../../Juce/modules/juce_gui_extra; sourceTree = SOURCE_ROOT; };
9AE91F9D1604D8DD53364454 /* PluginEditorComponents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginEditorComponents.h; path = ../../../Source/PluginEditorComponents.h; sourceTree = SOURCE_ROOT; };
@@ -254,18 +257,18 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FE4206E996E00ECE958 /* Accelerate.framework in Frameworks */,
- 8F706FE5206E996E00ECE958 /* AudioToolbox.framework in Frameworks */,
+ 8FDA44B42085101C003363AB /* Accelerate.framework in Frameworks */,
+ 8FDA44B52085101C003363AB /* AudioToolbox.framework in Frameworks */,
F0E616AAADE2C8DFABCA8F14 /* AudioUnit.framework in Frameworks */,
- 8F706FE6206E996E00ECE958 /* Carbon.framework in Frameworks */,
- 8F706FE7206E996E00ECE958 /* Cocoa.framework in Frameworks */,
- 8F706FE8206E996E00ECE958 /* CoreAudio.framework in Frameworks */,
+ 8FDA44B62085101C003363AB /* Carbon.framework in Frameworks */,
+ 8FDA44B72085101C003363AB /* Cocoa.framework in Frameworks */,
+ 8FDA44B82085101C003363AB /* CoreAudio.framework in Frameworks */,
BABB947ED89952F98B386B72 /* CoreAudioKit.framework in Frameworks */,
- 8F706FE9206E996E00ECE958 /* CoreMIDI.framework in Frameworks */,
- 8F706FEA206E996E00ECE958 /* DiscRecording.framework in Frameworks */,
- 8F706FEB206E996E00ECE958 /* IOKit.framework in Frameworks */,
- 8F706FEC206E996E00ECE958 /* QuartzCore.framework in Frameworks */,
- 8F706FED206E996E00ECE958 /* WebKit.framework in Frameworks */,
+ 8FDA44B92085101C003363AB /* CoreMIDI.framework in Frameworks */,
+ 8FDA44BA2085101C003363AB /* DiscRecording.framework in Frameworks */,
+ 8FDA44BB2085101C003363AB /* IOKit.framework in Frameworks */,
+ 8FDA44BC2085101C003363AB /* QuartzCore.framework in Frameworks */,
+ 8FDA44BD2085101C003363AB /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -273,29 +276,33 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FD9206E996E00ECE958 /* Accelerate.framework in Frameworks */,
- 8F706FDA206E996E00ECE958 /* AudioToolbox.framework in Frameworks */,
- 8F706FDB206E996E00ECE958 /* Carbon.framework in Frameworks */,
- 8F706FDC206E996E00ECE958 /* Cocoa.framework in Frameworks */,
- 8F706FDD206E996E00ECE958 /* CoreAudio.framework in Frameworks */,
- 8F706FDE206E996E00ECE958 /* CoreMIDI.framework in Frameworks */,
- 8F706FDF206E996E00ECE958 /* DiscRecording.framework in Frameworks */,
- 8F706FE0206E996E00ECE958 /* IOKit.framework in Frameworks */,
- 8F706FE1206E996E00ECE958 /* QuartzCore.framework in Frameworks */,
- 8F706FE2206E996E00ECE958 /* WebKit.framework in Frameworks */,
+ 8FDA44A92085101C003363AB /* Accelerate.framework in Frameworks */,
+ 8FDA44AA2085101C003363AB /* AudioToolbox.framework in Frameworks */,
+ 8FDA44AB2085101C003363AB /* Carbon.framework in Frameworks */,
+ 8FDA44AC2085101C003363AB /* Cocoa.framework in Frameworks */,
+ 8FDA44AD2085101C003363AB /* CoreAudio.framework in Frameworks */,
+ 8FDA44AE2085101C003363AB /* CoreMIDI.framework in Frameworks */,
+ 8FDA44AF2085101C003363AB /* DiscRecording.framework in Frameworks */,
+ 8FDA44B02085101C003363AB /* IOKit.framework in Frameworks */,
+ 8FDA44B12085101C003363AB /* QuartzCore.framework in Frameworks */,
+ 8FDA44B22085101C003363AB /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 09B6F5A65F1ED9D628312F07 /* Credits */ = {
+ 0C7526775A915AC8544518E9 /* Images */ = {
isa = PBXGroup;
children = (
- 7C40B2D7FB1D45BFD75DD0CE /* CreditsAU */,
- 7F64050048E006DE82109198 /* CreditsVST */,
+ 5B62A53E3DAF1438808D719A /* copy.png */,
+ 3E954945588A4344B03456E6 /* flower_center.png */,
+ 47A9152911E901D11E317E8D /* flower_petals.png */,
+ 94796974590C40EEA252FE11 /* garbage.png */,
+ E52D665A06D80A15B611BAAA /* reload.png */,
+ D092AE31C378719147EA8339 /* settings.png */,
);
- name = Credits;
+ name = Images;
sourceTree = "";
};
0CAD382A752A9E300C30E94E /* Pd */ = {
@@ -334,18 +341,12 @@
name = Source;
sourceTree = "";
};
- 4C431F0B0996381F2241E2A8 /* Polices */ = {
- isa = PBXGroup;
- children = (
- 03C65E32457C2DF8DCEFECC6 /* DejaVuSansMono.ttf */,
- );
- name = Polices;
- sourceTree = "";
- };
500098BCBE6DFB8790ADB5E7 /* Source */ = {
isa = PBXGroup;
children = (
8316FA8AA73A7793367AE385 /* PluginProcessor.cpp */,
+ 5C36AC6E988343B87302C5E5 /* PluginProcessorBuses.cpp */,
+ 94F406BCB710D5F670B567BE /* PluginProcessorReceive.cpp */,
12D18A515768FDD5F06713B8 /* PluginProcessor.h */,
BBB154BFC6C6C7D97D835E2B /* PluginConsole.h */,
7B3F90B6162FAD72942CD046 /* PluginEditor.cpp */,
@@ -368,27 +369,35 @@
CFB9F7730A09B92181ECB2E9 /* PluginLookAndFeel.hpp */,
72486087D9E9A91C30308A0D /* PluginConfig.h */,
0CAD382A752A9E300C30E94E /* Pd */,
+ 57E948FA43B36A26FAEEA40F /* Ressources */,
);
name = Source;
sourceTree = "";
};
+ 57E948FA43B36A26FAEEA40F /* Ressources */ = {
+ isa = PBXGroup;
+ children = (
+ 9B3F05DE1D6C1B8987CF3172 /* Credits */,
+ 0C7526775A915AC8544518E9 /* Images */,
+ 8FE98D53B6C1458F7F40114C /* Polices */,
+ );
+ name = Ressources;
+ sourceTree = "";
+ };
6A2E49F82A1C2A08D38A666E /* Camomile */ = {
isa = PBXGroup;
children = (
500098BCBE6DFB8790ADB5E7 /* Source */,
- 8CCC4A823EBBBC964569EE98 /* Ressources */,
);
name = Camomile;
sourceTree = "";
};
- 8CCC4A823EBBBC964569EE98 /* Ressources */ = {
+ 8FE98D53B6C1458F7F40114C /* Polices */ = {
isa = PBXGroup;
children = (
- 09B6F5A65F1ED9D628312F07 /* Credits */,
- F4EF883EF36207C50C5CEE98 /* Images */,
- 4C431F0B0996381F2241E2A8 /* Polices */,
+ 03C65E32457C2DF8DCEFECC6 /* DejaVuSansMono.ttf */,
);
- name = Ressources;
+ name = Polices;
sourceTree = "";
};
99493604C4BE8FFEE01173C3 /* Frameworks */ = {
@@ -410,6 +419,15 @@
name = Frameworks;
sourceTree = "";
};
+ 9B3F05DE1D6C1B8987CF3172 /* Credits */ = {
+ isa = PBXGroup;
+ children = (
+ 7C40B2D7FB1D45BFD75DD0CE /* CreditsAU */,
+ 7F64050048E006DE82109198 /* CreditsVST */,
+ );
+ name = Credits;
+ sourceTree = "";
+ };
A7A85AE8734DA0FAC453D456 /* JUCE Modules */ = {
isa = PBXGroup;
children = (
@@ -480,19 +498,6 @@
name = Resources;
sourceTree = "";
};
- F4EF883EF36207C50C5CEE98 /* Images */ = {
- isa = PBXGroup;
- children = (
- 3E954945588A4344B03456E6 /* flower_center.png */,
- 47A9152911E901D11E317E8D /* flower_petals.png */,
- 5B62A53E3DAF1438808D719A /* copy.png */,
- 94796974590C40EEA252FE11 /* garbage.png */,
- E52D665A06D80A15B611BAAA /* reload.png */,
- D092AE31C378719147EA8339 /* settings.png */,
- );
- name = Images;
- sourceTree = "";
- };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -697,7 +702,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FE3206E996E00ECE958 /* RecentFilesMenuTemplate.nib in Resources */,
+ 8FDA44B32085101C003363AB /* RecentFilesMenuTemplate.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -713,7 +718,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F706FD8206E996E00ECE958 /* RecentFilesMenuTemplate.nib in Resources */,
+ 8FDA44A82085101C003363AB /* RecentFilesMenuTemplate.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -724,7 +729,6 @@
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
files = (
- 7BBE10E6FDD1CD23F494C0C2 /* include_juce_audio_plugin_client_AU.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -761,6 +765,8 @@
buildActionMask = 2147483647;
files = (
80BF521EFCF22E6936AA95F2 /* PluginProcessor.cpp in Sources */,
+ 7B7F6F55C2E21F9074EFABC2 /* PluginProcessorBuses.cpp in Sources */,
+ FA6CB1714128D903B87A9C89 /* PluginProcessorReceive.cpp in Sources */,
F204C0EBE6F8499BD5F0030F /* PluginEditor.cpp in Sources */,
F45B9A1E1D0E8EDB6678043A /* PluginEditorComponents.cpp in Sources */,
83F519C42E92991125F7540E /* PluginEditorConsole.cpp in Sources */,
@@ -800,22 +806,22 @@
398955D5066CDD4932E310CA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 783348B185006D1B6D1CF889 /* Camomile - VST */;
- targetProxy = 8F706FEF206E996E00ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44BE2085101C003363AB /* PBXContainerItemProxy */;
};
3B6CB08BC817F55EB2060FF0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = DDC710B892FDE37A0F19292D /* Camomile - Shared Code */;
- targetProxy = 8F706FEE206E996E00ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44BF2085101C003363AB /* PBXContainerItemProxy */;
};
7D367FF9FDC3FA3B59CD142E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 6E51637F255AB3A3BE377A27 /* Camomile - AU */;
- targetProxy = 8F706FF1206E996E00ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44C12085101C003363AB /* PBXContainerItemProxy */;
};
A1C3BEFB2FD635B36DFEC246 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 074FFE22626A916E5D070022 /* Camomile - VST3 */;
- targetProxy = 8F706FF0206E996E00ECE958 /* PBXContainerItemProxy */;
+ targetProxy = 8FDA44C02085101C003363AB /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@@ -892,8 +898,8 @@
"DEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
@@ -952,8 +958,8 @@
"DEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=1",
@@ -1013,8 +1019,8 @@
"NDEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=1",
@@ -1068,8 +1074,8 @@
"NDEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=1",
@@ -1131,8 +1137,8 @@
"NDEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=0",
@@ -1234,8 +1240,8 @@
"DEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=1",
@@ -1287,8 +1293,8 @@
"DEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=1",
"JucePlugin_Build_AU=0",
@@ -1347,8 +1353,8 @@
"NDEBUG=1",
"PD_INTERNAL=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=1.0.4",
- "JUCE_APP_VERSION_HEX=0x10004",
+ "JUCE_APP_VERSION=1.0.5",
+ "JUCE_APP_VERSION_HEX=0x10005",
"JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
diff --git a/Instrument/Builds/MacOSX/Camomile.xcodeproj/xcshareddata/xcschemes/Camomile-libpd.xcscheme b/Instrument/Builds/MacOSX/Camomile.xcodeproj/xcshareddata/xcschemes/Camomile-libpd.xcscheme
index 862284e2..3e3906db 100644
--- a/Instrument/Builds/MacOSX/Camomile.xcodeproj/xcshareddata/xcschemes/Camomile-libpd.xcscheme
+++ b/Instrument/Builds/MacOSX/Camomile.xcodeproj/xcshareddata/xcschemes/Camomile-libpd.xcscheme
@@ -14,7 +14,7 @@
buildForAnalyzing = "YES">
@@ -54,7 +54,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
@@ -74,7 +73,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
diff --git a/Instrument/Builds/MacOSX/Info-AU.plist b/Instrument/Builds/MacOSX/Info-AU.plist
index 66b6cd78..caf4f160 100644
--- a/Instrument/Builds/MacOSX/Info-AU.plist
+++ b/Instrument/Builds/MacOSX/Info-AU.plist
@@ -18,9 +18,9 @@
CFBundleSignature
????
CFBundleShortVersionString
- 1.0.4
+ 1.0.5
CFBundleVersion
- 1.0.4
+ 1.0.5
NSHumanReadableCopyright
Pierre Guillot
NSHighResolutionCapable
@@ -41,7 +41,7 @@
subtype
Kpq9
version
- 65540
+ 65541
diff --git a/Instrument/Builds/MacOSX/Info-VST.plist b/Instrument/Builds/MacOSX/Info-VST.plist
index ed58cd39..27c40f34 100644
--- a/Instrument/Builds/MacOSX/Info-VST.plist
+++ b/Instrument/Builds/MacOSX/Info-VST.plist
@@ -18,9 +18,9 @@
CFBundleSignature
????
CFBundleShortVersionString
- 1.0.4
+ 1.0.5
CFBundleVersion
- 1.0.4
+ 1.0.5
NSHumanReadableCopyright
Pierre Guillot
NSHighResolutionCapable
diff --git a/Instrument/Builds/MacOSX/Info-VST3.plist b/Instrument/Builds/MacOSX/Info-VST3.plist
index ed58cd39..27c40f34 100644
--- a/Instrument/Builds/MacOSX/Info-VST3.plist
+++ b/Instrument/Builds/MacOSX/Info-VST3.plist
@@ -18,9 +18,9 @@
CFBundleSignature
????
CFBundleShortVersionString
- 1.0.4
+ 1.0.5
CFBundleVersion
- 1.0.4
+ 1.0.5
NSHumanReadableCopyright
Pierre Guillot
NSHighResolutionCapable
diff --git a/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj b/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj
index 03710f66..50aa7ecd 100644
--- a/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj
+++ b/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj
@@ -110,7 +110,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -157,7 +157,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -207,7 +207,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -258,7 +258,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JUCE_SHARED_CODE=1;_LIB;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -302,6 +302,8 @@
+
+
@@ -729,6 +731,9 @@
true
+
+ true
+
true
@@ -2640,9 +2645,9 @@
+
-
diff --git a/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj.filters b/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj.filters
index ccf68295..99c315ab 100644
--- a/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj.filters
+++ b/Instrument/Builds/VisualStudio2015/Camomile_SharedCode.vcxproj.filters
@@ -5,20 +5,20 @@
{2EC11BD7-CEBB-B832-8CB3-D70D257E2DEE}
-
- {33E9C75D-FCFD-D74A-6894-584B92DA1489}
+
+ {BE714085-FF7B-465E-D7B0-3B534B330056}
-
- {A6E39D94-22B8-E2C9-3999-ABA3C7B5B10D}
+
+ {91E319D7-6113-5B7E-5BC2-4B84092EB682}
-
- {1A007D8C-60F3-4DC7-2209-EED5AE781656}
+
+ {56BE937F-AAD2-3869-C6EF-79673FDEEE41}
-
- {3E79AD8E-CF7E-8227-08EE-67ECCB0DA4A3}
+
+ {3209DED3-D2FA-971E-02F9-F15BA4D2C958}
-
- {60196A5C-D261-843B-7545-3666A27AF9DC}
+
+ {33E9C75D-FCFD-D74A-6894-584B92DA1489}
{AE2AEEA8-98A7-4FFF-924A-E091915F5128}
@@ -373,6 +373,12 @@
Camomile\Source
+
+ Camomile\Source
+
+
+ Camomile\Source
+
Camomile\Source
@@ -850,6 +856,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\format_types
+
JUCE Modules\juce_audio_processors\format_types
@@ -4185,31 +4194,31 @@
- Camomile\Ressources\Credits
+ Camomile\Source\Ressources\Credits
- Camomile\Ressources\Credits
+ Camomile\Source\Ressources\Credits
+
+
+ Camomile\Source\Ressources\Images
- Camomile\Ressources\Images
+ Camomile\Source\Ressources\Images
- Camomile\Ressources\Images
-
-
- Camomile\Ressources\Images
+ Camomile\Source\Ressources\Images
- Camomile\Ressources\Images
+ Camomile\Source\Ressources\Images
- Camomile\Ressources\Images
+ Camomile\Source\Ressources\Images
- Camomile\Ressources\Images
+ Camomile\Source\Ressources\Images
- Camomile\Ressources\Polices
+ Camomile\Source\Ressources\Polices
JUCE Modules\juce_audio_formats\codecs\flac
diff --git a/Instrument/Builds/VisualStudio2015/Camomile_VST.vcxproj b/Instrument/Builds/VisualStudio2015/Camomile_VST.vcxproj
index 627034d9..1d6b9569 100644
--- a/Instrument/Builds/VisualStudio2015/Camomile_VST.vcxproj
+++ b/Instrument/Builds/VisualStudio2015/Camomile_VST.vcxproj
@@ -110,7 +110,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -157,7 +157,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -207,7 +207,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -255,7 +255,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
diff --git a/Instrument/Builds/VisualStudio2015/Camomile_VST3.vcxproj b/Instrument/Builds/VisualStudio2015/Camomile_VST3.vcxproj
index 15f151da..65132967 100644
--- a/Instrument/Builds/VisualStudio2015/Camomile_VST3.vcxproj
+++ b/Instrument/Builds/VisualStudio2015/Camomile_VST3.vcxproj
@@ -110,7 +110,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -157,7 +157,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PD_LONGINTTYPE=long long;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
@@ -207,7 +207,7 @@
Disabled
ProgramDatabase
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreadedDebug
true
@@ -255,7 +255,7 @@
Full
..\..\..\Dependencies\Vst;..\..\JuceLibraryCode;..\..\..\Juce\modules;../../../Dependencies/LibPd/pure-data/src;../../../Dependencies/LibPd/libpd_wrapper;../../../Dependencies/LibPd/libpd_wrapper/util;../../../Dependencies/LibPd/cpp;%(AdditionalIncludeDirectories)
- _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.4;JUCE_APP_VERSION_HEX=0x10004;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;PD_INTERNAL=1;PTW32_STATIC_LIB=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.5;JUCE_APP_VERSION_HEX=0x10005;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;%(PreprocessorDefinitions)
MultiThreaded
true
diff --git a/Instrument/Builds/VisualStudio2015/resources.rc b/Instrument/Builds/VisualStudio2015/resources.rc
index e9644168..404e3372 100644
--- a/Instrument/Builds/VisualStudio2015/resources.rc
+++ b/Instrument/Builds/VisualStudio2015/resources.rc
@@ -7,7 +7,7 @@
#include
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,0,4,0
+FILEVERSION 1,0,5,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
@@ -16,9 +16,9 @@ BEGIN
VALUE "CompanyName", "Pierre Guillot\0"
VALUE "LegalCopyright", "Pierre Guillot\0"
VALUE "FileDescription", "Camomile\0"
- VALUE "FileVersion", "1.0.4\0"
+ VALUE "FileVersion", "1.0.5\0"
VALUE "ProductName", "Camomile\0"
- VALUE "ProductVersion", "1.0.4\0"
+ VALUE "ProductVersion", "1.0.5\0"
END
END
diff --git a/Instrument/Camomile.jucer b/Instrument/Camomile.jucer
index 320d6108..c7985d8c 100644
--- a/Instrument/Camomile.jucer
+++ b/Instrument/Camomile.jucer
@@ -1,7 +1,7 @@
+ pluginAUExportPrefix="CamomileAU" aaxIdentifier="com.pierreguillot.camomile"
+ pluginAAXCategory="2" jucerVersion="5.3.1" companyName="Pierre Guillot"
+ headerPath="../../../Dependencies/LibPd/pure-data/src
../../../Dependencies/LibPd/libpd_wrapper
../../../Dependencies/LibPd/libpd_wrapper/util
../../../Dependencies/LibPd/cpp
"
+ defines="PD_INTERNAL=1" companyWebsite="github.com/pierreguillot/camomile"
+ pluginFormats="buildVST,buildVST3,buildAU" pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn,pluginProducesMidiOut,pluginEditorRequiresKeys">
+
+
@@ -74,25 +79,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Instrument/JuceLibraryCode/AppConfig.h b/Instrument/JuceLibraryCode/AppConfig.h
index aaf72a0d..95ba9fd9 100644
--- a/Instrument/JuceLibraryCode/AppConfig.h
+++ b/Instrument/JuceLibraryCode/AppConfig.h
@@ -341,13 +341,13 @@
#define JucePlugin_EditorRequiresKeyboardFocus 1
#endif
#ifndef JucePlugin_Version
- #define JucePlugin_Version 1.0.4
+ #define JucePlugin_Version 1.0.5
#endif
#ifndef JucePlugin_VersionCode
- #define JucePlugin_VersionCode 0x10004
+ #define JucePlugin_VersionCode 0x10005
#endif
#ifndef JucePlugin_VersionString
- #define JucePlugin_VersionString "1.0.4"
+ #define JucePlugin_VersionString "1.0.5"
#endif
#ifndef JucePlugin_VSTUniqueID
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode
@@ -355,8 +355,11 @@
#ifndef JucePlugin_VSTCategory
#define JucePlugin_VSTCategory kPlugCategSynth
#endif
+#ifndef JucePlugin_Vst3Category
+ #define JucePlugin_Vst3Category "Instrument|Synth"
+#endif
#ifndef JucePlugin_AUMainType
- #define JucePlugin_AUMainType kAudioUnitType_MusicDevice
+ #define JucePlugin_AUMainType 'aumu'
#endif
#ifndef JucePlugin_AUSubType
#define JucePlugin_AUSubType JucePlugin_PluginCode
@@ -374,7 +377,7 @@
#define JucePlugin_CFBundleIdentifier com.pierreguillot.camomile
#endif
#ifndef JucePlugin_RTASCategory
- #define JucePlugin_RTASCategory ePlugInCategory_SWGenerators
+ #define JucePlugin_RTASCategory 2048
#endif
#ifndef JucePlugin_RTASManufacturerCode
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
@@ -398,7 +401,7 @@
#define JucePlugin_AAXProductId JucePlugin_PluginCode
#endif
#ifndef JucePlugin_AAXCategory
- #define JucePlugin_AAXCategory AAX_ePlugInCategory_Dynamics
+ #define JucePlugin_AAXCategory 2
#endif
#ifndef JucePlugin_AAXDisableBypass
#define JucePlugin_AAXDisableBypass 0
diff --git a/Instrument/JuceLibraryCode/BinaryData.cpp b/Instrument/JuceLibraryCode/BinaryData.cpp
index 57c80129..9855185f 100644
--- a/Instrument/JuceLibraryCode/BinaryData.cpp
+++ b/Instrument/JuceLibraryCode/BinaryData.cpp
@@ -11,7 +11,7 @@ namespace BinaryData
static const unsigned char temp_binary_data_0[] =
"Camomile is a free and open-source audio plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.\n"
"\n"
-"Version: 1.0.4\n"
+"Version: 1.0.5\n"
"Author: Pierre Guillot\n"
"Organizations: CICM | Universit\xc3\xa9 Paris 8\n"
"Website: github.com/pierreguillot/camomile\n"
@@ -28,7 +28,7 @@ const char* CreditsAU = (const char*) temp_binary_data_0;
static const unsigned char temp_binary_data_1[] =
"Camomile is a free and open-source audio plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.\n"
"\n"
-"Version: 1.0.4\n"
+"Version: 1.0.5\n"
"Author: Pierre Guillot\n"
"Organizations: CICM | Universit\xc3\xa9 Paris 8\n"
"Website: github.com/pierreguillot/camomile\n"
@@ -42,8 +42,62 @@ static const unsigned char temp_binary_data_1[] =
const char* CreditsVST = (const char*) temp_binary_data_1;
-//================== flower_center.png ==================
+//================== copy.png ==================
static const unsigned char temp_binary_data_2[] =
+{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,3,0,0,0,195,166,36,200,0,0,0,3,115,66,73,84,8,8,8,219,225,79,224,0,0,0,9,112,72,89,115,0,0,14,131,0,0,14,131,1,56,78,237,13,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,119,119,
+119,46,105,110,107,115,99,97,112,101,46,111,114,103,155,238,60,26,0,0,2,139,80,76,84,69,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,142,61,39,0,0,0,216,116,82,78,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,28,29,
+30,31,32,33,34,36,37,38,39,40,41,42,43,44,45,48,49,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,75,76,77,78,80,81,82,83,84,85,86,88,90,91,92,93,95,96,97,98,101,102,104,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,
+123,124,126,127,128,129,130,131,132,135,137,138,139,142,143,144,146,147,148,149,150,151,152,153,154,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,179,180,181,183,184,185,186,187,188,189,190,191,192,193,194,197,198,199,202,
+203,204,205,206,207,208,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,10,6,38,255,0,0,12,5,73,68,65,84,120,218,237,221,11,151,
+149,85,29,7,224,61,195,76,32,50,130,35,8,162,162,53,64,48,153,105,101,166,230,5,24,211,68,3,69,17,144,52,50,80,1,65,203,74,13,185,40,130,87,200,164,171,8,130,133,104,154,23,212,160,18,98,194,20,152,65,112,102,224,124,156,166,203,114,121,97,246,185,172,
+5,195,217,251,249,125,128,179,206,127,255,158,245,190,251,188,151,153,16,170,41,181,205,19,166,206,95,178,102,243,142,174,66,78,233,218,177,121,205,146,249,83,39,52,215,134,156,211,111,252,178,214,66,222,105,93,54,190,95,166,237,15,154,180,186,189,32,
+133,66,251,234,73,131,242,171,191,105,85,167,234,63,74,231,170,166,188,234,31,186,88,253,159,34,176,120,104,62,245,55,44,116,236,63,204,153,96,97,67,30,245,215,207,220,165,237,195,102,215,204,250,12,250,31,178,81,211,61,102,227,144,228,251,31,187,77,
+205,145,108,27,155,120,255,45,109,74,142,166,173,37,233,254,103,31,84,113,145,28,156,157,110,253,125,87,234,183,132,172,236,155,42,128,21,202,45,41,43,82,61,254,171,182,196,164,121,22,104,113,254,47,121,31,144,226,78,112,204,94,197,150,156,189,99,146,
+235,127,240,86,181,150,145,173,131,19,235,191,110,131,82,203,202,134,186,180,0,76,83,105,153,153,158,84,255,3,118,106,180,204,180,38,117,111,112,158,66,203,206,130,132,250,63,217,29,128,242,179,111,88,58,0,238,87,103,5,89,154,76,255,103,118,104,179,130,
+116,141,74,5,192,99,202,172,40,79,37,210,127,195,135,186,172,40,157,39,166,1,96,162,42,43,204,164,52,0,60,170,201,10,179,42,137,254,235,119,23,159,244,95,191,187,107,226,229,57,101,226,93,191,125,183,248,178,180,37,241,104,200,37,197,198,60,112,251,25,
+33,199,156,126,235,254,98,75,115,89,10,115,46,42,50,228,166,209,33,215,52,253,161,200,218,44,78,96,200,154,237,209,17,59,110,235,19,242,77,237,172,248,47,164,29,53,213,63,227,232,184,241,219,67,222,153,21,95,158,4,142,142,241,45,192,166,62,153,3,168,
+141,159,5,46,173,254,9,175,141,205,183,127,84,200,61,77,209,157,224,148,234,31,112,78,108,190,31,6,185,53,182,64,119,84,255,124,247,198,230,27,161,255,112,122,108,129,22,85,255,124,171,35,227,189,167,254,238,196,222,150,127,186,250,199,123,62,50,222,
+90,237,119,231,55,145,21,122,161,250,199,139,189,14,254,35,237,119,103,65,236,66,64,245,143,183,39,50,222,53,218,239,206,85,145,21,58,88,253,227,109,141,140,247,13,237,119,231,242,216,46,48,237,61,192,231,181,159,62,128,135,34,151,129,250,105,63,125,
+0,87,37,253,27,7,128,162,137,60,17,120,157,242,51,0,16,150,246,52,219,206,227,149,159,3,128,97,251,178,120,253,17,128,30,211,195,221,142,151,235,117,159,7,128,240,196,225,38,251,231,105,170,207,5,64,255,195,252,117,136,247,191,166,249,108,0,132,250,207,
+108,4,183,52,41,62,35,0,33,92,253,137,123,66,31,254,116,160,222,243,2,16,250,206,220,116,232,255,51,109,95,228,57,144,252,0,252,231,247,224,53,63,248,201,3,115,111,56,171,70,231,121,2,16,0,4,0,1,64,0,16,0,4,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,44,15,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,28,193,156,48,242,162,201,179,102,231,148,89,147,47,28,217,0,64,8,141,147,151,175,219,210,150,233,191,112,111,123,227,217,7,175,25,148,49,128,17,55,175,239,44,228,158,
+142,103,102,12,207,18,64,211,194,87,10,242,191,188,56,119,68,110,0,134,45,233,210,251,199,255,190,229,207,6,231,4,160,97,65,187,206,63,149,221,115,142,203,5,64,221,180,86,125,31,38,239,92,95,155,5,128,243,222,212,117,15,249,243,151,51,0,48,181,67,209,
+61,230,131,171,83,7,80,119,159,150,163,89,88,147,52,128,198,181,42,46,146,95,28,159,48,128,81,111,43,184,104,94,62,53,89,0,231,238,81,111,9,105,29,157,40,128,225,59,149,91,82,222,62,41,73,0,253,95,82,109,137,89,87,151,32,128,154,39,21,91,114,30,72,16,
+192,92,181,150,145,233,201,1,184,226,144,86,203,72,231,183,18,3,112,134,187,63,229,229,189,161,105,1,120,92,165,189,177,13,56,102,0,156,237,4,80,246,73,224,11,41,1,88,175,208,178,179,58,33,0,227,212,89,65,190,146,12,128,62,175,106,179,130,108,72,6,192,
+245,202,172,40,227,82,1,176,85,151,21,229,143,137,0,104,86,101,101,57,116,74,26,0,230,169,178,183,46,8,31,27,0,74,186,11,216,245,214,27,57,229,111,37,1,120,54,9,0,195,139,206,185,125,197,247,190,122,92,200,43,141,151,220,246,212,222,162,23,131,26,83,
+0,48,163,216,153,110,209,128,144,103,78,253,125,49,1,215,166,0,224,153,248,140,219,46,12,249,102,106,145,131,192,47,19,0,48,48,254,30,192,218,1,33,231,156,22,223,12,124,208,191,250,1,156,19,157,112,247,41,33,239,92,28,63,4,52,87,63,128,43,163,3,78,9,
+185,103,201,145,188,24,120,44,0,184,41,246,29,126,157,125,255,161,225,175,177,5,186,161,250,1,220,29,251,14,163,0,8,83,98,11,52,175,250,1,60,28,249,10,239,215,232,63,140,140,149,180,180,250,1,196,222,6,92,171,254,16,106,98,63,5,127,85,253,0,94,143,124,
+133,187,213,31,226,143,75,253,169,250,1,196,222,7,188,82,251,221,185,39,178,66,173,213,15,32,246,21,206,209,126,119,110,142,172,208,126,0,242,6,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,142,0,128,233,145,143,222,3,64,250,0,30,140,124,244,235,0,164,15,224,213,200,71,175,5,32,121,0,199,119,69,62,
+250,97,0,146,7,112,65,108,241,239,6,32,117,0,125,54,197,22,255,38,0,82,7,48,39,182,246,133,43,1,72,28,192,23,15,20,142,133,197,7,160,151,0,156,244,98,180,255,142,129,0,36,13,224,219,173,209,254,11,207,4,0,18,6,208,248,104,161,72,102,0,144,42,128,19,190,
+57,235,241,93,197,250,47,12,7,32,61,0,53,103,207,127,100,221,91,135,10,37,228,165,0,64,106,0,142,187,109,123,161,228,204,3,32,53,0,19,223,41,148,145,102,0,210,2,80,251,227,114,234,47,108,13,0,36,5,160,230,137,178,250,47,92,15,64,90,0,238,42,175,255,87,
+251,0,144,20,128,241,229,245,95,24,23,0,72,9,64,159,215,202,235,127,125,0,32,41,0,215,149,215,255,161,179,1,72,11,192,115,229,1,120,60,0,144,20,128,198,174,178,250,111,63,3,128,180,0,124,167,188,19,192,21,1,128,180,0,124,191,44,0,115,3,0,137,1,184,167,
+156,254,159,172,1,32,53,0,139,203,232,255,165,254,1,128,212,0,220,89,122,255,59,135,7,0,146,3,112,99,201,253,239,57,55,0,144,30,128,175,151,218,255,219,163,2,0,9,2,232,243,110,105,253,175,109,12,0,36,121,37,112,121,73,253,223,87,23,0,72,19,64,115,9,143,
+1,118,76,237,165,241,0,56,242,0,66,209,135,192,11,111,158,23,0,72,23,192,240,34,111,129,180,78,171,11,0,36,12,32,156,179,63,118,247,103,65,67,47,142,7,192,209,0,16,38,180,247,244,17,93,75,134,245,234,120,0,28,21,0,225,75,127,63,236,7,188,178,176,169,
+151,199,3,224,232,0,8,141,247,124,250,52,208,185,254,230,17,189,63,30,0,71,9,64,8,167,204,251,232,141,240,182,45,235,150,79,110,60,38,198,3,224,168,1,232,206,176,243,191,123,203,228,139,70,158,112,12,141,7,192,209,4,112,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,37,7,35,227,93,160,253,238,204,137,172,208,
+190,234,31,111,71,100,188,91,180,223,157,39,34,43,180,173,250,199,123,33,50,222,35,218,239,206,95,34,43,244,124,245,143,247,116,100,188,45,218,15,161,49,182,75,90,93,253,243,45,138,140,119,104,160,254,195,197,49,0,247,86,255,124,119,196,230,155,161,255,
+176,50,182,64,115,170,127,190,41,177,249,218,71,100,223,127,75,244,191,62,95,91,253,3,94,26,29,240,185,154,220,119,0,255,136,174,207,37,213,63,225,232,248,63,54,207,253,36,176,50,190,60,163,171,127,194,154,29,209,9,59,238,168,203,184,254,19,31,142,247,
+191,61,133,3,228,226,248,140,133,23,199,100,219,255,184,237,69,214,102,81,10,83,94,86,100,200,194,135,119,158,245,185,12,219,31,112,254,242,98,43,147,194,22,32,132,190,109,69,231,44,28,216,244,243,233,55,230,148,91,150,191,118,176,248,178,236,174,79,
+130,250,170,130,84,150,71,211,56,214,77,210,100,133,153,152,200,86,183,83,149,21,229,64,67,34,219,157,167,116,89,81,30,75,101,191,59,170,75,153,21,164,227,204,100,126,241,44,213,102,5,185,63,157,159,188,195,246,169,179,236,180,157,156,208,69,143,5,250,
+44,59,243,82,186,234,213,208,170,208,50,179,115,64,82,215,61,167,107,180,204,76,75,235,194,119,221,6,149,150,149,13,169,221,36,29,188,85,169,101,100,235,224,228,110,126,141,217,171,214,146,179,55,197,91,228,45,7,21,91,98,14,182,36,121,3,124,182,102,75,
+204,236,68,31,129,88,161,218,146,178,34,213,103,96,250,174,84,110,9,89,217,55,221,199,160,102,219,7,20,61,255,207,14,41,167,165,77,197,241,59,0,45,33,237,140,221,166,228,72,182,141,13,169,103,200,70,53,247,152,141,67,66,250,169,159,185,75,211,135,205,
+174,153,245,33,139,52,44,108,215,246,103,210,190,176,33,100,147,161,139,61,40,250,201,116,46,30,26,178,74,211,42,4,62,86,255,170,166,144,93,6,77,90,237,76,240,223,99,255,234,73,131,66,158,233,55,126,89,238,143,10,181,46,27,223,47,228,156,218,230,9,83,
+231,47,89,179,121,71,94,143,142,119,237,216,188,102,201,252,169,19,154,107,171,170,173,127,3,217,192,72,154,199,230,175,22,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
+
+const char* copy_png = (const char*) temp_binary_data_2;
+
+//================== flower_center.png ==================
+static const unsigned char temp_binary_data_3[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,223,9,12,14,31,51,16,110,155,
17,0,0,12,112,73,68,65,84,120,218,237,221,77,142,220,56,18,6,80,185,209,62,129,119,188,80,157,217,23,138,157,79,80,139,234,69,163,225,114,117,101,165,126,72,49,72,190,7,24,24,140,61,202,212,207,40,62,134,40,230,182,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -86,10 +140,10 @@ static const unsigned char temp_binary_data_2[] =
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,104,228,31,147,91,47,206,240,210,17,157,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-const char* flower_center_png = (const char*) temp_binary_data_2;
+const char* flower_center_png = (const char*) temp_binary_data_3;
//================== flower_petals.png ==================
-static const unsigned char temp_binary_data_3[] =
+static const unsigned char temp_binary_data_4[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,224,3,11,14,50,54,98,101,160,
17,0,0,32,0,73,68,65,84,120,218,237,189,61,139,36,91,180,37,182,118,113,25,198,120,204,205,246,158,241,160,163,153,135,24,239,102,123,18,188,161,163,97,92,81,121,145,37,16,84,148,39,75,93,23,198,239,236,31,32,170,26,253,128,202,178,198,236,44,70,150,
64,84,20,204,128,188,202,244,198,120,168,179,96,140,231,117,166,120,134,144,115,100,196,142,174,172,236,250,200,143,136,115,246,57,103,45,40,186,239,71,119,68,236,179,207,222,107,127,156,125,4,4,65,36,3,231,220,7,253,237,16,192,0,64,161,63,45,54,255,
@@ -402,61 +456,7 @@ static const unsigned char temp_binary_data_3[] =
145,32,72,0,8,130,232,134,12,148,250,171,149,204,192,10,192,20,205,144,35,58,125,130,32,1,32,8,162,103,66,48,68,115,138,160,253,241,149,33,184,5,48,107,127,120,126,159,32,72,0,8,130,176,65,10,6,74,8,6,0,10,253,105,81,224,249,185,3,247,0,22,107,255,188,
208,159,165,58,251,37,157,61,65,164,131,255,31,36,166,129,112,251,243,66,102,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-const char* flower_petals_png = (const char*) temp_binary_data_3;
-
-//================== copy.png ==================
-static const unsigned char temp_binary_data_4[] =
-{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,3,0,0,0,195,166,36,200,0,0,0,3,115,66,73,84,8,8,8,219,225,79,224,0,0,0,9,112,72,89,115,0,0,14,131,0,0,14,131,1,56,78,237,13,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,119,119,
-119,46,105,110,107,115,99,97,112,101,46,111,114,103,155,238,60,26,0,0,2,139,80,76,84,69,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,142,61,39,0,0,0,216,116,82,78,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,28,29,
-30,31,32,33,34,36,37,38,39,40,41,42,43,44,45,48,49,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,75,76,77,78,80,81,82,83,84,85,86,88,90,91,92,93,95,96,97,98,101,102,104,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,
-123,124,126,127,128,129,130,131,132,135,137,138,139,142,143,144,146,147,148,149,150,151,152,153,154,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,179,180,181,183,184,185,186,187,188,189,190,191,192,193,194,197,198,199,202,
-203,204,205,206,207,208,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,10,6,38,255,0,0,12,5,73,68,65,84,120,218,237,221,11,151,
-149,85,29,7,224,61,195,76,32,50,130,35,8,162,162,53,64,48,153,105,101,166,230,5,24,211,68,3,69,17,144,52,50,80,1,65,203,74,13,185,40,130,87,200,164,171,8,130,133,104,154,23,212,160,18,98,194,20,152,65,112,102,224,124,156,166,203,114,121,97,246,185,172,
-5,195,217,251,249,125,128,179,206,127,255,158,245,190,251,188,151,153,16,170,41,181,205,19,166,206,95,178,102,243,142,174,66,78,233,218,177,121,205,146,249,83,39,52,215,134,156,211,111,252,178,214,66,222,105,93,54,190,95,166,237,15,154,180,186,189,32,
-133,66,251,234,73,131,242,171,191,105,85,167,234,63,74,231,170,166,188,234,31,186,88,253,159,34,176,120,104,62,245,55,44,116,236,63,204,153,96,97,67,30,245,215,207,220,165,237,195,102,215,204,250,12,250,31,178,81,211,61,102,227,144,228,251,31,187,77,
-205,145,108,27,155,120,255,45,109,74,142,166,173,37,233,254,103,31,84,113,145,28,156,157,110,253,125,87,234,183,132,172,236,155,42,128,21,202,45,41,43,82,61,254,171,182,196,164,121,22,104,113,254,47,121,31,144,226,78,112,204,94,197,150,156,189,99,146,
-235,127,240,86,181,150,145,173,131,19,235,191,110,131,82,203,202,134,186,180,0,76,83,105,153,153,158,84,255,3,118,106,180,204,180,38,117,111,112,158,66,203,206,130,132,250,63,217,29,128,242,179,111,88,58,0,238,87,103,5,89,154,76,255,103,118,104,179,130,
-116,141,74,5,192,99,202,172,40,79,37,210,127,195,135,186,172,40,157,39,166,1,96,162,42,43,204,164,52,0,60,170,201,10,179,42,137,254,235,119,23,159,244,95,191,187,107,226,229,57,101,226,93,191,125,183,248,178,180,37,241,104,200,37,197,198,60,112,251,25,
-33,199,156,126,235,254,98,75,115,89,10,115,46,42,50,228,166,209,33,215,52,253,161,200,218,44,78,96,200,154,237,209,17,59,110,235,19,242,77,237,172,248,47,164,29,53,213,63,227,232,184,241,219,67,222,153,21,95,158,4,142,142,241,45,192,166,62,153,3,168,
-141,159,5,46,173,254,9,175,141,205,183,127,84,200,61,77,209,157,224,148,234,31,112,78,108,190,31,6,185,53,182,64,119,84,255,124,247,198,230,27,161,255,112,122,108,129,22,85,255,124,171,35,227,189,167,254,238,196,222,150,127,186,250,199,123,62,50,222,
-90,237,119,231,55,145,21,122,161,250,199,139,189,14,254,35,237,119,103,65,236,66,64,245,143,183,39,50,222,53,218,239,206,85,145,21,58,88,253,227,109,141,140,247,13,237,119,231,242,216,46,48,237,61,192,231,181,159,62,128,135,34,151,129,250,105,63,125,
-0,87,37,253,27,7,128,162,137,60,17,120,157,242,51,0,16,150,246,52,219,206,227,149,159,3,128,97,251,178,120,253,17,128,30,211,195,221,142,151,235,117,159,7,128,240,196,225,38,251,231,105,170,207,5,64,255,195,252,117,136,247,191,166,249,108,0,132,250,207,
-108,4,183,52,41,62,35,0,33,92,253,137,123,66,31,254,116,160,222,243,2,16,250,206,220,116,232,255,51,109,95,228,57,144,252,0,252,231,247,224,53,63,248,201,3,115,111,56,171,70,231,121,2,16,0,4,0,1,64,0,16,0,4,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,44,15,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,8,0,2,128,0,32,0,28,193,156,48,242,162,201,179,102,231,148,89,147,47,28,217,0,64,8,141,147,151,175,219,210,150,233,191,112,111,123,227,217,7,175,25,148,49,128,17,55,175,239,44,228,158,
-142,103,102,12,207,18,64,211,194,87,10,242,191,188,56,119,68,110,0,134,45,233,210,251,199,255,190,229,207,6,231,4,160,97,65,187,206,63,149,221,115,142,203,5,64,221,180,86,125,31,38,239,92,95,155,5,128,243,222,212,117,15,249,243,151,51,0,48,181,67,209,
-61,230,131,171,83,7,80,119,159,150,163,89,88,147,52,128,198,181,42,46,146,95,28,159,48,128,81,111,43,184,104,94,62,53,89,0,231,238,81,111,9,105,29,157,40,128,225,59,149,91,82,222,62,41,73,0,253,95,82,109,137,89,87,151,32,128,154,39,21,91,114,30,72,16,
-192,92,181,150,145,233,201,1,184,226,144,86,203,72,231,183,18,3,112,134,187,63,229,229,189,161,105,1,120,92,165,189,177,13,56,102,0,156,237,4,80,246,73,224,11,41,1,88,175,208,178,179,58,33,0,227,212,89,65,190,146,12,128,62,175,106,179,130,108,72,6,192,
-245,202,172,40,227,82,1,176,85,151,21,229,143,137,0,104,86,101,101,57,116,74,26,0,230,169,178,183,46,8,31,27,0,74,186,11,216,245,214,27,57,229,111,37,1,120,54,9,0,195,139,206,185,125,197,247,190,122,92,200,43,141,151,220,246,212,222,162,23,131,26,83,
-0,48,163,216,153,110,209,128,144,103,78,253,125,49,1,215,166,0,224,153,248,140,219,46,12,249,102,106,145,131,192,47,19,0,48,48,254,30,192,218,1,33,231,156,22,223,12,124,208,191,250,1,156,19,157,112,247,41,33,239,92,28,63,4,52,87,63,128,43,163,3,78,9,
-185,103,201,145,188,24,120,44,0,184,41,246,29,126,157,125,255,161,225,175,177,5,186,161,250,1,220,29,251,14,163,0,8,83,98,11,52,175,250,1,60,28,249,10,239,215,232,63,140,140,149,180,180,250,1,196,222,6,92,171,254,16,106,98,63,5,127,85,253,0,94,143,124,
-133,187,213,31,226,143,75,253,169,250,1,196,222,7,188,82,251,221,185,39,178,66,173,213,15,32,246,21,206,209,126,119,110,142,172,208,126,0,242,6,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,142,0,128,233,145,143,222,3,64,250,0,30,140,124,244,235,0,164,15,224,213,200,71,175,5,32,121,0,199,119,69,62,
-250,97,0,146,7,112,65,108,241,239,6,32,117,0,125,54,197,22,255,38,0,82,7,48,39,182,246,133,43,1,72,28,192,23,15,20,142,133,197,7,160,151,0,156,244,98,180,255,142,129,0,36,13,224,219,173,209,254,11,207,4,0,18,6,208,248,104,161,72,102,0,144,42,128,19,190,
-57,235,241,93,197,250,47,12,7,32,61,0,53,103,207,127,100,221,91,135,10,37,228,165,0,64,106,0,142,187,109,123,161,228,204,3,32,53,0,19,223,41,148,145,102,0,210,2,80,251,227,114,234,47,108,13,0,36,5,160,230,137,178,250,47,92,15,64,90,0,238,42,175,255,87,
-251,0,144,20,128,241,229,245,95,24,23,0,72,9,64,159,215,202,235,127,125,0,32,41,0,215,149,215,255,161,179,1,72,11,192,115,229,1,120,60,0,144,20,128,198,174,178,250,111,63,3,128,180,0,124,167,188,19,192,21,1,128,180,0,124,191,44,0,115,3,0,137,1,184,167,
-156,254,159,172,1,32,53,0,139,203,232,255,165,254,1,128,212,0,220,89,122,255,59,135,7,0,146,3,112,99,201,253,239,57,55,0,144,30,128,175,151,218,255,219,163,2,0,9,2,232,243,110,105,253,175,109,12,0,36,121,37,112,121,73,253,223,87,23,0,72,19,64,115,9,143,
-1,118,76,237,165,241,0,56,242,0,66,209,135,192,11,111,158,23,0,72,23,192,240,34,111,129,180,78,171,11,0,36,12,32,156,179,63,118,247,103,65,67,47,142,7,192,209,0,16,38,180,247,244,17,93,75,134,245,234,120,0,28,21,0,225,75,127,63,236,7,188,178,176,169,
-151,199,3,224,232,0,8,141,247,124,250,52,208,185,254,230,17,189,63,30,0,71,9,64,8,167,204,251,232,141,240,182,45,235,150,79,110,60,38,198,3,224,168,1,232,206,176,243,191,123,203,228,139,70,158,112,12,141,7,192,209,4,112,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,37,7,35,227,93,160,253,238,204,137,172,208,
-190,234,31,111,71,100,188,91,180,223,157,39,34,43,180,173,250,199,123,33,50,222,35,218,239,206,95,34,43,244,124,245,143,247,116,100,188,45,218,15,161,49,182,75,90,93,253,243,45,138,140,119,104,160,254,195,197,49,0,247,86,255,124,119,196,230,155,161,255,
-176,50,182,64,115,170,127,190,41,177,249,218,71,100,223,127,75,244,191,62,95,91,253,3,94,26,29,240,185,154,220,119,0,255,136,174,207,37,213,63,225,232,248,63,54,207,253,36,176,50,190,60,163,171,127,194,154,29,209,9,59,238,168,203,184,254,19,31,142,247,
-191,61,133,3,228,226,248,140,133,23,199,100,219,255,184,237,69,214,102,81,10,83,94,86,100,200,194,135,119,158,245,185,12,219,31,112,254,242,98,43,147,194,22,32,132,190,109,69,231,44,28,216,244,243,233,55,230,148,91,150,191,118,176,248,178,236,174,79,
-130,250,170,130,84,150,71,211,56,214,77,210,100,133,153,152,200,86,183,83,149,21,229,64,67,34,219,157,167,116,89,81,30,75,101,191,59,170,75,153,21,164,227,204,100,126,241,44,213,102,5,185,63,157,159,188,195,246,169,179,236,180,157,156,208,69,143,5,250,
-44,59,243,82,186,234,213,208,170,208,50,179,115,64,82,215,61,167,107,180,204,76,75,235,194,119,221,6,149,150,149,13,169,221,36,29,188,85,169,101,100,235,224,228,110,126,141,217,171,214,146,179,55,197,91,228,45,7,21,91,98,14,182,36,121,3,124,182,102,75,
-204,236,68,31,129,88,161,218,146,178,34,213,103,96,250,174,84,110,9,89,217,55,221,199,160,102,219,7,20,61,255,207,14,41,167,165,77,197,241,59,0,45,33,237,140,221,166,228,72,182,141,13,169,103,200,70,53,247,152,141,67,66,250,169,159,185,75,211,135,205,
-174,153,245,33,139,52,44,108,215,246,103,210,190,176,33,100,147,161,139,61,40,250,201,116,46,30,26,178,74,211,42,4,62,86,255,170,166,144,93,6,77,90,237,76,240,223,99,255,234,73,131,66,158,233,55,126,89,238,143,10,181,46,27,223,47,228,156,218,230,9,83,
-231,47,89,179,121,71,94,143,142,119,237,216,188,102,201,252,169,19,154,107,171,170,173,127,3,217,192,72,154,199,230,175,22,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-
-const char* copy_png = (const char*) temp_binary_data_4;
+const char* flower_petals_png = (const char*) temp_binary_data_4;
//================== garbage.png ==================
static const unsigned char temp_binary_data_5[] =
@@ -4841,8 +4841,7 @@ static const unsigned char temp_binary_data_8[] =
const char* DejaVuSansMono_ttf = (const char*) temp_binary_data_8;
-const char* getNamedResource (const char*, int&) throw();
-const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw()
+const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) noexcept
{
unsigned int hash = 0;
if (resourceNameUTF8 != 0)
@@ -4853,9 +4852,9 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
{
case 0x9fa71e2e: numBytes = 479; return CreditsAU;
case 0x553cf67d: numBytes = 537; return CreditsVST;
+ case 0xe1dcce5f: numBytes = 4098; return copy_png;
case 0x4e66dfa3: numBytes = 3299; return flower_center_png;
case 0x44524977: numBytes = 22287; return flower_petals_png;
- case 0xe1dcce5f: numBytes = 4098; return copy_png;
case 0x0340271f: numBytes = 5113; return garbage_png;
case 0xb5baee83: numBytes = 8380; return reload_png;
case 0x1fded40d: numBytes = 12539; return settings_png;
@@ -4864,20 +4863,44 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
}
numBytes = 0;
- return 0;
+ return nullptr;
}
const char* namedResourceList[] =
{
"CreditsAU",
"CreditsVST",
+ "copy_png",
"flower_center_png",
"flower_petals_png",
- "copy_png",
"garbage_png",
"reload_png",
"settings_png",
"DejaVuSansMono_ttf"
};
+const char* originalFilenames[] =
+{
+ "CreditsAU",
+ "CreditsVST",
+ "copy.png",
+ "flower_center.png",
+ "flower_petals.png",
+ "garbage.png",
+ "reload.png",
+ "settings.png",
+ "DejaVuSansMono.ttf"
+};
+
+const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept
+{
+ for (unsigned int i = 0; i < (sizeof (namedResourceList) / sizeof (namedResourceList[0])); ++i)
+ {
+ if (namedResourceList[i] == resourceNameUTF8)
+ return originalFilenames[i];
+ }
+
+ return nullptr;
+}
+
}
diff --git a/Instrument/JuceLibraryCode/BinaryData.h b/Instrument/JuceLibraryCode/BinaryData.h
index 4839c4ec..ddcdaa77 100644
--- a/Instrument/JuceLibraryCode/BinaryData.h
+++ b/Instrument/JuceLibraryCode/BinaryData.h
@@ -14,15 +14,15 @@ namespace BinaryData
extern const char* CreditsVST;
const int CreditsVSTSize = 537;
+ extern const char* copy_png;
+ const int copy_pngSize = 4098;
+
extern const char* flower_center_png;
const int flower_center_pngSize = 3299;
extern const char* flower_petals_png;
const int flower_petals_pngSize = 22287;
- extern const char* copy_png;
- const int copy_pngSize = 4098;
-
extern const char* garbage_png;
const int garbage_pngSize = 5113;
@@ -35,13 +35,20 @@ namespace BinaryData
extern const char* DejaVuSansMono_ttf;
const int DejaVuSansMono_ttfSize = 340712;
+ // Number of elements in the namedResourceList and originalFileNames arrays.
+ const int namedResourceListSize = 9;
+
// Points to the start of a list of resource names.
extern const char* namedResourceList[];
- // Number of elements in the namedResourceList array.
- const int namedResourceListSize = 9;
+ // Points to the start of a list of resource filenames.
+ extern const char* originalFilenames[];
// If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found).
- const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();
+ const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) noexcept;
+
+ // If you provide the name of one of the binary resource variables above, this function will
+ // return the corresponding original, non-mangled filename (or a null pointer if the name isn't found).
+ const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept;
}
diff --git a/Instrument/JuceLibraryCode/JuceHeader.h b/Instrument/JuceLibraryCode/JuceHeader.h
index 63050276..4ce3f548 100644
--- a/Instrument/JuceLibraryCode/JuceHeader.h
+++ b/Instrument/JuceLibraryCode/JuceHeader.h
@@ -39,7 +39,7 @@
namespace ProjectInfo
{
const char* const projectName = "Camomile";
- const char* const versionString = "1.0.4";
- const int versionNumber = 0x10004;
+ const char* const versionString = "1.0.5";
+ const int versionNumber = 0x10005;
}
#endif
diff --git a/Juce b/Juce
index fd0c426e..0f94dbbf 160000
--- a/Juce
+++ b/Juce
@@ -1 +1 @@
-Subproject commit fd0c426ed0dac467e0db719c612cdeec8f380a67
+Subproject commit 0f94dbbf961c41bbeae143ffd42625990a0cc5bd
diff --git a/Plugins/Examples/AlmondOrgan/AlmondOrgan.txt b/Plugins/Examples/AlmondOrgan/AlmondOrgan.txt
index 327833d4..338ccc22 100644
--- a/Plugins/Examples/AlmondOrgan/AlmondOrgan.txt
+++ b/Plugins/Examples/AlmondOrgan/AlmondOrgan.txt
@@ -1,11 +1,11 @@
type instrument;
-bus 0 2;
+iolayout 0 2;
code zWOt;
midiin true;
playhead true;
image Spip.png;
description Infos.txt;
-compatibility 1.0.2;
+compatibility 1.0.5;
param -name Volume -label dB -min 0 -max 100 -default 80;
param -name Attack -label ms -min 0 -max 100 -default 20;
param -name Decay -label ms -min 0 -max 1000 -default 60;
diff --git a/Plugins/Examples/Bulgroz/Bulgroz.txt b/Plugins/Examples/Bulgroz/Bulgroz.txt
index d8108f73..4522ab20 100644
--- a/Plugins/Examples/Bulgroz/Bulgroz.txt
+++ b/Plugins/Examples/Bulgroz/Bulgroz.txt
@@ -2,9 +2,9 @@ param -name Window Size -label ms -min 0 -max 10000 -default 220;
program short;
program medium;
program long;
-bus 2 2;
+iolayout 2 2;
code zWrt;
type effect;
image Bulgroz.png;
description Infos.txt;
-compatibility 1.0.2;
+compatibility 1.0.5;
diff --git a/Plugins/Examples/Castafiore/Castafiore.txt b/Plugins/Examples/Castafiore/Castafiore.txt
index 51ad0cf7..90254326 100644
--- a/Plugins/Examples/Castafiore/Castafiore.txt
+++ b/Plugins/Examples/Castafiore/Castafiore.txt
@@ -3,9 +3,9 @@ program fundamental;
program major-third;
program fifth;
program octave;
-bus 2 2;
+iolayout 2 2;
code zUrt;
type effect;
image Castafiore.png;
description Infos.txt;
-compatibility 1.0.2;
+compatibility 1.0.5;
diff --git a/Plugins/Examples/MiniMock/MiniMock.txt b/Plugins/Examples/MiniMock/MiniMock.txt
index e46d40a7..3b920366 100644
--- a/Plugins/Examples/MiniMock/MiniMock.txt
+++ b/Plugins/Examples/MiniMock/MiniMock.txt
@@ -1,8 +1,8 @@
-bus 0 2;
code zWry;
type instrument;
midiin true;
-compatibility 1.0.2;
+compatibility 1.0.5;
+iolayout 0 2;
description Infos.txt;
param -name OSC1 Waveform -list Triangular/Sawtooth Triangular/Sawtooth/Square/Wide Rectangular/Narrow Rectangular/Reverse Sawtooth;
param -name OSC1 Octave -min -3 -max 3 -default 0 -nsteps 7;
diff --git a/Ressources/Credits/CreditsAU b/Ressources/Credits/CreditsAU
index 26a4b534..f1d8d6c6 100644
--- a/Ressources/Credits/CreditsAU
+++ b/Ressources/Credits/CreditsAU
@@ -1,6 +1,6 @@
Camomile is a free and open-source audio plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.
-Version: 1.0.4
+Version: 1.0.5
Author: Pierre Guillot
Organizations: CICM | Université Paris 8
Website: github.com/pierreguillot/camomile
diff --git a/Ressources/Credits/CreditsVST b/Ressources/Credits/CreditsVST
index b0479b64..131800b4 100644
--- a/Ressources/Credits/CreditsVST
+++ b/Ressources/Credits/CreditsVST
@@ -1,6 +1,6 @@
Camomile is a free and open-source audio plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.
-Version: 1.0.4
+Version: 1.0.5
Author: Pierre Guillot
Organizations: CICM | Université Paris 8
Website: github.com/pierreguillot/camomile
diff --git a/Source/Pd/PdGui.hpp b/Source/Pd/PdGui.hpp
index b69e46d0..7003891c 100755
--- a/Source/Pd/PdGui.hpp
+++ b/Source/Pd/PdGui.hpp
@@ -62,7 +62,7 @@ namespace pd
bool isIEM() const noexcept { return m_type != Type::Undefined && m_type < Type::Comment; }
//! @brief If the GUI is an Atom GUI (AtomNumber or AtomSymbol).
- bool isAtom() const noexcept { return m_type == Type::AtomNumber || m_type == Type::AtomSymbol; }
+ bool isAtom() const noexcept { return m_type == Type::AtomNumber || m_type == Type::AtomSymbol; }
//! @brief Get the font size.
int getFontSize() const noexcept;
@@ -100,7 +100,7 @@ namespace pd
Gui(void* ptr, void* patch, Instance* instance) noexcept;
- Type m_type = Type::Undefined;
+ Type m_type = Type::Undefined;
friend class Patch;
};
diff --git a/Source/Pd/PdInstance.cpp b/Source/Pd/PdInstance.cpp
index cfadbd7c..bbf960b4 100644
--- a/Source/Pd/PdInstance.cpp
+++ b/Source/Pd/PdInstance.cpp
@@ -102,7 +102,7 @@ extern "C"
//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
- static void instance_multi_print(pd::Instance* ptr, char* s)
+ static void instance_multi_print(pd::Instance* ptr, char const* s)
{
ptr->m_print_queue.try_enqueue(std::string(s));
}
@@ -161,7 +161,7 @@ namespace pd
void Instance::prepareDSP(const int nins, const int nouts, const double samplerate)
{
libpd_set_instance(static_cast(m_instance));
- libpd_init_audio((int)nins, (int)nouts, (int)samplerate);
+ libpd_init_audio(nins, nouts, (int)samplerate);
}
void Instance::startDSP()
@@ -415,6 +415,7 @@ namespace pd
{
libpd_set_instance(static_cast(m_instance));
libpd_closefile(m_patch);
+ m_patch = nullptr;
}
}
diff --git a/Source/PluginConsole.h b/Source/PluginConsole.h
index f516a699..e0d35d9e 100755
--- a/Source/PluginConsole.h
+++ b/Source/PluginConsole.h
@@ -9,23 +9,30 @@
#include
#include
#include
-#include
#include
#include
//! @brief A class that manages the console
-template class CamomileConsole
+class CamomileConsole
{
public:
public:
+ using level_t = size_t;
+ using message_t = std::pair;
//! @brief the constructor.
- CamomileConsole(size_t const preallocate = 512) : m_messages() {
- m_messages.reserve(preallocate), m_counters.fill(0); }
+ CamomileConsole(const level_t maxlevel, size_t const preallocate = 512) :
+ m_max_level(maxlevel),
+ m_counters(maxlevel, 0),
+ m_messages(preallocate)
+ {
+ m_messages.clear();
+ }
//! @brief Gets the number of all messages.
- size_t size(size_t level) const noexcept {
- assert(level <= SIZE && "wrong level of message");
+ size_t size(level_t level) const noexcept
+ {
+ assert(level <= m_max_level && "wrong level of message");
std::lock_guard guard(m_mutex);
size_t size = m_counters[level];
while (level--) { size += m_counters[level]; }
@@ -33,9 +40,9 @@ template class CamomileConsole
}
//! @brief Gets a message at an index until a level.
- std::pair get(size_t level, size_t index) const noexcept
+ message_t get(level_t level, size_t index) const noexcept
{
- assert(level <= SIZE && "wrong level of message");
+ assert(level <= m_max_level && "wrong level of message");
std::lock_guard guard(m_mutex);
for(size_t i = 0, c = 0; i < m_messages.size(); ++i)
{
@@ -51,7 +58,7 @@ template class CamomileConsole
}
//! @brief Clears the history.
- void clear(size_t level = SIZE, size_t index = std::numeric_limits::max()) noexcept
+ void clear(level_t level, size_t index = std::numeric_limits::max()) noexcept
{
std::lock_guard guard(m_mutex);
size_t c = 0;
@@ -71,19 +78,20 @@ template class CamomileConsole
//! @brief Adds a message to the history.
- void add(size_t level, std::string message) noexcept
+ void add(level_t level, std::string message) noexcept
{
- assert(level < SIZE && "wrong level of message");
+ assert(level < m_max_level && "wrong level of message");
std::lock_guard guard(m_mutex);
if(m_messages.size() < m_messages.capacity())
{
++m_counters[level];
- m_messages.push_back(std::pair({level, std::move(message)}));
+ m_messages.push_back(message_t{level, std::move(message)});
}
}
private:
- mutable std::mutex m_mutex;
- std::array m_counters;
- std::vector> m_messages;
+ mutable std::mutex m_mutex;
+ const level_t m_max_level;
+ std::vector m_counters;
+ std::vector m_messages;
};
diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp
index 5aa68ab7..71d33a99 100644
--- a/Source/PluginEditor.cpp
+++ b/Source/PluginEditor.cpp
@@ -38,12 +38,12 @@ void CamomileEditor::updatePatch()
auto const bounds = m_processor.getPatch().getBounds();
int const width = bounds[2] > 0 ? std::max(bounds[2], 100) : 400;
int const height = bounds[3] > 0 ? std::max(bounds[3], 100) : 300;
- if(width != getWidth() || height != getHeight())
+ if(width != getWidth() || height != getHeight())
{
setSize(width, height);
if(m_image.getImage().isValid())
{
- m_image.setTransformToFit(getBounds().toType(), RectanglePlacement::stretchToFit);
+ m_image.setTransformToFit(getBounds().toType(), RectanglePlacement::fillDestination + RectanglePlacement::xLeft + RectanglePlacement::yTop);
if(!m_image.isVisible())
{
addAndMakeVisible(m_image, 0);
@@ -75,8 +75,10 @@ void CamomileEditor::updateObjects()
void CamomileEditor::timerCallback()
{
CamomileEditorMessageManager::processMessages();
- for(auto object : m_objects) {
- object->update(); }
+ for(auto object : m_objects)
+ {
+ object->update();
+ }
}
@@ -99,14 +101,20 @@ void CamomileEditor::paint (Graphics& g)
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
-bool CamomileEditor::keyPressed(const KeyPress& key) {
- return CamomileEditorKeyManager::keyPressed(key); }
+bool CamomileEditor::keyPressed(const KeyPress& key)
+{
+ return CamomileEditorKeyManager::keyPressed(key);
+}
-bool CamomileEditor::keyStateChanged(bool isKeyDown) {
- return CamomileEditorKeyManager::keyStateChanged(isKeyDown); }
+bool CamomileEditor::keyStateChanged(bool isKeyDown)
+{
+ return CamomileEditorKeyManager::keyStateChanged(isKeyDown);
+}
-void CamomileEditor::modifierKeysChanged(const ModifierKeys& modifiers) {
- CamomileEditorKeyManager::keyModifiersChanged(modifiers); }
+void CamomileEditor::modifierKeysChanged(const ModifierKeys& modifiers)
+{
+ CamomileEditorKeyManager::keyModifiersChanged(modifiers);
+}
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h
index da5c4b8a..a4b3b41e 100644
--- a/Source/PluginEditor.h
+++ b/Source/PluginEditor.h
@@ -26,12 +26,11 @@ class CamomileEditor : public AudioProcessorEditor, protected Timer, public Camo
void guiResize() final;
void guiRedraw() final;
-private:
+private:
void updatePatch();
void updateObjects();
-
CamomileAudioProcessor& m_processor;
OwnedArray m_objects;
OwnedArray m_labels;
diff --git a/Source/PluginEditorComponents.cpp b/Source/PluginEditorComponents.cpp
index 58cb0047..500c1817 100644
--- a/Source/PluginEditorComponents.cpp
+++ b/Source/PluginEditorComponents.cpp
@@ -46,11 +46,14 @@ class AboutCamomile : public TextEditor
setPopupMenuEnabled(true);
setFont(CamoLookAndFeel::getDefaultFont());
setWantsKeyboardFocus(true);
-#if defined(JucePlugin_Build_VST) || defined(JucePlugin_Build_VST3)
- setText(String::createStringFromData(BinaryData::CreditsVST, BinaryData::CreditsVSTSize));
-#else
- setText(String::createStringFromData(BinaryData::CreditsAU, BinaryData::CreditsAUSize));
-#endif
+ if(PluginHostType::getPluginLoadedAs() == AudioProcessor::wrapperType_AudioUnit)
+ {
+ setText(String::createStringFromData(BinaryData::CreditsAU, BinaryData::CreditsAUSize));
+ }
+ else
+ {
+ setText(String::createStringFromData(BinaryData::CreditsVST, BinaryData::CreditsVSTSize));
+ }
}
private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AboutCamomile)
@@ -98,6 +101,13 @@ m_processor(processor), m_window(new CamomileEditorWindow())
m_petals.setOverlayColour(Colours::black);
m_petals.setAlpha(0.5f);
setBounds(3, 3, 18, 18);
+
+ m_window->setBounds(m_processor.getConsoleWindowBounds());
+}
+
+CamomileEditorButton::~CamomileEditorButton()
+{
+ m_processor.setConsoleWindowBounds(m_window->getBounds());
}
void CamomileEditorButton::buttonStateChanged()
@@ -112,7 +122,7 @@ void CamomileEditorButton::clicked()
m_window->toFront(true);
m_window->grabKeyboardFocus();
if(m_processor.getTrackProperties().name.isNotEmpty()) {
- m_window->setName(CamomileEnvironment::getPluginName() + ": " + m_processor.getTrackProperties().name); }
+ m_window->setName(String(CamomileEnvironment::getPluginName()) + ": " + m_processor.getTrackProperties().name); }
}
else
{
@@ -126,7 +136,7 @@ void CamomileEditorButton::clicked()
tc->setTabBarDepth(24);
String const trackname = m_processor.getTrackProperties().name;
- String const name = CamomileEnvironment::getPluginName() + (trackname.isEmpty() ? "" : trackname);
+ String const name = String(CamomileEnvironment::getPluginName()) + (trackname.isEmpty() ? "" : trackname);
m_window->setName(name);
m_window->setContentOwned(tc, false);
m_window->addToDesktop();
diff --git a/Source/PluginEditorComponents.h b/Source/PluginEditorComponents.h
index ea44a57f..ca23aaaa 100644
--- a/Source/PluginEditorComponents.h
+++ b/Source/PluginEditorComponents.h
@@ -18,6 +18,7 @@ class CamomileEditorButton : public Button
{
public:
CamomileEditorButton(CamomileAudioProcessor& processor);
+ ~CamomileEditorButton();
void paintButton(Graphics& g, bool over, bool down) final {};
void buttonStateChanged() final;
void clicked() final;
diff --git a/Source/PluginEditorConsole.cpp b/Source/PluginEditorConsole.cpp
index d5ab9729..5f0b2586 100644
--- a/Source/PluginEditorConsole.cpp
+++ b/Source/PluginEditorConsole.cpp
@@ -112,7 +112,7 @@ void PluginEditorConsole::copySelection()
const size_t n = m_history.size(m_level);
for(size_t i = 0; i < n; ++i)
{
- text += m_history.get(m_level, static_cast(i)).second + "\n";
+ text += String(m_history.get(m_level, static_cast(i)).second + "\n");
}
}
else
@@ -120,7 +120,7 @@ void PluginEditorConsole::copySelection()
const int n = selection.size();
for(int i = 0; i < n; ++i)
{
- text += m_history.get(m_level, static_cast(selection[i])).second + "\n";
+ text += String(m_history.get(m_level, static_cast(selection[i])).second + "\n");
}
}
SystemClipboard::copyTextToClipboard(text);
diff --git a/Source/PluginEditorInteraction.cpp b/Source/PluginEditorInteraction.cpp
index 36f7a79a..f5d06174 100644
--- a/Source/PluginEditorInteraction.cpp
+++ b/Source/PluginEditorInteraction.cpp
@@ -130,36 +130,20 @@ bool CamomileEditorKeyManager::keyModifiersChanged(const ModifierKeys& modifiers
const std::string CamomileEditorMouseManager::string_gui = std::string("gui");
const std::string CamomileEditorMouseManager::string_mouse = std::string("mouse");
-void CamomileEditorMouseManager::startEdition() {
+void CamomileEditorMouseManager::startEdition()
+{
m_processor.enqueueMessages(string_gui, string_mouse, {1.f});
}
-void CamomileEditorMouseManager::stopEdition() {
+void CamomileEditorMouseManager::stopEdition()
+{
m_processor.enqueueMessages(string_gui, string_mouse, {0.f});
}
//////////////////////////////////////////////////////////////////////////////////////////////
-// PANEL MANAGER //
+// GUI ARRAY OWNER //
//////////////////////////////////////////////////////////////////////////////////////////////
-
-class CamomileEditorMessageWindow : public DocumentWindow
-{
-public:
- CamomileEditorMessageWindow() : DocumentWindow(String(""), Colours::lightgrey, DocumentWindow::closeButton, false)
- {
- setUsingNativeTitleBar(true);
- setBounds(50, 50, 300, 120);
- setResizable(true, true);
- setDropShadowEnabled(true);
- setVisible(true);
- }
-
- void closeButtonPressed() { removeFromDesktop(); }
-private:
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CamomileEditorMessageWindow)
-};
-
class GraphicalArrayOwner : public Component
{
public:
@@ -216,6 +200,29 @@ class GraphicalArrayOwner : public Component
GraphicalArray m_array;
};
+//////////////////////////////////////////////////////////////////////////////////////////////
+// CONSOLE WINDOWS //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+class CamomileEditorMessageWindow : public DocumentWindow
+{
+public:
+ CamomileEditorMessageWindow() : DocumentWindow(String(""), Colours::lightgrey, DocumentWindow::closeButton, false)
+ {
+ setUsingNativeTitleBar(true);
+ setBounds(50, 50, 300, 120);
+ setResizable(true, true);
+ setDropShadowEnabled(true);
+ setVisible(true);
+ }
+
+ void closeButtonPressed() { removeFromDesktop(); }
+private:
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CamomileEditorMessageWindow)
+};
+
+
//////////////////////////////////////////////////////////////////////////////////////////////
const std::string CamomileEditorMessageManager::string_openpanel = std::string("openpanel");
@@ -223,8 +230,14 @@ const std::string CamomileEditorMessageManager::string_savepanel = std::string("
const std::string CamomileEditorMessageManager::string_array = std::string("array");
const std::string CamomileEditorMessageManager::string_gui = std::string("gui");
-CamomileEditorMessageManager::CamomileEditorMessageManager(CamomileAudioProcessor& processor) : m_processor(processor), m_window(new CamomileEditorMessageWindow())
-{}
+CamomileEditorMessageManager::CamomileEditorMessageManager(CamomileAudioProcessor& processor) :
+m_processor(processor), m_window(new CamomileEditorMessageWindow())
+{
+}
+
+CamomileEditorMessageManager::~CamomileEditorMessageManager()
+{
+}
bool CamomileEditorMessageManager::processMessages()
{
@@ -271,7 +284,7 @@ bool CamomileEditorMessageManager::processMessages()
if(garray)
{
String const trackname = m_processor.getTrackProperties().name;
- String const name = CamomileEnvironment::getPluginName() + " - " + message[1]
+ String const name = String(CamomileEnvironment::getPluginName() + " - " + message[1])
+ (trackname.isEmpty() ? "" : trackname);
m_window->clearContentComponent();
m_window->setName(name);
diff --git a/Source/PluginEditorInteraction.h b/Source/PluginEditorInteraction.h
index 28e0f83c..cf820409 100644
--- a/Source/PluginEditorInteraction.h
+++ b/Source/PluginEditorInteraction.h
@@ -83,14 +83,13 @@ class CamomileEditorMessageManager
{
public:
CamomileEditorMessageManager(CamomileAudioProcessor& processor);
- virtual ~CamomileEditorMessageManager() {}
+ virtual ~CamomileEditorMessageManager();
protected:
bool processMessages();
private:
virtual void guiResize() = 0;
virtual void guiRedraw() = 0;
-
CamomileAudioProcessor& m_processor;
ScopedPointer m_window;
static const std::string string_openpanel;
diff --git a/Source/PluginEnvironment.cpp b/Source/PluginEnvironment.cpp
index 22210857..8e52b38e 100644
--- a/Source/PluginEnvironment.cpp
+++ b/Source/PluginEnvironment.cpp
@@ -76,15 +76,17 @@ bool CamomileEnvironment::isTailLengthInitialized() { return get().state.test(in
bool CamomileEnvironment::wantsAutoReload() { return get().auto_reload; }
+bool CamomileEnvironment::hasAutoProgram() { return get().m_auto_program; }
+
//////////////////////////////////////////////////////////////////////////////////////////////
// PROGRAMS //
//////////////////////////////////////////////////////////////////////////////////////////////
-std::vector const& CamomileEnvironment::getPrograms() { return get().programs; }
+std::vector const& CamomileEnvironment::getPrograms() { return get().m_programs; }
-std::vector const& CamomileEnvironment::getParams() { return get().params; }
+std::vector const& CamomileEnvironment::getParams() { return get().m_params; }
-std::vector> const& CamomileEnvironment::getBuses() { return get().buses; }
+std::vector const& CamomileEnvironment::getBusesLayouts() { return get().m_buses_layouts; }
std::vector const& CamomileEnvironment::getErrors() { return get().errors; }
@@ -227,15 +229,19 @@ CamomileEnvironment::CamomileEnvironment()
{
if(entry.first == "param")
{
- params.push_back(CamomileParser::getString(entry.second));
+ m_params.push_back(entry.second);
}
else if(entry.first == "program")
{
- programs.push_back(CamomileParser::getString(entry.second));
+ m_programs.push_back(CamomileParser::getString(entry.second));
}
else if(entry.first == "bus")
{
- buses.push_back(CamomileParser::getTwoIntegers(entry.second));
+ m_buses.push_back(CamomileParser::getTwoUnsignedIntegers(entry.second));
+ }
+ else if(entry.first == "iolayout")
+ {
+ m_buses_layouts.push_back(CamomileParser::getBuses(entry.second));
}
else if(entry.first == "midiin")
{
@@ -321,6 +327,13 @@ CamomileEnvironment::CamomileEnvironment()
auto_reload = CamomileParser::getBool(entry.second);
state.set(init_auto_reload);
}
+ else if(entry.first == "autoprogram")
+ {
+ if(state.test(init_auto_program))
+ throw std::string("already defined");
+ m_auto_program = CamomileParser::getBool(entry.second);
+ state.set(init_auto_program);
+ }
else if(entry.first == "type")
{
if(state.test(init_type))
@@ -361,12 +374,45 @@ CamomileEnvironment::CamomileEnvironment()
}
}
- if(!state.test(init_code)) {
- errors.push_back("code not defined."); }
- if(!state.test(init_type)) {
- errors.push_back("type not defined."); }
- if(!state.test(init_compatibilty)) {
- errors.push_back("compatibility not defined."); }
+ //////////////////////////////////////////////////////////////////////////////////////////
+ if(!m_buses.empty())
+ {
+ m_buses_layouts.insert(m_buses_layouts.begin(), m_buses);
+ m_buses.clear();
+ //errors.push_back("compatibility mode used: bus property will be deprecated, please use buses");
+ }
+ size_t max_ios = 0;
+ for(auto const& clayout : m_buses_layouts)
+ {
+ for(auto const& cbus : clayout)
+ {
+ max_ios = std::max(max_ios, std::max(cbus.first, cbus.second));
+ }
+ }
+ if(!midi_only && !max_ios)
+ {
+ m_buses_layouts.push_back({{2, 2}});
+ errors.push_back("no buses layout defined, add default buses layout 2 2");
+ }
+ else if(midi_only && max_ios)
+ {
+ m_buses_layouts.clear();
+ errors.push_back("buses layout definition not accepted with midi only option");
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////
+
+ if(!state.test(init_code))
+ {
+ errors.push_back("code not defined.");
+ }
+ if(!state.test(init_type))
+ {
+ errors.push_back("type not defined.");
+ }
+ if(!state.test(init_compatibilty))
+ {
+ errors.push_back("compatibility not defined.");
+ }
else
{
size_t vpatch = 0, vplugin = 0;
@@ -382,14 +428,9 @@ CamomileEnvironment::CamomileEnvironment()
errors.push_back("patch has been created for a newer version of the plugin v" + plugin_version);
}
}
- if(buses.empty())
- {
- buses.push_back({2, 2});
- errors.push_back("no bus defined, add default bus 2 2");
- }
- if(programs.empty())
+ if(m_programs.empty())
{
- programs.push_back("");
+ m_programs.push_back("");
}
}
diff --git a/Source/PluginEnvironment.h b/Source/PluginEnvironment.h
index 5730b3cd..779d300c 100644
--- a/Source/PluginEnvironment.h
+++ b/Source/PluginEnvironment.h
@@ -21,6 +21,8 @@ class CamomileEnvironment
{
public:
+ typedef std::pair bus;
+ typedef std::vector buses_layout;
//////////////////////////////////////////////////////////////////////////////////////////
// GLOBAL //
//////////////////////////////////////////////////////////////////////////////////////////
@@ -89,9 +91,12 @@ class CamomileEnvironment
//! @brief Gets if the patch wants Key events.
static bool wantsKey();
- //! @brief Gets if the plugin want to auto reload the patch.
+ //! @brief Gets if the plugin wants to auto reload the patch.
static bool wantsAutoReload();
+ //! @brief Gets if the plugin wants to store the parameters within the programs.
+ static bool hasAutoProgram();
+
//////////////////////////////////////////////////////////////////////////////////////////
// PROGRAMS //
//////////////////////////////////////////////////////////////////////////////////////////
@@ -102,8 +107,8 @@ class CamomileEnvironment
//! @brief Gets the parameters.
static std::vector const& getParams();
- //! @brief Gets the channels buses supported.
- static std::vector> const& getBuses();
+ //! @brief Gets the channels buses layouts supported.
+ static std::vector const& getBusesLayouts();
//! @brief Gets the parsing errors.
static std::vector const& getErrors();
@@ -132,7 +137,7 @@ class CamomileEnvironment
std::string image_name = "";
bool auto_reload = false;
bool valid = false;
- std::bitset<13> state;
+ std::bitset<14> state;
bool midi_in_support = false;
bool midi_out_support = false;
@@ -141,10 +146,12 @@ class CamomileEnvironment
bool midi_only = false;
float tail_length_sec = 0.f;
int latency_samples = 0;
+ bool m_auto_program = true;
- std::vector programs;
- std::vector params;
- std::vector> buses;
+ std::vector m_programs;
+ std::vector m_params;
+ std::vector> m_buses;
+ std::vector m_buses_layouts;
std::vector errors;
@@ -162,6 +169,7 @@ class CamomileEnvironment
init_desc = 9,
init_key = 10,
init_compatibilty = 11,
- init_auto_reload = 12
+ init_auto_reload = 12,
+ init_auto_program = 13
};
};
diff --git a/Source/PluginParser.cpp b/Source/PluginParser.cpp
index 2b080476..4f8f4dcb 100644
--- a/Source/PluginParser.cpp
+++ b/Source/PluginParser.cpp
@@ -150,6 +150,71 @@ std::pair CamomileParser::getTwoIntegers(std::string const& value)
throw std::string("is empty");
}
+std::pair CamomileParser::getTwoUnsignedIntegers(std::string const& value)
+{
+ if(!value.empty())
+ {
+ if(isdigit(static_cast(value[0])))
+ {
+ size_t next = value.find_first_of(' ');
+ if(next != std::string::npos)
+ {
+ next = value.find_first_not_of(' ', next+1);
+ if(next != std::string::npos && isdigit(static_cast(value[next])))
+ {
+ return std::pair(static_cast(atol(value.c_str())), static_cast(atol(value.c_str()+next)));
+ }
+ }
+ }
+ throw std::string("'") + value + std::string("' not a double unsigned integer");
+ }
+ throw std::string("is empty");
+}
+
+size_t CamomileParser::getNios(std::string const& value, size_t& pos)
+{
+ size_t nios = 0;
+ size_t next = value.find_first_of("0123456789", pos);
+ if(next == std::string::npos)
+ {
+ std::swap(next, pos);
+ throw std::string("'") + value.at(next) + std::string("' not valid for buses at ") + std::to_string(next);
+ }
+ nios = static_cast(atol(value.c_str()+next));
+ pos = value.find_first_not_of("0123456789", next+1);
+ if(pos != std::string::npos)
+ {
+ pos = value.find_first_of("0123456789", pos);
+ }
+ return nios;
+}
+
+std::pair CamomileParser::getBus(std::string const& value, size_t& pos)
+{
+ size_t input = getNios(value, pos);
+ if(pos == std::string::npos)
+ {
+ throw std::string("'") + value + std::string("' missing second value");
+ }
+ size_t const output = getNios(value, pos);
+ return {input, output};
+}
+
+std::vector> CamomileParser::getBuses(std::string const& value)
+{
+ std::vector> pairs;
+ if(!value.empty())
+ {
+ size_t pos = 0;
+ while (pos != std::string::npos)
+ {
+ pairs.push_back(getBus(value, pos));
+ }
+ return pairs;
+ }
+ throw std::string("is empty");
+}
+
std::map CamomileParser::getOptions(std::string const& value)
{
std::map options;
diff --git a/Source/PluginParser.h b/Source/PluginParser.h
index acd2770d..053e3e9a 100644
--- a/Source/PluginParser.h
+++ b/Source/PluginParser.h
@@ -27,6 +27,13 @@ class CamomileParser
static float getFloat(std::string const& value);
static unsigned int getHexadecimalCode(std::string const& value);
static std::string const& getString(std::string const& value);
- static std::pair getTwoIntegers(std::string const& value);
+ static std::pair getTwoIntegers(std::string const& value);
+ static std::pair getTwoUnsignedIntegers(std::string const& value);
+
+ static std::vector> getBuses(std::string const& value);
+
+private:
+ static size_t getNios(std::string const& value, size_t& pos);
+ static std::pair getBus(std::string const& value, size_t& pos);
};
diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp
index 920dfc97..881c521f 100644
--- a/Source/PluginProcessor.cpp
+++ b/Source/PluginProcessor.cpp
@@ -1,127 +1,105 @@
-/*
- // Copyright (c) 2015-2018 Pierre Guillot.
- // For information on usage and redistribution, and for a DISCLAIMER OF ALL
- // WARRANTIES, see the file, "LICENSE.txt," in this distribution.
-*/
-
-#include "PluginProcessor.h"
-#include "PluginParser.h"
-#include "PluginParameter.h"
-#include "PluginEditor.h"
-#include
-#include
-
-// ======================================================================================== //
-// PROCESSOR //
-// ======================================================================================== //
-
-AudioProcessor::BusesProperties CamomileAudioProcessor::getBusesProperties()
-{
- BusesProperties ioconfig;
- auto& buses_supported = CamomileEnvironment::getBuses();
- if(buses_supported.empty())
- {
- return BusesProperties().withInput("Input", AudioChannelSet::stereo())
- .withOutput ("Output", AudioChannelSet::stereo());
- }
- size_t i = 1;
- for(auto& buse : buses_supported)
- {
-#if JucePlugin_Build_VST3
- if(buse.first)
- ioconfig.addBus(true, String("Input ") + String(i), AudioChannelSet::canonicalChannelSet(buse.first), i == 1);
- if(buse.second)
- ioconfig.addBus(false, String("Ouput ") + String(i), AudioChannelSet::canonicalChannelSet(buse.second), i == 1);
-#else
- if(buse.first)
- ioconfig.addBus(true, String("Input ") + String(i), AudioChannelSet::discreteChannels(buse.first), i == 1);
- if(buse.second)
- ioconfig.addBus(false, String("Ouput ") + String(i), AudioChannelSet::discreteChannels(buse.second), i == 1);
-#endif
- ++i;
- }
- return ioconfig;
-}
-
+/*
+ // Copyright (c) 2015-2018 Pierre Guillot.
+ // For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ // WARRANTIES, see the file, "LICENSE.txt," in this distribution.
+*/
+
+#include "PluginProcessor.h"
+#include "PluginParser.h"
+#include "PluginParameter.h"
+#include "PluginEditor.h"
+#include "PluginEnvironment.h"
+
+#include
+#include
+
+// ======================================================================================== //
+// PROCESSOR //
+// ======================================================================================== //
+
CamomileAudioProcessor::CamomileAudioProcessor() :
-AudioProcessor(getBusesProperties()),
-pd::Instance("camomile"),
-m_programs(CamomileEnvironment::getPrograms())
-{
- add(ConsoleLevel::Normal, std::string("Camomile ") + std::string(JucePlugin_VersionString)
- + std::string(" for Pd ") + CamomileEnvironment::getPdVersion());
- for(auto const& error : CamomileEnvironment::getErrors()) {
- add(ConsoleLevel::Error, std::string("camomile ") + error); }
-
- if(CamomileEnvironment::isValid())
- {
- m_atoms_param.resize(2);
- m_atoms_playhead.reserve(3);
+AudioProcessor(getDefaultBusesProperties(PluginHostType::getPluginLoadedAs() == AudioProcessor::wrapperType_VST3)),
+pd::Instance("camomile"), CamomileConsole(4),
+m_name(CamomileEnvironment::getPluginName()),
+m_accepts_midi(CamomileEnvironment::wantsMidi()),
+m_produces_midi(CamomileEnvironment::producesMidi()),
+m_is_midi_effect(CamomileEnvironment::isMidiOnly()),
+m_tail_length(static_cast(CamomileEnvironment::getTailLengthSeconds())),
+m_programs(CamomileEnvironment::getPrograms())
+{
+ add(ConsoleLevel::Normal, std::string("Camomile ") + std::string(JucePlugin_VersionString)
+ + std::string(" for Pd ") + CamomileEnvironment::getPdVersion());
+ for(auto const& error : CamomileEnvironment::getErrors()) {
+ add(ConsoleLevel::Error, std::string("camomile ") + error); }
+ logBusesLayoutsInformation();
+ if(CamomileEnvironment::isValid())
+ {
+ m_atoms_param.resize(2);
+ m_atoms_playhead.reserve(3);
m_atoms_playhead.resize(1);
m_midi_buffer_in.ensureSize(2048);
m_midi_buffer_out.ensureSize(2048);
- m_midi_buffer_temp.ensureSize(2048);
- prepareDSP(getTotalNumInputChannels(), getTotalNumOutputChannels(), getSampleRate());
- setLatencySamples(CamomileEnvironment::getLatencySamples() + Instance::getBlockSize());
- m_programs = CamomileEnvironment::getPrograms();
-
- auto const& params = CamomileEnvironment::getParams();
- for(size_t i = 0; i < params.size(); ++i)
- {
- AudioProcessorParameter* p = nullptr;
- try
- {
- p = CamomileAudioParameter::parse(params[i]);
- }
- catch(std::string const& message)
- {
- add(ConsoleLevel::Error, std::string("camomile parameter ") + std::to_string(i+1) + std::string(": ") + message);
- }
+ m_midi_buffer_temp.ensureSize(2048);
+ prepareDSP(getTotalNumInputChannels(), getTotalNumOutputChannels(), getSampleRate());
+ setLatencySamples(CamomileEnvironment::getLatencySamples() + Instance::getBlockSize());
+
+ auto const& params = CamomileEnvironment::getParams();
+ for(size_t i = 0; i < params.size(); ++i)
+ {
+ AudioProcessorParameter* p = nullptr;
+ try
+ {
+ p = CamomileAudioParameter::parse(params[i]);
+ }
+ catch(std::string const& message)
+ {
+ add(ConsoleLevel::Error, std::string("camomile parameter ") + std::to_string(i+1) + std::string(": ") + message);
+ }
if(p)
- {
+ {
addParameter(p);
- }
- }
- m_params_states.resize(getParameters().size());
- std::fill(m_params_states.begin(), m_params_states.end(), false);
- openPatch(CamomileEnvironment::getPatchPath(), CamomileEnvironment::getPatchName());
- processMessages();
- }
-}
-
-
-void CamomileAudioProcessor::setCurrentProgram(int index)
-{
- if(static_cast(index) < m_programs.size())
- {
- m_program_current = index;
- if(isSuspended())
- {
- sendFloat("program", static_cast(index+1));
- processMessages();
- }
- else
- {
- enqueueMessages("program", "float", {static_cast(index+1)});
- }
- }
-}
-
-const String CamomileAudioProcessor::getProgramName (int index)
-{
+ }
+ }
+ m_params_states.resize(getParameters().size());
+ std::fill(m_params_states.begin(), m_params_states.end(), false);
+ openPatch(CamomileEnvironment::getPatchPath(), CamomileEnvironment::getPatchName());
+ processMessages();
+ }
+}
+
+
+void CamomileAudioProcessor::setCurrentProgram(int index)
+{
+ if(static_cast(index) < m_programs.size())
+ {
+ m_program_current = index;
+ if(isSuspended())
+ {
+ sendFloat("program", static_cast(index+1));
+ processMessages();
+ }
+ else
+ {
+ enqueueMessages("program", "float", {static_cast(index+1)});
+ }
+ }
+}
+
+const String CamomileAudioProcessor::getProgramName (int index)
+{
if(static_cast(index) < m_programs.size())
{
return String(m_programs[index]);
- }
- return String();
-}
-
-void CamomileAudioProcessor::changeProgramName(int index, const String& newName)
-{
+ }
+ return String();
+}
+
+void CamomileAudioProcessor::changeProgramName(int index, const String& newName)
+{
if(static_cast(index) < m_programs.size())
{
m_programs[index] = newName.toStdString();
- }
+ }
}
void CamomileAudioProcessor::fileChanged()
@@ -131,91 +109,53 @@ void CamomileAudioProcessor::fileChanged()
void CamomileAudioProcessor::reloadPatch()
{
+ MemoryBlock xml;
suspendProcessing(true);
releaseResources();
+ dequeueMessages();
+ {
+ const MessageManagerLock mmLock;
+ getStateInformation(xml);
+ }
openPatch(CamomileEnvironment::getPatchPath(), CamomileEnvironment::getPatchName());
- processMessages();
+ {
+ const MessageManagerLock mmLock;
+ setStateInformation(xml.getData(), static_cast(xml.getSize()));
+ }
prepareToPlay(getSampleRate(), AudioProcessor::getBlockSize());
- AudioProcessorEditor* editor = getActiveEditor();
- if(editor)
+ if(CamomileEditor* editor = dynamic_cast(getActiveEditor()))
{
- CamomileEditor* cd = dynamic_cast(editor);
- if(cd)
- {
- cd->guiResize();
- }
+ const MessageManagerLock mmLock;
+ editor->guiResize();
}
add(ConsoleLevel::Normal, "camomile: the patch \"" + CamomileEnvironment::getPatchName() + "\" has been reloaded");
suspendProcessing(false);
-}
-
-//==============================================================================
-
-bool CamomileAudioProcessor::isBusesLayoutSupported(const BusesLayout& layouts) const
-{
- const int nins = layouts.getMainInputChannels();
- const int nouts = layouts.getMainOutputChannels();
- auto& buses_supported = CamomileEnvironment::getBuses();
- if(buses_supported.empty())
- {
- return nins <= 2 && nouts <= 2;
- }
- for(auto& buse : buses_supported)
- {
- if(buse.first == nins && buse.second == nouts)
- {
- return true;
- }
- }
- return false;
-}
+}
+
+//==============================================================================
-void CamomileAudioProcessor::sendBusInformation(Bus const *bus)
+void CamomileAudioProcessor::prepareToPlay(double sampleRate, int samplesPerBlock)
{
- if(bus && bus->isEnabled())
- {
- std::string const name = bus->getName().toStdString();
- auto const& layout = bus->getDefaultLayout();
- String description = layout.getDescription().toLowerCase();
- if(description.contains("discrete")) { description = "discrete"; }
- sendMessage(std::string("bus"), bus->isInput() ? std::string("input") : std::string("output"),
- {static_cast(layout.size()), description.toStdString(), name});
- }
-}
-
-void CamomileAudioProcessor::prepareToPlay(double sampleRate, int samplesPerBlock)
-{
- prepareDSP(getTotalNumInputChannels(), getTotalNumOutputChannels(), sampleRate);
-
- {
- // For backward compatibility can be deprecated
- sendMessage(std::string("channels"), std::string("inputs"),
- {static_cast(getTotalNumInputChannels())});
- sendMessage(std::string("channels"), std::string("outputs"),
- {static_cast(getTotalNumOutputChannels())});
- }
- const int nbuses = std::max(getBusCount(true), getBusCount(false));
- for(int i = 0; i < nbuses; ++i)
- {
- sendBusInformation(getBus(true, i));
- sendBusInformation(getBus(false, i));
- }
-
+ prepareDSP(getTotalNumInputChannels(), getTotalNumOutputChannels(), sampleRate);
+ sendCurrentBusesLayoutInformation();
m_audio_advancement = 0;
- m_midi_advancement = 0;
- m_audio_buffer_in.resize(getTotalNumInputChannels() * Instance::getBlockSize());
- m_audio_buffer_out.resize(getTotalNumOutputChannels() * Instance::getBlockSize());
+ const size_t blksize = static_cast(Instance::getBlockSize());
+ const size_t nins = std::max(static_cast(getTotalNumInputChannels()), static_cast(2));
+ const size_t nouts = std::max(static_cast(getTotalNumOutputChannels()), static_cast(2));
+ m_audio_buffer_in.resize(nins * blksize);
+ m_audio_buffer_out.resize(nouts * blksize);
std::fill(m_audio_buffer_out.begin(), m_audio_buffer_out.end(), 0.f);
std::fill(m_audio_buffer_in.begin(), m_audio_buffer_in.end(), 0.f);
m_midi_buffer_in.clear();
m_midi_buffer_out.clear();
m_midi_buffer_temp.clear();
startDSP();
- processMessages();
-}
-
-void CamomileAudioProcessor::releaseResources()
-{
+ processMessages();
+ processPrints();
+}
+
+void CamomileAudioProcessor::releaseResources()
+{
releaseDSP();
processMessages();
m_audio_buffer_in.clear();
@@ -223,7 +163,6 @@ void CamomileAudioProcessor::releaseResources()
std::fill(m_audio_buffer_out.begin(), m_audio_buffer_out.end(), 0.f);
std::fill(m_audio_buffer_in.begin(), m_audio_buffer_in.end(), 0.f);
m_audio_advancement = 0;
- m_midi_advancement = 0;
}
void CamomileAudioProcessor::processInternal()
@@ -277,7 +216,7 @@ void CamomileAudioProcessor::processInternal()
//////////////////////////////////////////////////////////////////////////////////////////
// MIDI IN //
//////////////////////////////////////////////////////////////////////////////////////////
- if(CamomileEnvironment::wantsMidi())
+ if(m_accepts_midi)
{
MidiMessage message;
MidiBuffer::Iterator it(m_midi_buffer_in);
@@ -344,35 +283,34 @@ void CamomileAudioProcessor::processInternal()
//////////////////////////////////////////////////////////////////////////////////////////
// MIDI OUT //
//////////////////////////////////////////////////////////////////////////////////////////
- if(CamomileEnvironment::producesMidi())
+ if(m_produces_midi)
{
m_midi_buffer_out.clear();
processMidi();
}
-}
-
-void CamomileAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
-{
+}
+
+void CamomileAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
+{
ScopedNoDenormals noDenormals;
- const int blocksize = Instance::getBlockSize();
+ const int blocksize = Instance::getBlockSize();
const int nsamples = buffer.getNumSamples();
const int adv = m_audio_advancement >= 64 ? 0 : m_audio_advancement;
const int nleft = blocksize - adv;
const int nins = getTotalNumInputChannels();
- const int nouts = getTotalNumOutputChannels();
- const float **bufferin = buffer.getArrayOfReadPointers();
- float **bufferout = buffer.getArrayOfWritePointers();
-
-
- for(int i = nins; i < nouts; ++i)
- {
- buffer.clear(i, 0, nsamples);
+ const int nouts = getTotalNumOutputChannels();
+ const float **bufferin = buffer.getArrayOfReadPointers();
+ float **bufferout = buffer.getArrayOfWritePointers();
+ const bool midi_consume = m_accepts_midi;
+ const bool midi_produce = m_produces_midi;
+
+ for(int i = nins; i < nouts; ++i)
+ {
+ buffer.clear(i, 0, nsamples);
}
-#ifdef DEBUG
- std::cout <<"\n\nprocess: (" << reinterpret_cast(this) <<")\n";
- std::cout << "start: "<< nsamples << "samples with "<< adv <<"samples of advancement\n";
-#endif
+ //////////////////////////////////////////////////////////////////////////////////////////
+
// If the current number of samples in this block
// is inferior to the number of samples required
if(nsamples < nleft)
@@ -389,29 +327,28 @@ void CamomileAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer&
const int index = j*blocksize+adv;
std::copy_n(m_audio_buffer_out.data()+index, nsamples, bufferout[j]);
}
- if(CamomileEnvironment::wantsMidi())
+ if(midi_consume)
{
m_midi_buffer_in.addEvents(midiMessages, 0, nsamples, adv);
}
- if(CamomileEnvironment::producesMidi())
+ if(midi_produce)
{
midiMessages.clear();
- midiMessages.addEvents(m_midi_buffer_out, adv, nsamples, 0);
+ midiMessages.addEvents(m_midi_buffer_out, adv, nsamples, -adv);
}
m_audio_advancement += nsamples;
-#ifdef DEBUG
- std::cout << "not enough: " << m_audio_advancement <<"samples of advancement\n";
-#endif
}
// If the current number of samples in this block
// is superior to the number of samples required
else
{
+ //////////////////////////////////////////////////////////////////////////////////////
+
// we save the missing input samples, we output
// the missing samples of the previous tick and
// we call DSP perform method.
- MidiBuffer const& midiin = CamomileEnvironment::producesMidi() ? m_midi_buffer_temp : midiMessages;
- if(CamomileEnvironment::producesMidi())
+ MidiBuffer const& midiin = midi_produce ? m_midi_buffer_temp : midiMessages;
+ if(midi_produce)
{
m_midi_buffer_temp.swapWith(midiMessages);
midiMessages.clear();
@@ -427,29 +364,24 @@ void CamomileAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer&
const int index = j*blocksize+adv;
std::copy_n(m_audio_buffer_out.data()+index, nleft, bufferout[j]);
}
- if(CamomileEnvironment::wantsMidi())
+ if(midi_consume)
{
m_midi_buffer_in.addEvents(midiin, 0, nleft, adv);
}
- if(CamomileEnvironment::producesMidi())
+ if(midi_produce)
{
- midiMessages.addEvents(m_midi_buffer_out, adv, nleft, 0);
- m_midi_advancement = 0;
+ midiMessages.addEvents(m_midi_buffer_out, adv, nleft, -adv);
}
m_audio_advancement = 0;
processInternal();
-#ifdef DEBUG
- std::cout << "left:" << nleft <<"samples\n";
-#endif
+ //////////////////////////////////////////////////////////////////////////////////////
+
// If there are other DSP ticks that can be
// performed, then we do it now.
int pos = nleft;
while((pos + blocksize) <= nsamples)
{
-#ifdef DEBUG
- std::cout << "block\n";
-#endif
for(int j = 0; j < nins; ++j)
{
const int index = j*blocksize;
@@ -460,28 +392,26 @@ void CamomileAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer&
const int index = j*blocksize;
std::copy_n(m_audio_buffer_out.data()+index, blocksize, bufferout[j]+pos);
}
- if(CamomileEnvironment::wantsMidi())
+ if(midi_consume)
{
m_midi_buffer_in.addEvents(midiin, pos, blocksize, 0);
}
- if(CamomileEnvironment::producesMidi())
+ if(midi_produce)
{
midiMessages.addEvents(m_midi_buffer_out, 0, blocksize, pos);
- m_midi_advancement = pos;
}
processInternal();
pos += blocksize;
}
+ //////////////////////////////////////////////////////////////////////////////////////
+
// If there are samples that can't be
// processed, then save them for later
// and outputs the remaining samples
const int remaining = nsamples - pos;
if(remaining > 0)
{
-#ifdef DEBUG
- std::cout << "remain:" << remaining <<"samples\n";
-#endif
for(int j = 0; j < nins; ++j)
{
const int index = j*blocksize;
@@ -492,457 +422,66 @@ void CamomileAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer&
const int index = j*blocksize;
std::copy_n(m_audio_buffer_out.data()+index, remaining, bufferout[j]+pos);
}
- if(CamomileEnvironment::wantsMidi())
+ if(midi_consume)
{
m_midi_buffer_in.addEvents(midiin, pos, remaining, 0);
}
- if(CamomileEnvironment::producesMidi())
+ if(midi_produce)
{
midiMessages.addEvents(m_midi_buffer_out, 0, remaining, pos);
- m_midi_advancement = pos;
}
m_audio_advancement = remaining;
}
- }
+ }
}
void CamomileAudioProcessor::processBlockBypassed (AudioBuffer& buffer, MidiBuffer& midiMessages)
{
dequeueMessages();
processMessages();
- AudioProcessor::processBlockBypassed(buffer, midiMessages);
-}
-
-void CamomileAudioProcessor::receiveMessage(const std::string& msg, const std::vector& list)
-{
- if(msg == std::string("param"))
- {
- if(list.size() >= 2 && list[0].isSymbol() && list[1].isFloat())
- {
- std::string const method = list[0].getSymbol();
- int const index = static_cast(list[1].getFloat()) - 1;
- if(method == "set")
- {
- if(list.size() >= 3 && list[2].isFloat())
- {
- CamomileAudioParameter* param = static_cast(getParameters()[index]);
- if(param)
- {
- param->setOriginalScaledValueNotifyingHost(list[2].getFloat());
- if(list.size() > 3) { add(ConsoleLevel::Error,
- "camomile parameter set method extra arguments"); }
- }
- else { add(ConsoleLevel::Error,
- "camomile parameter set method index: out of range"); }
- }
- else { add(ConsoleLevel::Error,
- "camomile parameter set method: wrong argument"); }
- }
- else if(method == "change")
- {
- if(list.size() >= 3 && list[2].isFloat())
- {
- AudioProcessorParameter* param = getParameters()[index];
- if(param)
- {
- if(list[2].getFloat() > std::numeric_limits::epsilon())
- {
- if(m_params_states[index])
- {
- add(ConsoleLevel::Error,
- "camomile parameter change " + std::to_string(index+1) + " already started");
- }
- else
- {
- param->beginChangeGesture();
- m_params_states[index] = true;
- if(list.size() > 3) { add(ConsoleLevel::Error,
- "camomile parameter change method extra arguments"); }
- }
- }
- else
- {
- if(!m_params_states[index])
- {
- add(ConsoleLevel::Error,
- "camomile parameter change " + std::to_string(index+1) + " not started");
- }
- else
- {
- param->endChangeGesture();
- m_params_states[index] = false;
- if(list.size() > 3) { add(ConsoleLevel::Error,
- "camomile parameter change method extra arguments"); }
- }
- }
- }
- else { add(ConsoleLevel::Error,
- "camomile parameter change method index: out of range"); }
- }
- else { add(ConsoleLevel::Error,
- "camomile parameter change method: wrong argument"); }
- }
- else { add(ConsoleLevel::Error,
- "camomile param no method: " + method); }
- }
- else { add(ConsoleLevel::Error,
- "camomile param error syntax: method index..."); }
- }
- else if(msg == std::string("openpanel"))
- {
- parseOpenPanel(list);
- }
- else if(msg == std::string("savepanel"))
- {
- parseSavePanel(list);
- }
- else if(msg == std::string("array"))
- {
- parseArray(list);
- }
- else if(msg == std::string("save"))
- {
- parseSaveInformation(list);
- }
- else if(msg == std::string("gui"))
+ const int nsamples = buffer.getNumSamples();
+ const int nins = getTotalNumInputChannels();
+ const int nouts = getTotalNumOutputChannels();
+ for(int i = nins; i < nouts; ++i)
{
- parseGui(list);
+ buffer.clear(i, 0, nsamples);
}
- else if(msg == std::string("audio"))
- {
- parseAudio(list);
- }
- else { add(ConsoleLevel::Error, "camomile unknow message : " + msg); }
-}
+}
-void CamomileAudioProcessor::parseOpenPanel(const std::vector& list)
+bool CamomileAudioProcessor::dequeueGui(MessageGui& message)
{
- if(list.size() >= 1)
- {
- if(list[0].isSymbol())
- {
- if(list.size() > 1)
- {
- if(list[1].isSymbol())
- {
- if(list[1].getSymbol() == "-s")
- {
- m_queue_gui.try_enqueue({std::string("openpanel"), list[0].getSymbol(), std::string("-s")});
- }
- else if(list[0].getSymbol() == "-s")
- {
- m_queue_gui.try_enqueue({std::string("openpanel"), list[1].getSymbol(), std::string("-s")});
- }
- else
- {
- add(ConsoleLevel::Error, "camomile openpanel one argument must be a flag \"-s\"");
- }
- if(list.size() > 2)
- {
- add(ConsoleLevel::Error, "camomile openpanel method extra arguments");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile openpanel second argument must be a symbol");
- }
- }
- else
- {
- if(list[0].getSymbol() == "-s")
- {
- m_queue_gui.try_enqueue({std::string("openpanel"), std::string(), std::string("-s")});
- }
- else
- {
- m_queue_gui.try_enqueue({std::string("openpanel"), list[0].getSymbol(), std::string()});
- }
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile openpanel method argument must be a symbol");
- }
- }
- else
- {
- m_queue_gui.try_enqueue({std::string("openpanel"), std::string(), std::string()});
- }
+ return m_queue_gui.try_dequeue(message);
}
-void CamomileAudioProcessor::parseSavePanel(const std::vector& list)
+void CamomileAudioProcessor::messageEnqueued()
{
- if(list.size() >= 1)
+ if(isNonRealtime() || isSuspended())
{
- if(list[0].isSymbol())
- {
- if(list.size() > 1)
- {
- if(list[1].isSymbol())
- {
- if(list[1].getSymbol() == "-s")
- {
- m_queue_gui.try_enqueue({std::string("savepanel"), list[0].getSymbol(), std::string("-s")});
- }
- else if(list[0].getSymbol() == "-s")
- {
- m_queue_gui.try_enqueue({std::string("savepanel"), list[1].getSymbol(), std::string("-s")});
- }
- else
- {
- add(ConsoleLevel::Error, "camomile savepanel one argument must be a flag \"-s\"");
- }
- if(list.size() > 2)
- {
- add(ConsoleLevel::Error, "camomile savepanel method extra arguments");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile savepanel second argument must be a symbol");
- }
- }
- else
- {
- if(list[0].getSymbol() == "-s")
- {
- m_queue_gui.try_enqueue({std::string("savepanel"), std::string(), std::string("-s")});
- }
- else
- {
- m_queue_gui.try_enqueue({std::string("savepanel"), list[0].getSymbol(), std::string()});
- }
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile savepanel method argument must be a symbol");
- }
+ dequeueMessages();
+ processMessages();
}
else
{
- m_queue_gui.try_enqueue({std::string("savepanel"), std::string(), std::string()});
- }
-}
-
-void CamomileAudioProcessor::parseArray(const std::vector& list)
-{
- if(list.size() >= 1)
- {
- if(list[0].isSymbol())
+ const CriticalSection& cs = getCallbackLock();
+ if(cs.tryEnter())
{
- m_queue_gui.try_enqueue({std::string("array"), list[0].getSymbol(), ""});
- if(list.size() > 1)
- {
- add(ConsoleLevel::Error, "camomile array method extra arguments");
- }
+ dequeueMessages();
+ processMessages();
+ cs.exit();
}
- else { add(ConsoleLevel::Error, "camomile array method argument must be a symbol"); }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile array needs a name");
}
}
-void CamomileAudioProcessor::parseGui(const std::vector& list)
+//==============================================================================
+bool CamomileAudioProcessor::hasEditor() const
{
- if(list.size() >= 1)
- {
- if(list[0].isSymbol())
- {
- m_queue_gui.try_enqueue({std::string("gui"), list[0].getSymbol(), ""});
- if(list.size() > 1)
- {
- add(ConsoleLevel::Error, "camomile gui method extra arguments");
- }
- }
- else { add(ConsoleLevel::Error, "camomile gui method argument must be a symbol"); }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile gui needs a command");
- }
+ return true;
}
-void CamomileAudioProcessor::parseAudio(const std::vector& list)
+AudioProcessorEditor* CamomileAudioProcessor::createEditor()
{
- if(list.size() >= 1)
- {
- if(list[0].isSymbol())
- {
- if(list[0].getSymbol() == std::string("latency"))
- {
- if(list.size() >= 2 && list[1].isFloat())
- {
- const int latency = static_cast(list[1].getFloat());
- if(latency >= 0)
- {
- setLatencySamples(latency + Instance::getBlockSize());
- if(list.size() > 2)
- {
- add(ConsoleLevel::Error, "camomile audio method: latency option extra arguments");
- }
- if(CamomileEnvironment::isLatencyInitialized())
- {
- add(ConsoleLevel::Error, "camomile audio method: latency overwrites the preferences");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: latency must be positive or null");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: latency option expects a number");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: unknown option \"" + list[0].getSymbol() + "\"");
- }
- /*
- else if(list[0].getSymbol() == std::string("taillength"))
- {
- if(list.size() >= 2 && list[1].isFloat())
- {
- const float taillength = list[1].getFloat();
- if(taillength >= 0)
- {
- if(list.size() > 2)
- {
- add(ConsoleLevel::Error, "camomile audio method: taillength option extra arguments");
- }
- if(CamomileEnvironment::isTailLengthInitialized())
- {
- add(ConsoleLevel::Error, "camomile audio method: taillength overwrites the preferences");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: taillength must be positive or null");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: taillength option expects a number");
- }
- }
- */
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: first argument must be an option");
- }
- }
- else
- {
- add(ConsoleLevel::Error, "camomile audio method: expects arguments");
- }
+ return new CamomileEditor(*this);
}
-
-bool CamomileAudioProcessor::dequeueGui(MessageGui& message)
-{
- return m_queue_gui.try_dequeue(message);
-}
-
-void CamomileAudioProcessor::receiveNoteOn(const int channel, const int pitch, const int velocity)
-{
- if(velocity == 0) {
- m_midi_buffer_out.addEvent(MidiMessage::noteOff(channel, pitch, uint8(0)), m_midi_advancement); }
- else {
- m_midi_buffer_out.addEvent(MidiMessage::noteOn(channel, pitch, static_cast(velocity)), m_midi_advancement); }
-}
-
-void CamomileAudioProcessor::receiveControlChange(const int channel, const int controller, const int value)
-{
- m_midi_buffer_out.addEvent(MidiMessage::controllerEvent(channel, controller, value), m_midi_advancement);
-}
-
-void CamomileAudioProcessor::receiveProgramChange(const int channel, const int value)
-{
- m_midi_buffer_out.addEvent(MidiMessage::programChange(channel, value), m_midi_advancement);
-}
-
-void CamomileAudioProcessor::receivePitchBend(const int channel, const int value)
-{
- m_midi_buffer_out.addEvent(MidiMessage::pitchWheel(channel, value + 8192), m_midi_advancement);
-}
-
-void CamomileAudioProcessor::receiveAftertouch(const int channel, const int value)
-{
- m_midi_buffer_out.addEvent(MidiMessage::channelPressureChange(channel, value), m_midi_advancement);
-}
-
-void CamomileAudioProcessor::receivePolyAftertouch(const int channel, const int pitch, const int value)
-{
- m_midi_buffer_out.addEvent(MidiMessage::aftertouchChange(channel, pitch, value), m_midi_advancement);
-}
-
-void CamomileAudioProcessor::receiveMidiByte(const int port, const int byte)
-{
- m_midi_buffer_out.addEvent(MidiMessage(byte), m_midi_advancement);
-}
-
-void CamomileAudioProcessor::receivePrint(const std::string& message)
-{
- if(!message.empty())
- {
- if(!message.compare(0, 6, "error:"))
- {
- std::string const temp(message.begin()+7, message.end());
- add(ConsoleLevel::Error, temp);
- }
- else if(!message.compare(0, 11, "verbose(4):"))
- {
- std::string const temp(message.begin()+12, message.end());
- add(ConsoleLevel::Error, temp);
- }
- else if(!message.compare(0, 5, "tried"))
- {
- add(ConsoleLevel::Log, message);
- }
- else if(!message.compare(0, 16, "input channels ="))
- {
- add(ConsoleLevel::Log, message);
- }
- else
- {
- add(ConsoleLevel::Normal, message);
- }
- }
-}
-
-void CamomileAudioProcessor::messageEnqueued()
-{
- if(isNonRealtime() || isSuspended())
- {
- dequeueMessages();
- processMessages();
- }
- else
- {
- const CriticalSection& cs = getCallbackLock();
- if(cs.tryEnter())
- {
- dequeueMessages();
- processMessages();
- cs.exit();
- }
- }
-}
-
-//==============================================================================
-bool CamomileAudioProcessor::hasEditor() const
-{
- return true;
-}
-
-AudioProcessorEditor* CamomileAudioProcessor::createEditor()
-{
- return new CamomileEditor(*this);
-}
void CamomileAudioProcessor::parseSaveInformation(const std::vector& list)
{
@@ -1020,43 +559,73 @@ void CamomileAudioProcessor::loadInformation(XmlElement const& xml)
{
sendBang(std::string("load"));
}
-}
-
-void CamomileAudioProcessor::getStateInformation(MemoryBlock& destData)
+}
+
+void CamomileAudioProcessor::getStateInformation(MemoryBlock& destData)
{
- suspendProcessing(true);
+ suspendProcessing(true);
XmlElement xml(String("CamomileSettings"));
- m_temp_xml = &xml;
+ m_temp_xml = &xml;
CamomileAudioParameter::saveStateInformation(xml, getParameters());
sendBang(std::string("save"));
processMessages();
copyXmlToBinary(xml, destData);
m_temp_xml = nullptr;
- suspendProcessing(false);
-}
-
-void CamomileAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
+ XmlElement* cbounds = xml.createNewChildElement("console");
+ if(cbounds)
+ {
+ cbounds->setAttribute(String("x"), m_console_bounds.getX());
+ cbounds->setAttribute(String("y"), m_console_bounds.getX());
+ cbounds->setAttribute(String("width"), m_console_bounds.getWidth());
+ cbounds->setAttribute(String("height"), m_console_bounds.getHeight());
+ }
+
+ suspendProcessing(false);
+}
+
+void CamomileAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
{
- suspendProcessing(true);
- ScopedPointer xml(getXmlFromBinary(data, sizeInBytes));
- if(xml && xml->hasTagName("CamomileSettings"))
- {
- CamomileAudioParameter::loadStateInformation(*xml, getParameters());
- loadInformation(*xml);
+ suspendProcessing(true);
+ ScopedPointer xml(getXmlFromBinary(data, sizeInBytes));
+ if(xml && xml->hasTagName("CamomileSettings"))
+ {
+ if(CamomileEnvironment::hasAutoProgram())
+ {
+ CamomileAudioParameter::loadStateInformation(*xml, getParameters());
+ }
+ loadInformation(*xml);
+ XmlElement const* cbounds = xml->getChildByName(juce::StringRef("console"));
+ if(cbounds)
+ {
+ m_console_bounds.setX(cbounds->getIntAttribute(String("x")));
+ m_console_bounds.setY(cbounds->getIntAttribute(String("y")));
+ m_console_bounds.setWidth(cbounds->getIntAttribute(String("width")));
+ m_console_bounds.setHeight(cbounds->getIntAttribute(String("height")));
+ }
}
else
{
sendBang(std::string("load"));
}
- suspendProcessing(false);
-}
-
-void CamomileAudioProcessor::updateTrackProperties(const TrackProperties& properties)
-{
- m_track_properties = properties;
-}
-
-AudioProcessor* JUCE_CALLTYPE createPluginFilter()
-{
- return new CamomileAudioProcessor();
-}
+ suspendProcessing(false);
+}
+
+void CamomileAudioProcessor::updateTrackProperties(const TrackProperties& properties)
+{
+ m_track_properties = properties;
+}
+
+Rectangle CamomileAudioProcessor::getConsoleWindowBounds() const
+{
+ return m_console_bounds;
+}
+
+void CamomileAudioProcessor::setConsoleWindowBounds(Rectangle const& rect)
+{
+ m_console_bounds = rect;
+}
+
+AudioProcessor* JUCE_CALLTYPE createPluginFilter()
+{
+ return new CamomileAudioProcessor();
+}
diff --git a/Source/PluginProcessor.h b/Source/PluginProcessor.h
index 9e428777..cc7cc659 100644
--- a/Source/PluginProcessor.h
+++ b/Source/PluginProcessor.h
@@ -7,7 +7,6 @@
#pragma once
#include "../JuceLibraryCode/JuceHeader.h"
-#include "PluginEnvironment.h"
#include "PluginConsole.h"
#include "PluginFileWatcher.h"
#include "Pd/PdInstance.hpp"
@@ -16,28 +15,42 @@
// PROCESSOR //
// ======================================================================================== //
-
-class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, public CamomileConsole<4>, public CamomileFileWatcher
+class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, public CamomileConsole, public CamomileFileWatcher
{
public:
CamomileAudioProcessor();
- ~CamomileAudioProcessor() {}
-
- bool isBusesLayoutSupported (const BusesLayout& layouts) const final;
+ ~CamomileAudioProcessor() = default;
+
+ //////////////////////////////////////////////////////////////////////////////////////////
+ // AUDIO MANAGEMENT //
+ //////////////////////////////////////////////////////////////////////////////////////////
void prepareToPlay (double sampleRate, int samplesPerBlock) final;
void releaseResources() final;
void processBlock (AudioSampleBuffer&, MidiBuffer&) final;
void processBlockBypassed (AudioBuffer&, MidiBuffer&) final;
+ //////////////////////////////////////////////////////////////////////////////////////////
+ // BUSES LAYOUTS MANAGEMENT //
+ //////////////////////////////////////////////////////////////////////////////////////////
+ bool isBusesLayoutSupported (const BusesLayout& layouts) const final;
+private:
+ static BusesProperties getDefaultBusesProperties(const bool canonical);
+ void sendCurrentBusesLayoutInformation();
+ void logBusesLayoutsInformation();
+ bool canAddBus (bool isInput) const final;
+ bool canRemoveBus (bool isInput) const final;
+public:
+ //////////////////////////////////////////////////////////////////////////////////////////
+
AudioProcessorEditor* createEditor() final;
bool hasEditor() const final;
- const String getName() const final { return CamomileEnvironment::getPluginName(); }
- bool acceptsMidi() const final { return CamomileEnvironment::wantsMidi(); }
- bool producesMidi() const final { return CamomileEnvironment::producesMidi(); }
- bool isMidiEffect () const final { return CamomileEnvironment::isMidiOnly(); }
- double getTailLengthSeconds() const final { return static_cast(CamomileEnvironment::getTailLengthSeconds()); }
+ const String getName() const final { return m_name; }
+ bool acceptsMidi() const final { return m_accepts_midi; }
+ bool producesMidi() const final { return m_produces_midi; }
+ bool isMidiEffect () const final { return m_is_midi_effect; }
+ double getTailLengthSeconds() const final { return m_tail_length; }
int getNumPrograms() final { return static_cast(m_programs.size()); };
int getCurrentProgram() final { return m_program_current; }
@@ -48,6 +61,10 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
void getStateInformation (MemoryBlock& destData) final;
void setStateInformation (const void* data, int sizeInBytes) final;
+ //////////////////////////////////////////////////////////////////////////////////////////
+ // PURE DATA RECEIVE METHODS //
+ //////////////////////////////////////////////////////////////////////////////////////////
+
void receiveMessage(const std::string& msg, const std::vector& list) final;
void receiveNoteOn(const int channel, const int pitch, const int velocity) final;
void receiveControlChange(const int channel, const int controller, const int value) final;
@@ -58,6 +75,8 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
void receiveMidiByte(const int port, const int byte) final;
void receivePrint(const std::string& message) final;
+ //////////////////////////////////////////////////////////////////////////////////////////
+
void messageEnqueued() final;
void updateTrackProperties(const TrackProperties& properties) final;
const TrackProperties& getTrackProperties() const { return m_track_properties; }
@@ -68,6 +87,9 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
void fileChanged() final;
void reloadPatch();
+ Rectangle getConsoleWindowBounds() const;
+ void setConsoleWindowBounds(Rectangle const& rect);
+
enum ConsoleLevel
{
Fatal = 0,
@@ -77,11 +99,11 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
All = 4
};
+
private:
- static BusesProperties getBusesProperties();
- void sendBusInformation(Bus const *bus);
void loadInformation(XmlElement const& xml);
+ void parseProgram(const std::vector& list);
void parseSaveInformation(const std::vector& list);
void parseOpenPanel(const std::vector& list);
void parseSavePanel(const std::vector& list);
@@ -94,6 +116,12 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
typedef moodycamel::ReaderWriterQueue QueueGui;
+ String const m_name = String("Camomile");
+ bool const m_accepts_midi = false;
+ bool const m_produces_midi = false;
+ bool const m_is_midi_effect = false;
+ double const m_tail_length = 0.;
+
std::vector m_atoms_param;
std::vector m_atoms_playhead;
@@ -101,7 +129,6 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
std::vector m_audio_buffer_in;
std::vector m_audio_buffer_out;
- int m_midi_advancement;
MidiBuffer m_midi_buffer_in;
MidiBuffer m_midi_buffer_out;
MidiBuffer m_midi_buffer_temp;
@@ -113,5 +140,6 @@ class CamomileAudioProcessor : public AudioProcessor, public pd::Instance, publi
TrackProperties m_track_properties;
XmlElement* m_temp_xml;
+ Rectangle m_console_bounds = Rectangle(50, 50, 300, 370);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CamomileAudioProcessor)
};
diff --git a/Source/PluginProcessorBuses.cpp b/Source/PluginProcessorBuses.cpp
new file mode 100644
index 00000000..78e81b1c
--- /dev/null
+++ b/Source/PluginProcessorBuses.cpp
@@ -0,0 +1,221 @@
+/*
+ // Copyright (c) 2015-2018 Pierre Guillot.
+ // For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ // WARRANTIES, see the file, "LICENSE.txt," in this distribution.
+*/
+
+#include "PluginProcessor.h"
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// CAMOMILE BUSES LAYOUTS HELPER //
+//////////////////////////////////////////////////////////////////////////////////////////////
+class CamomileBusesLayoutHelper
+{
+public:
+ //! @brief Get an array with all the supported buses layouts in the Juce format.
+ static const Array& getSupporttedBusesLayouts()
+ {
+ static Array layouts;
+ if(layouts.isEmpty())
+ {
+ auto const& envSupportedLayouts = CamomileEnvironment::getBusesLayouts();
+ for(auto const& envBusesLayout : envSupportedLayouts)
+ {
+ AudioProcessor::BusesLayout pluginLayout;
+ for(auto const& envBus : envBusesLayout)
+ {
+ pluginLayout.inputBuses.add(AudioChannelSet::canonicalChannelSet(static_cast(envBus.first)));
+ pluginLayout.outputBuses.add(AudioChannelSet::canonicalChannelSet(static_cast(envBus.second)));
+ }
+ layouts.add(std::move(pluginLayout));
+ }
+ }
+ return layouts;
+ }
+
+ //! @brief Get a lower case description of a channel set.
+ static std::string getFormattedChannelSetDescription(AudioChannelSet const& channelSet)
+ {
+ String const description = channelSet.getDescription().toLowerCase();
+ return description.contains("discrete") ? std::string("discrete") : description.toStdString();
+ }
+
+ //! @brief Get a lower case description of a channel set.
+ static std::vector getBusInformation(AudioProcessor::Bus const& bus)
+ {
+ auto const& layout = bus.getCurrentLayout();
+ const bool is_input = bus.isInput();
+ const float index = static_cast(bus.getBusIndex());
+ const float size = static_cast(layout.size());
+ std::string const descptn = getFormattedChannelSetDescription(layout);
+ return std::vector{index, is_input ? std::string("input") : std::string("output"), size, descptn};
+ }
+
+ //! @brief Get a lower case description of a channel set.
+ static AudioProcessor::BusesLayout getCanonicalEquivalent(const AudioProcessor::BusesLayout& requestedLayout)
+ {
+ AudioProcessor::BusesLayout equivalentLayout;
+ auto& equivalentInputBuses = equivalentLayout.inputBuses;
+ auto& equivalentOutputBuses = equivalentLayout.outputBuses;
+
+ for(auto const& bus : requestedLayout.inputBuses)
+ {
+ equivalentInputBuses.add(AudioChannelSet::canonicalChannelSet(bus.size()));
+ }
+ for(auto const& bus : requestedLayout.outputBuses)
+ {
+ equivalentOutputBuses.add(AudioChannelSet::canonicalChannelSet(bus.size()));
+ }
+ return equivalentLayout;
+ }
+
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// LOG BUSES LAYOUTS INFORMATION //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+void CamomileAudioProcessor::logBusesLayoutsInformation()
+{
+ auto const& supportedLayouts = CamomileBusesLayoutHelper::getSupporttedBusesLayouts();
+ for(int layoutidx = 0; layoutidx < supportedLayouts.size(); ++layoutidx)
+ {
+ auto const& buses = supportedLayouts[layoutidx];
+ assert(buses.inputBuses.size() == buses.outputBuses.size());
+ const int nBuses = buses.inputBuses.size();
+ const std::string layoutStr = std::string("layout ") + std::to_string(layoutidx);
+ for(int busidx = 0; busidx < nBuses; ++busidx)
+ {
+ auto const& inputBus = buses.inputBuses[busidx];
+ auto const& outputBus = buses.outputBuses[busidx];
+ const std::string busStr = std::string(" bus ") + std::to_string(busidx+1);
+ add(ConsoleLevel::Log, layoutStr + busStr + " input: " + std::to_string(inputBus.size()) +
+ " \"" + CamomileBusesLayoutHelper::getFormattedChannelSetDescription(inputBus) + "\"");
+ add(ConsoleLevel::Log, layoutStr + busStr + " output: " + std::to_string(outputBus.size()) + " \"" + CamomileBusesLayoutHelper::getFormattedChannelSetDescription(outputBus) + "\"");
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// GET ALL BUSES //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+AudioProcessor::BusesProperties CamomileAudioProcessor::getDefaultBusesProperties(const bool canonical)
+{
+ int nBuses = 0;
+ BusesProperties defaultBusesProperties;
+ auto const& supportedLayouts = CamomileBusesLayoutHelper::getSupporttedBusesLayouts();
+#ifdef DEBUG
+ {
+ for(auto const& supportedLayout : supportedLayouts)
+ {
+ std::cout << "\n\nSupported Layout";
+ std::cout << "\nInputs: ";
+ for(int i = 0; i < supportedLayout.inputBuses.size(); ++i)
+ {
+ std::cout<<"["<< supportedLayout.inputBuses[i].size()<<" - "< const& supportedLayouts = CamomileEnvironment::getBusesLayouts();
+ const size_t nbus = getBusCount(isInput);
+ for(size_t i = 0; i < supportedLayouts.size(); ++i)
+ {
+ buses_layout_t const& supportedLayout = supportedLayouts[i];
+ if(supportedLayout.size() > nbus)
+ {
+ if(isInput && supportedLayout[nbus].first != 0)
+ {
+ return true;
+ }
+ if(!isInput && supportedLayout[nbus].second != 0)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool CamomileAudioProcessor::CamomileAudioProcessor::canRemoveBus(bool isInput) const
+{
+ // This method is only used with Audio Units
+ return true;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// SEND CURRENT BUSES LAYOUT INFORMATION //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+void CamomileAudioProcessor::sendCurrentBusesLayoutInformation()
+{
+ const int nBuses = std::max(getBusCount(true), getBusCount(false));
+ for(int i = 0; i < nBuses; ++i)
+ {
+ AudioProcessor::Bus const* inBus = getBus(true, i);
+ AudioProcessor::Bus const* outBus = getBus(false, i);
+ if(inBus && inBus->isEnabled())
+ {
+ sendList(std::string("bus"), CamomileBusesLayoutHelper::getBusInformation(*inBus));
+ }
+ if(outBus && outBus->isEnabled())
+ {
+ sendList(std::string("bus"), CamomileBusesLayoutHelper::getBusInformation(*outBus));
+ }
+ }
+}
diff --git a/Source/PluginProcessorReceive.cpp b/Source/PluginProcessorReceive.cpp
new file mode 100644
index 00000000..913ea9d2
--- /dev/null
+++ b/Source/PluginProcessorReceive.cpp
@@ -0,0 +1,409 @@
+/*
+ // Copyright (c) 2015-2018 Pierre Guillot.
+ // For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ // WARRANTIES, see the file, "LICENSE.txt," in this distribution.
+*/
+
+#include "PluginProcessor.h"
+#include "PluginParameter.h"
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// MIDI METHODS //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+void CamomileAudioProcessor::receiveNoteOn(const int channel, const int pitch, const int velocity)
+{
+ if(velocity == 0)
+ {
+ m_midi_buffer_out.addEvent(MidiMessage::noteOff(channel, pitch, uint8(0)), m_audio_advancement);
+ }
+ else
+ {
+ m_midi_buffer_out.addEvent(MidiMessage::noteOn(channel, pitch, static_cast(velocity)), m_audio_advancement);
+ }
+}
+
+void CamomileAudioProcessor::receiveControlChange(const int channel, const int controller, const int value)
+{
+ m_midi_buffer_out.addEvent(MidiMessage::controllerEvent(channel, controller, value), m_audio_advancement);
+}
+
+void CamomileAudioProcessor::receiveProgramChange(const int channel, const int value)
+{
+ m_midi_buffer_out.addEvent(MidiMessage::programChange(channel, value), m_audio_advancement);
+}
+
+void CamomileAudioProcessor::receivePitchBend(const int channel, const int value)
+{
+ m_midi_buffer_out.addEvent(MidiMessage::pitchWheel(channel, value + 8192), m_audio_advancement);
+}
+
+void CamomileAudioProcessor::receiveAftertouch(const int channel, const int value)
+{
+ m_midi_buffer_out.addEvent(MidiMessage::channelPressureChange(channel, value), m_audio_advancement);
+}
+
+void CamomileAudioProcessor::receivePolyAftertouch(const int channel, const int pitch, const int value)
+{
+ m_midi_buffer_out.addEvent(MidiMessage::aftertouchChange(channel, pitch, value), m_audio_advancement);
+}
+
+void CamomileAudioProcessor::receiveMidiByte(const int port, const int byte)
+{
+ m_midi_buffer_out.addEvent(MidiMessage(byte), m_audio_advancement);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// PRINT METHOD //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+void CamomileAudioProcessor::receivePrint(const std::string& message)
+{
+ if(!message.empty())
+ {
+ if(!message.compare(0, 6, "error:"))
+ {
+ std::string const temp(message.begin()+7, message.end());
+ add(ConsoleLevel::Error, temp);
+ }
+ else if(!message.compare(0, 11, "verbose(4):"))
+ {
+ std::string const temp(message.begin()+12, message.end());
+ add(ConsoleLevel::Error, temp);
+ }
+ else if(!message.compare(0, 5, "tried"))
+ {
+ add(ConsoleLevel::Log, message);
+ }
+ else if(!message.compare(0, 16, "input channels ="))
+ {
+ add(ConsoleLevel::Log, message);
+ }
+ else
+ {
+ add(ConsoleLevel::Normal, message);
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// MESSAGE METHOD //
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+void CamomileAudioProcessor::receiveMessage(const std::string& msg, const std::vector& list)
+{
+ if(msg == std::string("param"))
+ {
+ if(list.size() >= 2 && list[0].isSymbol() && list[1].isFloat())
+ {
+ std::string const method = list[0].getSymbol();
+ int const index = static_cast(list[1].getFloat()) - 1;
+ if(method == "set")
+ {
+ if(list.size() >= 3 && list[2].isFloat())
+ {
+ CamomileAudioParameter* param = static_cast(getParameters()[index]);
+ if(param)
+ {
+ param->setOriginalScaledValueNotifyingHost(list[2].getFloat());
+ if(list.size() > 3) { add(ConsoleLevel::Error,
+ "camomile parameter set method extra arguments"); }
+ }
+ else { add(ConsoleLevel::Error,
+ "camomile parameter set method index: out of range"); }
+ }
+ else { add(ConsoleLevel::Error,
+ "camomile parameter set method: wrong argument"); }
+ }
+ else if(method == "change")
+ {
+ if(list.size() >= 3 && list[2].isFloat())
+ {
+ AudioProcessorParameter* param = getParameters()[index];
+ if(param)
+ {
+ if(list[2].getFloat() > std::numeric_limits::epsilon())
+ {
+ if(m_params_states[index])
+ {
+ add(ConsoleLevel::Error,
+ "camomile parameter change " + std::to_string(index+1) + " already started");
+ }
+ else
+ {
+ param->beginChangeGesture();
+ m_params_states[index] = true;
+ if(list.size() > 3) { add(ConsoleLevel::Error,
+ "camomile parameter change method extra arguments"); }
+ }
+ }
+ else
+ {
+ if(!m_params_states[index])
+ {
+ add(ConsoleLevel::Error,
+ "camomile parameter change " + std::to_string(index+1) + " not started");
+ }
+ else
+ {
+ param->endChangeGesture();
+ m_params_states[index] = false;
+ if(list.size() > 3) { add(ConsoleLevel::Error,
+ "camomile parameter change method extra arguments"); }
+ }
+ }
+ }
+ else { add(ConsoleLevel::Error,
+ "camomile parameter change method index: out of range"); }
+ }
+ else { add(ConsoleLevel::Error,
+ "camomile parameter change method: wrong argument"); }
+ }
+ else { add(ConsoleLevel::Error,
+ "camomile param no method: " + method); }
+ }
+ else { add(ConsoleLevel::Error,
+ "camomile param error syntax: method index..."); }
+ }
+ else if(msg == std::string("program"))
+ {
+ parseProgram(list);
+ }
+ else if(msg == std::string("openpanel"))
+ {
+ parseOpenPanel(list);
+ }
+ else if(msg == std::string("savepanel"))
+ {
+ parseSavePanel(list);
+ }
+ else if(msg == std::string("array"))
+ {
+ parseArray(list);
+ }
+ else if(msg == std::string("save"))
+ {
+ parseSaveInformation(list);
+ }
+ else if(msg == std::string("gui"))
+ {
+ parseGui(list);
+ }
+ else if(msg == std::string("audio"))
+ {
+ parseAudio(list);
+ }
+ else { add(ConsoleLevel::Error, "camomile unknow message : " + msg); }
+}
+
+void CamomileAudioProcessor::parseProgram(const std::vector& list)
+{
+ if(list.size() >= 1 && list[0].isSymbol() && list[0].getSymbol() == "updated")
+ {
+ updateHostDisplay();
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile program method accepts updated method only");
+ }
+}
+
+void CamomileAudioProcessor::parseOpenPanel(const std::vector& list)
+{
+ if(list.size() >= 1)
+ {
+ if(list[0].isSymbol())
+ {
+ if(list.size() > 1)
+ {
+ if(list[1].isSymbol())
+ {
+ if(list[1].getSymbol() == "-s")
+ {
+ m_queue_gui.try_enqueue({std::string("openpanel"), list[0].getSymbol(), std::string("-s")});
+ }
+ else if(list[0].getSymbol() == "-s")
+ {
+ m_queue_gui.try_enqueue({std::string("openpanel"), list[1].getSymbol(), std::string("-s")});
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile openpanel one argument must be a flag \"-s\"");
+ }
+ if(list.size() > 2)
+ {
+ add(ConsoleLevel::Error, "camomile openpanel method extra arguments");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile openpanel second argument must be a symbol");
+ }
+ }
+ else
+ {
+ if(list[0].getSymbol() == "-s")
+ {
+ m_queue_gui.try_enqueue({std::string("openpanel"), std::string(), std::string("-s")});
+ }
+ else
+ {
+ m_queue_gui.try_enqueue({std::string("openpanel"), list[0].getSymbol(), std::string()});
+ }
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile openpanel method argument must be a symbol");
+ }
+ }
+ else
+ {
+ m_queue_gui.try_enqueue({std::string("openpanel"), std::string(), std::string()});
+ }
+}
+
+void CamomileAudioProcessor::parseSavePanel(const std::vector& list)
+{
+ if(list.size() >= 1)
+ {
+ if(list[0].isSymbol())
+ {
+ if(list.size() > 1)
+ {
+ if(list[1].isSymbol())
+ {
+ if(list[1].getSymbol() == "-s")
+ {
+ m_queue_gui.try_enqueue({std::string("savepanel"), list[0].getSymbol(), std::string("-s")});
+ }
+ else if(list[0].getSymbol() == "-s")
+ {
+ m_queue_gui.try_enqueue({std::string("savepanel"), list[1].getSymbol(), std::string("-s")});
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile savepanel one argument must be a flag \"-s\"");
+ }
+ if(list.size() > 2)
+ {
+ add(ConsoleLevel::Error, "camomile savepanel method extra arguments");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile savepanel second argument must be a symbol");
+ }
+ }
+ else
+ {
+ if(list[0].getSymbol() == "-s")
+ {
+ m_queue_gui.try_enqueue({std::string("savepanel"), std::string(), std::string("-s")});
+ }
+ else
+ {
+ m_queue_gui.try_enqueue({std::string("savepanel"), list[0].getSymbol(), std::string()});
+ }
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile savepanel method argument must be a symbol");
+ }
+ }
+ else
+ {
+ m_queue_gui.try_enqueue({std::string("savepanel"), std::string(), std::string()});
+ }
+}
+
+void CamomileAudioProcessor::parseArray(const std::vector& list)
+{
+ if(list.size() >= 1)
+ {
+ if(list[0].isSymbol())
+ {
+ m_queue_gui.try_enqueue({std::string("array"), list[0].getSymbol(), ""});
+ if(list.size() > 1)
+ {
+ add(ConsoleLevel::Error, "camomile array method extra arguments");
+ }
+ }
+ else { add(ConsoleLevel::Error, "camomile array method argument must be a symbol"); }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile array needs a name");
+ }
+}
+
+void CamomileAudioProcessor::parseGui(const std::vector& list)
+{
+ if(list.size() >= 1)
+ {
+ if(list[0].isSymbol())
+ {
+ m_queue_gui.try_enqueue({std::string("gui"), list[0].getSymbol(), ""});
+ if(list.size() > 1)
+ {
+ add(ConsoleLevel::Error, "camomile gui method extra arguments");
+ }
+ }
+ else { add(ConsoleLevel::Error, "camomile gui method argument must be a symbol"); }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile gui needs a command");
+ }
+}
+
+void CamomileAudioProcessor::parseAudio(const std::vector& list)
+{
+ if(list.size() >= 1)
+ {
+ if(list[0].isSymbol())
+ {
+ if(list[0].getSymbol() == std::string("latency"))
+ {
+ if(list.size() >= 2 && list[1].isFloat())
+ {
+ const int latency = static_cast(list[1].getFloat());
+ if(latency >= 0)
+ {
+ setLatencySamples(latency + Instance::getBlockSize());
+ if(list.size() > 2)
+ {
+ add(ConsoleLevel::Error, "camomile audio method: latency option extra arguments");
+ }
+ if(CamomileEnvironment::isLatencyInitialized())
+ {
+ add(ConsoleLevel::Error, "camomile audio method: latency overwrites the preferences");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile audio method: latency must be positive or null");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile audio method: latency option expects a number");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile audio method: unknown option \"" + list[0].getSymbol() + "\"");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile audio method: first argument must be an option");
+ }
+ }
+ else
+ {
+ add(ConsoleLevel::Error, "camomile audio method: expects arguments");
+ }
+}
+
diff --git a/appveyor.yml b/appveyor.yml
index 38da9ce1..87ae3d9f 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -49,7 +49,6 @@ after_build:
- copy %APPVEYOR_BUILD_FOLDER%\README.md %APPVEYOR_BUILD_FOLDER%\Plugins\README.md
- copy %APPVEYOR_BUILD_FOLDER%\ChangeLog.md %APPVEYOR_BUILD_FOLDER%\Plugins\ChangeLog.md
- copy %APPVEYOR_BUILD_FOLDER%\LICENSE %APPVEYOR_BUILD_FOLDER%\Plugins\LICENSE.txt
- - copy %APPVEYOR_BUILD_FOLDER%\Documentation.pdf %APPVEYOR_BUILD_FOLDER%\Plugins\Documentation.pdf
- del %APPVEYOR_BUILD_FOLDER%\Plugins\Examples\camomile.sh /Q
- rmdir %APPVEYOR_BUILD_FOLDER%\Plugins\"Shared Code"\ /S /Q
- rmdir %APPVEYOR_BUILD_FOLDER%\Plugins\VST\ /S /Q