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