diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile index 64e4643..f3342d0 100644 --- a/Builds/Linux/Makefile +++ b/Builds/Linux/Makefile @@ -20,10 +20,9 @@ ifeq ($(CONFIG),Debug) CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/src/vstsdk2.4 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0 - CXXFLAGS += $(CFLAGS) - LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -shared -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt - LDDEPS := - RESFLAGS := -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/src/vstsdk2.4 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules + CXXFLAGS += $(CFLAGS) -std=c++11 + LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt + TARGET := Dexed.so BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) @@ -41,10 +40,9 @@ ifeq ($(CONFIG),Release) CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/src/vstsdk2.4 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -fPIC -Os - CXXFLAGS += $(CFLAGS) - LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -shared -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt - LDDEPS := - RESFLAGS := -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/src/vstsdk2.4 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules + CXXFLAGS += $(CFLAGS) -std=c++11 + LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt + TARGET := Dexed.so BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) @@ -94,7 +92,7 @@ OBJECTS := \ .PHONY: clean -$(OUTDIR)/$(TARGET): $(OBJECTS) $(LDDEPS) $(RESOURCES) +$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES) @echo Linking Dexed -@mkdir -p $(BINDIR) -@mkdir -p $(LIBDIR) diff --git a/Builds/MacOSX/Dexed.xcodeproj/project.pbxproj b/Builds/MacOSX/Dexed.xcodeproj/project.pbxproj index 267bf82..5c4b8fc 100644 --- a/Builds/MacOSX/Dexed.xcodeproj/project.pbxproj +++ b/Builds/MacOSX/Dexed.xcodeproj/project.pbxproj @@ -77,7 +77,6 @@ DAC2F8A317486D36C0E0F81F /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A31C49ABA24290126250F574 /* CAMutex.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; DDD1E74DE1AC7E6493AF04CA /* juce_RTAS_DigiCode3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4574217C2F5219DEDDDC9656 /* juce_RTAS_DigiCode3.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; DFA8CE3B7D7FE269254C9BDD /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DB84FE1DF027D2AB0952F18 /* CAAUParameter.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; - E293B9570C97E4BAD129D4A2 /* juce_RTAS_MacResources.r in Rez */ = {isa = PBXBuildFile; fileRef = FE39DD2B654DF778D919D554 /* juce_RTAS_MacResources.r */; }; E3FA856CA4DB2009BB0F13E7 /* juce_AAX_Wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 505852570B48EB3F18076B03 /* juce_AAX_Wrapper.cpp */; }; E52CB89B4C49057C5A54CFFE /* juce_graphics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9E3820CD63B47B5385AF2DB6 /* juce_graphics.mm */; }; E8BEA8ABF5E288C5D5FCD620 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 817CC81F50861DAEEFB2043A /* Carbon.framework */; }; @@ -263,6 +262,7 @@ 2CA19470CA427333F8CAC0A5 /* juce_ImagePreviewComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImagePreviewComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp; sourceTree = SOURCE_ROOT; }; 2CA60524355CF872ADB42EA4 /* CAVectorUnit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAVectorUnit.cpp; path = Extras/CoreAudio/PublicUtility/CAVectorUnit.cpp; sourceTree = DEVELOPER_DIR; }; 2CB4C73C121FCDEF65CBAC79 /* juce_mac_MainMenu.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MainMenu.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MainMenu.mm; sourceTree = SOURCE_ROOT; }; + 2CBFFF86BDEB0B89734D6956 /* Switch_32x32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Switch_32x32.png; path = ../../Resources/ui/Switch_32x32.png; sourceTree = SOURCE_ROOT; }; 2D26E2304C0F6FC633936014 /* lfo.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = lfo.cc; path = ../../Source/msfa/lfo.cc; sourceTree = SOURCE_ROOT; }; 2D8A5B5929909ADD898D7E00 /* juce_HashMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HashMap.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_HashMap.h; sourceTree = SOURCE_ROOT; }; 2D9932D322EDA14CC872D08B /* juce_MemoryOutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryOutputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.h; sourceTree = SOURCE_ROOT; }; @@ -417,6 +417,7 @@ 52E90BF34CEB39BB7DFA91DE /* juce_RelativeRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeRectangle.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h; sourceTree = SOURCE_ROOT; }; 53CD8A358FB75E4D10571218 /* juce_PluginListComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PluginListComponent.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.h; sourceTree = SOURCE_ROOT; }; 53EA5EAEF8A9688559300B1C /* juce_MenuBarModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MenuBarModel.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.h; sourceTree = SOURCE_ROOT; }; + 540CB571BDB23FFECCE0CD1B /* juce_ValueTreeSynchroniser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ValueTreeSynchroniser.cpp; path = ../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp; sourceTree = SOURCE_ROOT; }; 543415735FAC3778D98C649B /* juce_Value.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Value.h; path = ../../JuceLibraryCode/modules/juce_data_structures/values/juce_Value.h; sourceTree = SOURCE_ROOT; }; 54363D0B39B88D43447C0123 /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; }; 5439A08FE11BD3D1EF760CF8 /* juce_DrawablePath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawablePath.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp; sourceTree = SOURCE_ROOT; }; @@ -473,6 +474,7 @@ 68EBBB35B7A5A57E4BA2F8E2 /* module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = module.h; path = ../../Source/msfa/module.h; sourceTree = SOURCE_ROOT; }; 69327BB424333BE9051A2C1D /* juce_win32_DragAndDrop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_DragAndDrop.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp; sourceTree = SOURCE_ROOT; }; 69B3908CF6E97D2326117534 /* juce_PathIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PathIterator.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.cpp; sourceTree = SOURCE_ROOT; }; + 6A33E3588893DFC8E8370460 /* juce_FFT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FFT.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_FFT.h; sourceTree = SOURCE_ROOT; }; 6A462A15DB909F68F4A9BECC /* AUInputElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUInputElement.cpp; path = Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUInputElement.cpp; sourceTree = DEVELOPER_DIR; }; 6AFA3298C0E6EBF44DF90481 /* juce_PixelFormats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PixelFormats.h; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h; sourceTree = SOURCE_ROOT; }; 6B3889626BDBB814F2387085 /* CartManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CartManager.cpp; path = ../../Source/CartManager.cpp; sourceTree = SOURCE_ROOT; }; @@ -783,6 +785,7 @@ BF536BFBEDDD9802B9516022 /* juce_AudioThumbnailBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioThumbnailBase.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h; sourceTree = SOURCE_ROOT; }; BF7A1720DADC7983F61E895C /* ProgramListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProgramListBox.cpp; path = ../../Source/ProgramListBox.cpp; sourceTree = SOURCE_ROOT; }; BF9449063F547456209F21FE /* juce_win32_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Network.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp; sourceTree = SOURCE_ROOT; }; + BFD53B08DAEB98B6DD5D77B7 /* juce_FFT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FFT.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_FFT.cpp; sourceTree = SOURCE_ROOT; }; BFE7C6795569A2BC4EEF91FB /* juce_BufferingAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BufferingAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp; sourceTree = SOURCE_ROOT; }; BFF8708E6D65F4E2B84983F9 /* juce_ComponentBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentBuilder.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp; sourceTree = SOURCE_ROOT; }; C01EE75D859C1F942DA3AE61 /* fm_core.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = fm_core.cc; path = ../../Source/msfa/fm_core.cc; sourceTree = SOURCE_ROOT; }; @@ -814,6 +817,7 @@ C89190A10B698C7B1E42C76D /* AUMIDIEffectBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUMIDIEffectBase.h; path = Extras/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIEffectBase.h; sourceTree = DEVELOPER_DIR; }; C8DE1F3E1A1871ABB88A5B2D /* juce_SelectedItemSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SelectedItemSet.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h; sourceTree = SOURCE_ROOT; }; C92DFD53D297FAD265D1DB8D /* juce_InputSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InputSource.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_InputSource.h; sourceTree = SOURCE_ROOT; }; + C9BA4E2199E2302799EFB744 /* juce_ValueTreeSynchroniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ValueTreeSynchroniser.h; path = ../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h; sourceTree = SOURCE_ROOT; }; CA8B960E006E1C65A6A2E8AA /* juce_InputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.h; sourceTree = SOURCE_ROOT; }; CAF913DD133AC8882640F266 /* juce_AlertWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AlertWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.h; sourceTree = SOURCE_ROOT; }; CB38F1D4BB78766DBD50FEB9 /* juce_URL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_URL.cpp; path = ../../JuceLibraryCode/modules/juce_core/network/juce_URL.cpp; sourceTree = SOURCE_ROOT; }; @@ -869,6 +873,7 @@ DAEFEE4711393EBF6BC1EB3A /* juce_DropShadowEffect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DropShadowEffect.h; path = ../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.h; sourceTree = SOURCE_ROOT; }; DB3B5F6FE49267EE53089A05 /* juce_linux_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_WebBrowserComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; DB9F89D1872247982F4D0913 /* juce_TableHeaderComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TableHeaderComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h; sourceTree = SOURCE_ROOT; }; + DBCAF79038544A7B358D6549 /* juce_curl_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_curl_Network.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_curl_Network.cpp; sourceTree = SOURCE_ROOT; }; DBEA78ADC148399D593D22A9 /* juce_AudioProcessorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioProcessorEditor.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h; sourceTree = SOURCE_ROOT; }; DC75DFCDFCDB425927B11EC0 /* PluginFx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginFx.h; path = ../../Source/PluginFx.h; sourceTree = SOURCE_ROOT; }; DD1BF932ABF0CEC81A8B8A3A /* juce_DynamicObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DynamicObject.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.h; sourceTree = SOURCE_ROOT; }; @@ -987,7 +992,6 @@ FD799268DEA0EC4CDFD4DA10 /* juce_NewLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NewLine.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_NewLine.h; sourceTree = SOURCE_ROOT; }; FDA8E9094D7495F5116F7742 /* juce_PluginHostType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PluginHostType.h; path = ../../JuceLibraryCode/modules/juce_audio_plugin_client/utility/juce_PluginHostType.h; sourceTree = SOURCE_ROOT; }; FDDB0277D2D036AEFA3EBD2D /* juce_Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Font.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.cpp; sourceTree = SOURCE_ROOT; }; - FE39DD2B654DF778D919D554 /* juce_RTAS_MacResources.r */ = {isa = PBXFileReference; lastKnownFileType = file.r; name = juce_RTAS_MacResources.r; path = ../../JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_MacResources.r; sourceTree = SOURCE_ROOT; }; FE42B80DEA2E49C07E9E1C0A /* juce_RelativeRectangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeRectangle.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp; sourceTree = SOURCE_ROOT; }; FF01650D69FB076FD8FCCE32 /* juce_PropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertyComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; FF46344F53B1AE5119D163D5 /* juce_CarbonVisibility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CarbonVisibility.h; path = ../../JuceLibraryCode/modules/juce_audio_plugin_client/utility/juce_CarbonVisibility.h; sourceTree = SOURCE_ROOT; }; @@ -1145,6 +1149,8 @@ isa = PBXGroup; children = ( 7A0FB6545BA2E344A1F45EA5 /* juce_Decibels.h */, + BFD53B08DAEB98B6DD5D77B7 /* juce_FFT.cpp */, + 6A33E3588893DFC8E8370460 /* juce_FFT.h */, E7F00CEE06961C2D9EDDA697 /* juce_IIRFilter.cpp */, 518104B0010D2466EB51D01A /* juce_IIRFilter.h */, 46908987EEFC3623A53A95C2 /* juce_LagrangeInterpolator.cpp */, @@ -1410,7 +1416,6 @@ 55E39FAA63BA8B9D40F40712 /* juce_RTAS_DigiCode1.cpp */, D8038990994C30BDD631733E /* juce_RTAS_DigiCode2.cpp */, 4574217C2F5219DEDDDC9656 /* juce_RTAS_DigiCode3.cpp */, - FE39DD2B654DF778D919D554 /* juce_RTAS_MacResources.r */, C7C6039A52C3EE370CA9E73A /* juce_RTAS_MacUtilities.mm */, EAA5D8078BCC042BDF94C77A /* juce_RTAS_Wrapper.cpp */, D6C6FCBA5ECA257959BFE674 /* juce_VST_Wrapper.cpp */, @@ -1429,6 +1434,8 @@ 543415735FAC3778D98C649B /* juce_Value.h */, A348DAE6ECDEF51CAD6B5FE4 /* juce_ValueTree.cpp */, B779A3FF92AF0ED28B97C03A /* juce_ValueTree.h */, + 540CB571BDB23FFECCE0CD1B /* juce_ValueTreeSynchroniser.cpp */, + C9BA4E2199E2302799EFB744 /* juce_ValueTreeSynchroniser.h */, ); name = values; sourceTree = ""; @@ -2091,6 +2098,7 @@ C4282ED857CAA664F85D5C4D /* juce_android_SystemStats.cpp */, CFFA7532FAFF5655253878FE /* juce_android_Threads.cpp */, EB7592B101CFEDF629993E39 /* juce_BasicNativeHeaders.h */, + DBCAF79038544A7B358D6549 /* juce_curl_Network.cpp */, F8A589597222065EA52C4F9C /* juce_linux_CommonFile.cpp */, EEC5BFDA3C3B23D08E4528B7 /* juce_linux_Files.cpp */, 6CAAD366E2D6A650900C75F0 /* juce_linux_Network.cpp */, @@ -2574,6 +2582,7 @@ F472964B0FFEE5615B72CE3D /* Resources */ = { isa = PBXGroup; children = ( + 2CBFFF86BDEB0B89734D6956 /* Switch_32x32.png */, 0D5761BE1D2DEA319B57D740 /* Switch_48x26.png */, E6F65C031FCBB192F3927D4C /* ButtonUnlabeled_50x30.png */, 8B19E0BEAD29F2C0D46FA89C /* Knob_34x34.png */, @@ -2748,7 +2757,6 @@ buildActionMask = 2147483647; files = ( 9D042F9D005532F763A72C26 /* juce_AU_Resources.r in Rez */, - E293B9570C97E4BAD129D4A2 /* juce_RTAS_MacResources.r in Rez */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Builds/VisualStudio2012/Dexed.sln b/Builds/VisualStudio2012/Dexed.sln index 271a9c5..6b5dd1b 100644 --- a/Builds/VisualStudio2012/Dexed.sln +++ b/Builds/VisualStudio2012/Dexed.sln @@ -4,14 +4,14 @@ Project("{BD26B4C3-163D-4785-A63F-D3E66858BFF3}") = "Dexed", "Dexed.vcxproj", "{ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Release|x64 = Release|x64 + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Debug|x64.ActiveCfg = Debug|x64 - {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Debug|x64.Build.0 = Debug|x64 - {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Release|x64.ActiveCfg = Release|x64 - {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Release|x64.Build.0 = Release|x64 + {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Debug|Win32.Build.0 = Debug|Win32 + {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Release|Win32.ActiveCfg = Release|Win32 + {1A9EF105-5BF5-9FB6-9634-A91A6D840866}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Builds/VisualStudio2012/Dexed.vcxproj b/Builds/VisualStudio2012/Dexed.vcxproj index 7c3b9ab..d63545c 100644 --- a/Builds/VisualStudio2012/Dexed.vcxproj +++ b/Builds/VisualStudio2012/Dexed.vcxproj @@ -2,13 +2,13 @@ - + Debug - x64 + Win32 - + Release - x64 + Win32 @@ -16,18 +16,16 @@ v110 - + DynamicLibrary false v110 - v110 - + DynamicLibrary false true v110 - v110 @@ -40,15 +38,13 @@ <_ProjectFileVersion>10.0.30319.1 - .\Debug\ - Dexed - true - .\Release\ - Dexed - true + Dexed + true + Dexed + true v110 - + _DEBUG;%(PreprocessorDefinitions) true @@ -58,9 +54,9 @@ Disabled - ProgramDatabase + EditAndContinue ..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;C:\work\vstsdk2.4;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreadedDebugDLL true @@ -81,6 +77,8 @@ true $(IntDir)\Dexed.pdb Windows + MachineX86 + false true /FORCE:multiple %(AdditionalOptions) @@ -89,7 +87,7 @@ $(IntDir)\Dexed.bsc - + NDEBUG;%(PreprocessorDefinitions) true @@ -100,7 +98,7 @@ MinSpace ..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;C:\work\vstsdk2.4;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreadedDLL true @@ -121,6 +119,7 @@ false $(IntDir)\Dexed.pdb Windows + MachineX86 true true true @@ -181,6 +180,9 @@ true + + true + true @@ -460,6 +462,9 @@ true + + true + true @@ -499,6 +504,9 @@ true + + true + true @@ -1153,6 +1161,7 @@ + @@ -1321,6 +1330,7 @@ + @@ -1545,6 +1555,7 @@ + diff --git a/Builds/VisualStudio2012/Dexed.vcxproj.filters b/Builds/VisualStudio2012/Dexed.vcxproj.filters index 2b0724d..359c67d 100644 --- a/Builds/VisualStudio2012/Dexed.vcxproj.filters +++ b/Builds/VisualStudio2012/Dexed.vcxproj.filters @@ -376,6 +376,9 @@ Juce Modules\juce_audio_basics\midi + + Juce Modules\juce_audio_basics\effects + Juce Modules\juce_audio_basics\effects @@ -673,6 +676,9 @@ Juce Modules\juce_core\native + + Juce Modules\juce_core\native + Juce Modules\juce_core\native @@ -727,6 +733,9 @@ Juce Modules\juce_data_structures\values + + Juce Modules\juce_data_structures\values + Juce Modules\juce_data_structures\undomanager @@ -1536,6 +1545,9 @@ Juce Modules\juce_audio_basics\effects + + Juce Modules\juce_audio_basics\effects + Juce Modules\juce_audio_basics\effects @@ -2040,6 +2052,9 @@ Juce Modules\juce_data_structures\values + + Juce Modules\juce_data_structures\values + Juce Modules\juce_data_structures\undomanager @@ -2708,6 +2723,9 @@ + + Dexed\Resources + Dexed\Resources diff --git a/Dexed.jucer b/Dexed.jucer index 425c742..f34fb59 100644 --- a/Dexed.jucer +++ b/Dexed.jucer @@ -12,6 +12,8 @@ buildRTAS="0" buildAAX="0" pluginManufacturerEmail="support@yourcompany.com"> + imageSwitchOperator; + setSize(32, 32); + } + + void paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown) { + g.drawImage(image, 0, 0, 32, 32, 0, getToggleState() ? 0 : 32, 32, 32); + } +}; + //[/MiscUserDefs] //============================================================================== OperatorEditor::OperatorEditor () { + //[Constructor_pre] You can add your own custom stuff here.. + //[/Constructor_pre] + addAndMakeVisible (s_egl1 = new Slider ("egl1")); s_egl1->setRange (0, 99, 1); s_egl1->setSliderStyle (Slider::RotaryVerticalDrag); @@ -173,6 +190,7 @@ OperatorEditor::OperatorEditor () //[UserPreSize] + addAndMakeVisible(opSwitch = new OperatorSwitch()); //[/UserPreSize] setSize (287, 218); @@ -233,6 +251,7 @@ OperatorEditor::~OperatorEditor() //[Destructor]. You can add your own custom destruction code here.. + opSwitch = nullptr; //[/Destructor] } @@ -246,7 +265,7 @@ void OperatorEditor::paint (Graphics& g) //[UserPaint] Add your own custom painting code here.. g.setColour (Colours::white); g.setFont(Font (30.00f, Font::plain)); - g.drawText(opNum, 242, 8, 30, 30, Justification::centred, true); + g.drawText(opNum, 250, 14, 30, 30, Justification::centred, true); bool state = opMode->getToggleState(); @@ -259,6 +278,9 @@ void OperatorEditor::paint (Graphics& g) void OperatorEditor::resized() { + //[UserPreResize] Add your own custom resize code here.. + //[/UserPreResize] + s_egl1->setBounds (5, 128, 34, 34); s_egl2->setBounds (33, 129, 34, 34); s_egl3->setBounds (61, 128, 34, 34); @@ -284,6 +306,7 @@ void OperatorEditor::resized() kbdLeftCurve->setBounds (128, 170, 36, 26); kbdRightCurve->setBounds (240, 170, 36, 26); //[UserResized] Add your own custom resize handling here.. + opSwitch->setBounds(226, 13, 64, 32); //[/UserResized] } @@ -439,6 +462,7 @@ void OperatorEditor::bind(DexedAudioProcessor *parent, int op) { parent->opCtrl[op].sclRate->bind(sclRateScaling); parent->opCtrl[op].ampModSens->bind(ampModSens); parent->opCtrl[op].velModSens->bind(keyVelSens); + parent->opCtrl[op].opSwitch->bind(opSwitch); int offset = parent->opCtrl[op].egRate[0]->getOffset(); envDisplay->pvalues = &(parent->data[offset]); @@ -507,7 +531,7 @@ void OperatorEditor::mouseDown(const MouseEvent &event) { case 3: processor->pasteOpFromClipboard(internalOp); break; - + case 4: processor->sendCurrentSysexProgram(); break; diff --git a/Source/OperatorEditor.h b/Source/OperatorEditor.h index 4d22d49..99a1b5f 100644 --- a/Source/OperatorEditor.h +++ b/Source/OperatorEditor.h @@ -7,12 +7,12 @@ the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. - Created with Introjucer version: 3.1.0 + Created with Introjucer version: 3.2.0 ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-13 by Raw Material Software Ltd. + Copyright (c) 2015 - ROLI Ltd. ============================================================================== */ @@ -68,10 +68,9 @@ private: String opNum; int internalOp; Image light; - DexedAudioProcessor *processor; - Image background; + ScopedPointer opSwitch; //[/UserVariables] //============================================================================== diff --git a/Source/PluginData.cpp b/Source/PluginData.cpp index 3d193f7..f3bcecd 100644 --- a/Source/PluginData.cpp +++ b/Source/PluginData.cpp @@ -55,7 +55,7 @@ void exportSysexPgm(uint8_t *dest, uint8_t *src) { /** * Pack a program into a 32 packed sysex */ -void Cartridge::packProgram(uint8_t *src, int idx, String name) { +void Cartridge::packProgram(uint8_t *src, int idx, String name, char *opSwitch) { uint8_t *bulk = voiceData + 6 + (idx * 128); for(int op = 0; op < 6; op++) { @@ -70,7 +70,10 @@ void Cartridge::packProgram(uint8_t *src, int idx, String name) { // kvs_ams bulk[pp+13] = (src[up+14]&0x03) | ((src[up+15]&0x07) << 2); // output lvl - bulk[pp+14] = src[up+16]; + if ( opSwitch[op] == '0' ) + bulk[pp+14] = 0; + else + bulk[pp+14] = src[up+16]; // fcoarse_mode bulk[pp+15] = (src[up+17]&0x01) | ((src[up+18]&0x1f) << 1); // fine freq @@ -158,7 +161,7 @@ void Cartridge::unpackProgram(uint8_t *unpackPgm, int idx) { unpackPgm[142] = (lpms_lfw_lks >> 1) & 7; unpackPgm[143] = lpms_lfw_lks >> 4; memcpy(unpackPgm + 144, bulk + 117, 11); // transpose, name - unpackPgm[155] = 1; // operator on/off + unpackPgm[155] = 1; // operator on/off (DEPRECATED) unpackPgm[156] = 1; unpackPgm[157] = 1; unpackPgm[158] = 1; @@ -296,6 +299,7 @@ void DexedAudioProcessor::getStateInformation(MemoryBlock& destData) { dexedState.setAttribute("monoMode", monoMode); dexedState.setAttribute("engineType", (int) engineType); dexedState.setAttribute("masterTune", controllers.masterTune); + dexedState.setAttribute("opSwitch", controllers.opSwitch); char mod_cfg[15]; controllers.wheel.setConfig(mod_cfg); @@ -335,6 +339,13 @@ void DexedAudioProcessor::setStateInformation(const void* source, int sizeInByte fx.uiGain = root->getDoubleAttribute("gain"); currentProgram = root->getIntAttribute("currentProgram"); + String opSwitchValue = root->getStringAttribute("opSwitch"); + if ( opSwitchValue.length() != 6 ) { + strcpy(controllers.opSwitch, "111111"); + } else { + strncpy(controllers.opSwitch, opSwitchValue.toRawUTF8(), 6); + } + controllers.wheel.parseConfig(root->getStringAttribute("wheelMod").toRawUTF8()); controllers.foot.parseConfig(root->getStringAttribute("footMod").toRawUTF8()); controllers.breath.parseConfig(root->getStringAttribute("breathMod").toRawUTF8()); diff --git a/Source/PluginData.h b/Source/PluginData.h index b863dc6..b565a3a 100644 --- a/Source/PluginData.h +++ b/Source/PluginData.h @@ -220,7 +220,7 @@ public: } void unpackProgram(uint8_t *unpackPgm, int idx); - void packProgram(uint8_t *src, int idx, String name); + void packProgram(uint8_t *src, int idx, String name, char *opSwitch); }; #endif // PLUGINDATA_H_INCLUDED diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index ef7e0d7..2e8a09a 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -297,7 +297,7 @@ void DexedAudioProcessorEditor::storeProgram() { } if ( externalFile == NULL ) { - processor->currentCart.packProgram((uint8_t *) processor->data, programNum, programName); + processor->currentCart.packProgram((uint8_t *) processor->data, programNum, programName, processor->controllers.opSwitch); rebuildProgramCombobox(); processor->setCurrentProgram(programNum); processor->updateHostDisplay(); @@ -316,7 +316,7 @@ void DexedAudioProcessorEditor::storeProgram() { processor->activeFileCartridge = destination; } } else { - destSysex.packProgram((uint8_t *) processor->data, programNum, programName); + destSysex.packProgram((uint8_t *) processor->data, programNum, programName, processor->controllers.opSwitch); if ( ! destSysex.saveVoice(*externalFile)) { AlertWindow::showMessageBoxAsync(AlertWindow::WarningIcon, "Write error", "Unable to write file"); } diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h index 703d03d..ed731d6 100644 --- a/Source/PluginEditor.h +++ b/Source/PluginEditor.h @@ -1,6 +1,6 @@ /** * - * Copyright (c) 2013-2015 Pascal Gauthier. + * Copyright (c) 2013-2016 Pascal Gauthier. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,11 +31,7 @@ //============================================================================== /** */ -class DexedAudioProcessorEditor : public AudioProcessorEditor, - public ComboBoxListener, - public Timer { - PopupMenu cartPopup; - +class DexedAudioProcessorEditor : public AudioProcessorEditor, public ComboBoxListener, public Timer { MidiKeyboardComponent midiKeyboard; OperatorEditor operators[6]; Colour background; diff --git a/Source/PluginParam.cpp b/Source/PluginParam.cpp index 1c2967f..2a32e0f 100644 --- a/Source/PluginParam.cpp +++ b/Source/PluginParam.cpp @@ -1,6 +1,6 @@ /** * - * Copyright (c) 2013-2015 Pascal Gauthier. + * Copyright (c) 2013-2016 Pascal Gauthier. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -103,6 +103,43 @@ public: } }; +class CtrlOpSwitch : public Ctrl { + char *value; + public : + CtrlOpSwitch(String name, char *switchValue) : Ctrl(name) { + value = switchValue; + } + + void setValueHost(float f) { + if ( f == 0 ) + *value = '0'; + else + *value = '1'; + } + + float getValueHost() { + if ( *value == '0' ) + return 0; + else + return 1; + } + + String getValueDisplay() { + String ret; + ret << label << " " << (*value == '0' ? "OFF" : "ON"); + return ret; + } + + void updateComponent() { + if (button != NULL) { + if (*value == '0') { + button->setToggleState(false, dontSendNotification); + } else { + button->setToggleState(true, dontSendNotification); + } + } + } +}; // ************************************************************************ // @@ -471,6 +508,11 @@ void DexedAudioProcessor::initCtrl() { velModSens << opName << " KEY VELOCITY"; opCtrl[opVal].velModSens = new CtrlDX(velModSens, 8, opTarget + 15); ctrl.add(opCtrl[opVal].velModSens); + + String opSwitchLabel; + opSwitchLabel << opName << " SWITCH"; + opCtrl[opVal].opSwitch = new CtrlOpSwitch(opSwitchLabel, (char *)&(controllers.opSwitch)+(5-i)); + ctrl.add(opCtrl[opVal].opSwitch); } for (int i=0; i < ctrl.size(); i++) { @@ -549,6 +591,7 @@ void DexedAudioProcessor::setCurrentProgram(int index) { index = index > 31 ? 31 : index; currentCart.unpackProgram(data, index); + strcpy(controllers.opSwitch, "111111"); lfo.reset(data + 137); currentProgram = index; triggerAsyncUpdate(); diff --git a/Source/PluginParam.h b/Source/PluginParam.h index 2ee7553..df7968b 100644 --- a/Source/PluginParam.h +++ b/Source/PluginParam.h @@ -121,6 +121,7 @@ struct OperatorCtrl { ScopedPointer sclRate; ScopedPointer ampModSens; ScopedPointer velModSens; + ScopedPointer opSwitch; }; #endif // PLUGINPARAM_H_INCLUDED diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index 5fd48ff..a4245cf 100644 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -54,6 +54,8 @@ DexedAudioProcessor::DexedAudioProcessor() { resolvAppDir(); + TRACE("controler %s", controllers.opSwitch); + initCtrl(); sendSysexChange = true; normalizeDxVelocity = false; @@ -66,6 +68,7 @@ DexedAudioProcessor::DexedAudioProcessor() { controllers.values_[kControllerPitchRange] = 3; controllers.values_[kControllerPitchStep] = 0; controllers.masterTune = 0; + loadPreference(); for (int note = 0; note < MAX_ACTIVE_NOTES; ++note) { @@ -200,7 +203,7 @@ void DexedAudioProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer& mi val = val >> 4; int clip_val = val < -(1 << 24) ? 0x8000 : val >= (1 << 24) ? 0x7fff : val >> 9; - float f = ((float) clip_val) / (float) 32768; + float f = ((float) clip_val) / (float) 0x8000; if( f > 1 ) f = 1; if( f < -1 ) f = -1; sumbuf[j] += f; diff --git a/Source/msfa/controllers.h b/Source/msfa/controllers.h index 140ca0d..6f5f719 100755 --- a/Source/msfa/controllers.h +++ b/Source/msfa/controllers.h @@ -20,6 +20,7 @@ #include "synth.h" #include "../Dexed.h" #include +#include #ifdef _WIN32 #define snprintf _snprintf @@ -77,6 +78,8 @@ class Controllers { public: int values_[131]; + char opSwitch[7]; + int amp_mod; int pitch_mod; int eg_mod; @@ -97,6 +100,7 @@ public: amp_mod = 0; pitch_mod = 0; eg_mod = 0; + strcpy(opSwitch, "111111"); } void refresh() { diff --git a/Source/msfa/dx7note.cc b/Source/msfa/dx7note.cc index 2396944..7af3d29 100644 --- a/Source/msfa/dx7note.cc +++ b/Source/msfa/dx7note.cc @@ -216,19 +216,24 @@ void Dx7Note::compute(int32_t *buf, int32_t lfo_val, int32_t lfo_delay, const Co // ==== OP RENDER ==== for (int op = 0; op < 6; op++) { - //int32_t gain = pow(2, 10 + level * (1.0 / (1 << 24))); - params_[op].freq = Freqlut::lookup(basepitch_[op] + pitch_mod); - - int32_t level = env_[op].getsample(); - if (ampmodsens_[op] != 0) { - uint32_t sensamp = ((uint64_t) amd_mod) * ((uint64_t) ampmodsens_[op]) >> 24; + if ( ctrls->opSwitch[op] == '0' ) { + env_[op].getsample(); // advance the envelop even if it is not playing + params_[op].level_in = 0; + } else { + //int32_t gain = pow(2, 10 + level * (1.0 / (1 << 24))); + params_[op].freq = Freqlut::lookup(basepitch_[op] + pitch_mod); - // TODO: mehhh.. this needs some real tuning. - uint32_t pt = exp(((float)sensamp)/262144 * 0.07 + 12.2); - uint32_t ldiff = ((uint64_t)level) * (((uint64_t)pt<<4)) >> 28; - level -= ldiff; + int32_t level = env_[op].getsample(); + if (ampmodsens_[op] != 0) { + uint32_t sensamp = ((uint64_t) amd_mod) * ((uint64_t) ampmodsens_[op]) >> 24; + + // TODO: mehhh.. this needs some real tuning. + uint32_t pt = exp(((float)sensamp)/262144 * 0.07 + 12.2); + uint32_t ldiff = ((uint64_t)level) * (((uint64_t)pt<<4)) >> 28; + level -= ldiff; + } + params_[op].level_in = level; } - params_[op].level_in = level; } ctrls->core->render(buf, params_, algorithm_, fb_buf_, fb_shift_); }