remove unused interfaces and data classes
This commit is contained in:
		@ -33,7 +33,6 @@
 | 
				
			|||||||
		21AC354419419A4D80ADE43A /* include_juce_audio_plugin_client_AU_2.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E47C0A828016F7D0D63C0D6 /* include_juce_audio_plugin_client_AU_2.mm */; };
 | 
							21AC354419419A4D80ADE43A /* include_juce_audio_plugin_client_AU_2.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E47C0A828016F7D0D63C0D6 /* include_juce_audio_plugin_client_AU_2.mm */; };
 | 
				
			||||||
		2918F46AFD2AB89F9FA847DC /* include_juce_events.mm in Sources */ = {isa = PBXBuildFile; fileRef = 373EF982A53046CE00BECE68 /* include_juce_events.mm */; };
 | 
							2918F46AFD2AB89F9FA847DC /* include_juce_events.mm in Sources */ = {isa = PBXBuildFile; fileRef = 373EF982A53046CE00BECE68 /* include_juce_events.mm */; };
 | 
				
			||||||
		2E77C6FAF1BCDB9EB29D20B9 /* PluginProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D53CAB963D5051C786D3A52D /* PluginProcessor.cpp */; };
 | 
							2E77C6FAF1BCDB9EB29D20B9 /* PluginProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D53CAB963D5051C786D3A52D /* PluginProcessor.cpp */; };
 | 
				
			||||||
		35099D9322CAA87D00CD4523 /* Params.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35099D9122CAA87D00CD4523 /* Params.cpp */; };
 | 
					 | 
				
			||||||
		358E458C22BEE5090087ED8D /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 78CC5234CCFE3B170585DDAD /* RecentFilesMenuTemplate.nib */; };
 | 
							358E458C22BEE5090087ED8D /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 78CC5234CCFE3B170585DDAD /* RecentFilesMenuTemplate.nib */; };
 | 
				
			||||||
		358E458D22BEE5090087ED8D /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1616112041466F7324D7E19 /* Accelerate.framework */; };
 | 
							358E458D22BEE5090087ED8D /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1616112041466F7324D7E19 /* Accelerate.framework */; };
 | 
				
			||||||
		358E458E22BEE5090087ED8D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28CA077CDD21D0FEC66FC290 /* AudioToolbox.framework */; };
 | 
							358E458E22BEE5090087ED8D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28CA077CDD21D0FEC66FC290 /* AudioToolbox.framework */; };
 | 
				
			||||||
@ -123,7 +122,6 @@
 | 
				
			|||||||
		8502F736BECFB9CB752AC72F /* Pills.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C62C3F0621604CDB65B55A6 /* Pills.cpp */; };
 | 
							8502F736BECFB9CB752AC72F /* Pills.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C62C3F0621604CDB65B55A6 /* Pills.cpp */; };
 | 
				
			||||||
		85E6C3826F86B1258C407725 /* FluidSynthModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA25104C95E55D1822BFFBE2 /* FluidSynthModel.cpp */; };
 | 
							85E6C3826F86B1258C407725 /* FluidSynthModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA25104C95E55D1822BFFBE2 /* FluidSynthModel.cpp */; };
 | 
				
			||||||
		909EB835CB55BF0B86B4BD93 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26949DA45B5FE0F3A0355733 /* CoreMIDI.framework */; };
 | 
							909EB835CB55BF0B86B4BD93 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26949DA45B5FE0F3A0355733 /* CoreMIDI.framework */; };
 | 
				
			||||||
		9AF2F3DE22C71A7F465B2EAD /* BankAndPreset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DECFA95359BC1DDDD1CC86C3 /* BankAndPreset.cpp */; };
 | 
					 | 
				
			||||||
		9C107CE4B586E4B097D9D04E /* SurjectiveMidiKeyboardComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4119A8200AC54674C00EFE66 /* SurjectiveMidiKeyboardComponent.cpp */; };
 | 
							9C107CE4B586E4B097D9D04E /* SurjectiveMidiKeyboardComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4119A8200AC54674C00EFE66 /* SurjectiveMidiKeyboardComponent.cpp */; };
 | 
				
			||||||
		9C2580F953071AD611EB6166 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28CA077CDD21D0FEC66FC290 /* AudioToolbox.framework */; };
 | 
							9C2580F953071AD611EB6166 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28CA077CDD21D0FEC66FC290 /* AudioToolbox.framework */; };
 | 
				
			||||||
		AC5E4EF988D864A298E3650D /* TablesComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD5458189C039F5A4FAD62D /* TablesComponent.cpp */; };
 | 
							AC5E4EF988D864A298E3650D /* TablesComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD5458189C039F5A4FAD62D /* TablesComponent.cpp */; };
 | 
				
			||||||
@ -139,7 +137,6 @@
 | 
				
			|||||||
		CB8F898ACB35575C1695E223 /* include_juce_gui_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5276945E14F83CA02C05B41 /* include_juce_gui_basics.mm */; };
 | 
							CB8F898ACB35575C1695E223 /* include_juce_gui_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5276945E14F83CA02C05B41 /* include_juce_gui_basics.mm */; };
 | 
				
			||||||
		DB7F85571650636DB9ECE092 /* include_juce_audio_plugin_client_AU.r in Rez */ = {isa = PBXBuildFile; fileRef = 5704CA923F677280C02D97C6 /* include_juce_audio_plugin_client_AU.r */; };
 | 
							DB7F85571650636DB9ECE092 /* include_juce_audio_plugin_client_AU.r in Rez */ = {isa = PBXBuildFile; fileRef = 5704CA923F677280C02D97C6 /* include_juce_audio_plugin_client_AU.r */; };
 | 
				
			||||||
		DDF28AD28F639A561292FE28 /* include_juce_core.mm in Sources */ = {isa = PBXBuildFile; fileRef = F69B741A63932433977CFCD8 /* include_juce_core.mm */; };
 | 
							DDF28AD28F639A561292FE28 /* include_juce_core.mm in Sources */ = {isa = PBXBuildFile; fileRef = F69B741A63932433977CFCD8 /* include_juce_core.mm */; };
 | 
				
			||||||
		DF84F5E7E386AF7A38854939 /* Preset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59F9FEC807012C10B8A1FA07 /* Preset.cpp */; };
 | 
					 | 
				
			||||||
		E08B3A2AF85F9FCF991F1CA2 /* include_juce_audio_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13E201F5B25AC078DB396A9C /* include_juce_audio_basics.mm */; };
 | 
							E08B3A2AF85F9FCF991F1CA2 /* include_juce_audio_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13E201F5B25AC078DB396A9C /* include_juce_audio_basics.mm */; };
 | 
				
			||||||
		FDAB0F06D8758FF0407BB851 /* include_juce_data_structures.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C66D01D1DD9006E77E2E260 /* include_juce_data_structures.mm */; };
 | 
							FDAB0F06D8758FF0407BB851 /* include_juce_data_structures.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C66D01D1DD9006E77E2E260 /* include_juce_data_structures.mm */; };
 | 
				
			||||||
		FE0869D2DF902682B6E4C925 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C481A535CF8A4CBC3E594003 /* WebKit.framework */; };
 | 
							FE0869D2DF902682B6E4C925 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C481A535CF8A4CBC3E594003 /* WebKit.framework */; };
 | 
				
			||||||
@ -284,11 +281,7 @@
 | 
				
			|||||||
		2C66D01D1DD9006E77E2E260 /* include_juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_data_structures.mm; path = ../../JuceLibraryCode/include_juce_data_structures.mm; sourceTree = SOURCE_ROOT; };
 | 
							2C66D01D1DD9006E77E2E260 /* include_juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_data_structures.mm; path = ../../JuceLibraryCode/include_juce_data_structures.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		307CB49DF900DE4A612FF98E /* FluidSynthModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FluidSynthModel.h; path = ../../Source/FluidSynthModel.h; sourceTree = SOURCE_ROOT; };
 | 
							307CB49DF900DE4A612FF98E /* FluidSynthModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FluidSynthModel.h; path = ../../Source/FluidSynthModel.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		35099D9022CA8EF500CD4523 /* Util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Util.h; path = ../../Source/Util.h; sourceTree = "<group>"; };
 | 
							35099D9022CA8EF500CD4523 /* Util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Util.h; path = ../../Source/Util.h; sourceTree = "<group>"; };
 | 
				
			||||||
		35099D9122CAA87D00CD4523 /* Params.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Params.cpp; path = ../../Source/Params.cpp; sourceTree = "<group>"; };
 | 
					 | 
				
			||||||
		35099D9222CAA87D00CD4523 /* Params.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Params.h; path = ../../Source/Params.h; sourceTree = "<group>"; };
 | 
					 | 
				
			||||||
		35099D9422CAB0A400CD4523 /* GuiConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GuiConstants.h; path = ../../Source/GuiConstants.h; sourceTree = "<group>"; };
 | 
							35099D9422CAB0A400CD4523 /* GuiConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GuiConstants.h; path = ../../Source/GuiConstants.h; sourceTree = "<group>"; };
 | 
				
			||||||
		35099D9522CAB7CD00CD4523 /* SlidersFragment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SlidersFragment.h; path = ../../Source/SlidersFragment.h; sourceTree = "<group>"; };
 | 
					 | 
				
			||||||
		35099D9622CAC3C800CD4523 /* SharesParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharesParams.h; path = ../../Source/SharesParams.h; sourceTree = "<group>"; };
 | 
					 | 
				
			||||||
		35880F58CB540AD30D1B0ED3 /* TablesComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TablesComponent.h; path = ../../Source/TablesComponent.h; sourceTree = SOURCE_ROOT; };
 | 
							35880F58CB540AD30D1B0ED3 /* TablesComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TablesComponent.h; path = ../../Source/TablesComponent.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		358E45B422BEE53A0087ED8D /* libpcre.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libpcre.1.dylib; sourceTree = "<group>"; };
 | 
							358E45B422BEE53A0087ED8D /* libpcre.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libpcre.1.dylib; sourceTree = "<group>"; };
 | 
				
			||||||
		358E45B522BEE53A0087ED8D /* libvorbisenc.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libvorbisenc.2.dylib; sourceTree = "<group>"; };
 | 
							358E45B522BEE53A0087ED8D /* libvorbisenc.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libvorbisenc.2.dylib; sourceTree = "<group>"; };
 | 
				
			||||||
@ -316,12 +309,10 @@
 | 
				
			|||||||
		5704CA923F677280C02D97C6 /* 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; };
 | 
							5704CA923F677280C02D97C6 /* 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; };
 | 
				
			||||||
		576A01FC6A3620A39BD1BDEE /* MyColours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MyColours.h; path = ../../Source/MyColours.h; sourceTree = SOURCE_ROOT; };
 | 
							576A01FC6A3620A39BD1BDEE /* MyColours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MyColours.h; path = ../../Source/MyColours.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		5896415135C635B1EB2DC202 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
 | 
							5896415135C635B1EB2DC202 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
		59F9FEC807012C10B8A1FA07 /* Preset.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Preset.cpp; path = ../../Source/Preset.cpp; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		5A57BEB8628C7AE62ED1039F /* 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; };
 | 
							5A57BEB8628C7AE62ED1039F /* 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; };
 | 
				
			||||||
		60ADEC8B20DC559737F84180 /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = /Applications/JUCE/modules/juce_gui_basics; sourceTree = "<absolute>"; };
 | 
							60ADEC8B20DC559737F84180 /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = /Applications/JUCE/modules/juce_gui_basics; sourceTree = "<absolute>"; };
 | 
				
			||||||
		663ACFA11DCEC0D411B8497E /* juicysfplugin.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = juicysfplugin.entitlements; sourceTree = SOURCE_ROOT; };
 | 
							663ACFA11DCEC0D411B8497E /* juicysfplugin.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = juicysfplugin.entitlements; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		6714B050717A7500EE7AE867 /* include_juce_audio_plugin_client_VST2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_plugin_client_VST2.cpp; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp; sourceTree = SOURCE_ROOT; };
 | 
							6714B050717A7500EE7AE867 /* include_juce_audio_plugin_client_VST2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_plugin_client_VST2.cpp; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		69DB3A0FB3D21F87D1E4B0C1 /* PresetsToBanks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PresetsToBanks.h; path = ../../Source/PresetsToBanks.h; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		6A7F287E4159FA5167131D2B /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_processors; path = /Applications/JUCE/modules/juce_audio_processors; sourceTree = "<absolute>"; };
 | 
							6A7F287E4159FA5167131D2B /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_processors; path = /Applications/JUCE/modules/juce_audio_processors; sourceTree = "<absolute>"; };
 | 
				
			||||||
		6C5DCE19B6DC0EF5BA12F99C /* juicysfplugin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = juicysfplugin.app; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
							6C5DCE19B6DC0EF5BA12F99C /* juicysfplugin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = juicysfplugin.app; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
				
			||||||
		6D94DCB335360BDC7B3673BF /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 | 
							6D94DCB335360BDC7B3673BF /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
@ -333,7 +324,6 @@
 | 
				
			|||||||
		7C699A8B65F3F9FB5004F22D /* juce_gui_extra */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_extra; path = /Applications/JUCE/modules/juce_gui_extra; sourceTree = "<absolute>"; };
 | 
							7C699A8B65F3F9FB5004F22D /* juce_gui_extra */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_extra; path = /Applications/JUCE/modules/juce_gui_extra; sourceTree = "<absolute>"; };
 | 
				
			||||||
		7D2457AD994644752178FC82 /* include_juce_audio_plugin_client_VST_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_plugin_client_VST_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_VST_utils.mm; sourceTree = SOURCE_ROOT; };
 | 
							7D2457AD994644752178FC82 /* include_juce_audio_plugin_client_VST_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_plugin_client_VST_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_VST_utils.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		7E47C0A828016F7D0D63C0D6 /* include_juce_audio_plugin_client_AU_2.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_plugin_client_AU_2.mm; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm; sourceTree = SOURCE_ROOT; };
 | 
							7E47C0A828016F7D0D63C0D6 /* include_juce_audio_plugin_client_AU_2.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_plugin_client_AU_2.mm; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		88ADEBF51BD04FEA9422D276 /* FilePickerFragment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilePickerFragment.h; path = ../../Source/FilePickerFragment.h; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		8990F3EAFFBBD6A42247C663 /* PluginEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginEditor.h; path = ../../Source/PluginEditor.h; sourceTree = SOURCE_ROOT; };
 | 
							8990F3EAFFBBD6A42247C663 /* PluginEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginEditor.h; path = ../../Source/PluginEditor.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		910F2E433646EE260D61A91B /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
 | 
							910F2E433646EE260D61A91B /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
		91B7A726C6FDDEE3F364ED99 /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = /Applications/JUCE/modules/juce_events; sourceTree = "<absolute>"; };
 | 
							91B7A726C6FDDEE3F364ED99 /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = /Applications/JUCE/modules/juce_events; sourceTree = "<absolute>"; };
 | 
				
			||||||
@ -342,8 +332,6 @@
 | 
				
			|||||||
		A67D09546C4E4831438F7DBD /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
 | 
							A67D09546C4E4831438F7DBD /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
		A6BC2528C1717DDC2B66215E /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; };
 | 
							A6BC2528C1717DDC2B66215E /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		ADC93C26314F163B963461E2 /* include_juce_audio_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_utils.mm; sourceTree = SOURCE_ROOT; };
 | 
							ADC93C26314F163B963461E2 /* include_juce_audio_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_utils.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		AE397302E7E3F3A14A0C5F3C /* Preset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Preset.h; path = ../../Source/Preset.h; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		B000E7A360C0C86ADD3C911D /* BankAndPreset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BankAndPreset.h; path = ../../Source/BankAndPreset.h; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		B6D37AD919F9E83688578941 /* SurjectiveMidiKeyboardComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SurjectiveMidiKeyboardComponent.h; path = ../../Source/SurjectiveMidiKeyboardComponent.h; sourceTree = SOURCE_ROOT; };
 | 
							B6D37AD919F9E83688578941 /* SurjectiveMidiKeyboardComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SurjectiveMidiKeyboardComponent.h; path = ../../Source/SurjectiveMidiKeyboardComponent.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		BFB39134DE6876F9005CFA61 /* Pills.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Pills.h; path = ../../Source/Pills.h; sourceTree = SOURCE_ROOT; };
 | 
							BFB39134DE6876F9005CFA61 /* Pills.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Pills.h; path = ../../Source/Pills.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		BFF57868318157F12F087F07 /* Info-AU.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-AU.plist"; sourceTree = SOURCE_ROOT; };
 | 
							BFF57868318157F12F087F07 /* Info-AU.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-AU.plist"; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
@ -356,10 +344,8 @@
 | 
				
			|||||||
		D11295BAED9825695A4DEAB8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 | 
							D11295BAED9825695A4DEAB8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
		D53CAB963D5051C786D3A52D /* PluginProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessor.cpp; path = ../../Source/PluginProcessor.cpp; sourceTree = SOURCE_ROOT; };
 | 
							D53CAB963D5051C786D3A52D /* PluginProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessor.cpp; path = ../../Source/PluginProcessor.cpp; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		DA25104C95E55D1822BFFBE2 /* FluidSynthModel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FluidSynthModel.cpp; path = ../../Source/FluidSynthModel.cpp; sourceTree = SOURCE_ROOT; };
 | 
							DA25104C95E55D1822BFFBE2 /* FluidSynthModel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FluidSynthModel.cpp; path = ../../Source/FluidSynthModel.cpp; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		DECFA95359BC1DDDD1CC86C3 /* BankAndPreset.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BankAndPreset.cpp; path = ../../Source/BankAndPreset.cpp; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		E4F84AFD6C449D10FDB5DB14 /* include_juce_audio_plugin_client_VST3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_plugin_client_VST3.cpp; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp; sourceTree = SOURCE_ROOT; };
 | 
							E4F84AFD6C449D10FDB5DB14 /* include_juce_audio_plugin_client_VST3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_plugin_client_VST3.cpp; path = ../../JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		E89ECA468FF133B4677F8327 /* juicysfplugin.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = juicysfplugin.vst; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
							E89ECA468FF133B4677F8327 /* juicysfplugin.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = juicysfplugin.vst; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
				
			||||||
		F1EB35E262DC717222E2F93D /* ExposesComponents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ExposesComponents.h; path = ../../Source/ExposesComponents.h; sourceTree = SOURCE_ROOT; };
 | 
					 | 
				
			||||||
		F5276945E14F83CA02C05B41 /* include_juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_basics.mm; path = ../../JuceLibraryCode/include_juce_gui_basics.mm; sourceTree = SOURCE_ROOT; };
 | 
							F5276945E14F83CA02C05B41 /* include_juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_basics.mm; path = ../../JuceLibraryCode/include_juce_gui_basics.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		F69B741A63932433977CFCD8 /* include_juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_core.mm; path = ../../JuceLibraryCode/include_juce_core.mm; sourceTree = SOURCE_ROOT; };
 | 
							F69B741A63932433977CFCD8 /* include_juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_core.mm; path = ../../JuceLibraryCode/include_juce_core.mm; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		FE960C7D2CFA204401860C13 /* juce_audio_formats */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_formats; path = /Applications/JUCE/modules/juce_audio_formats; sourceTree = "<absolute>"; };
 | 
							FE960C7D2CFA204401860C13 /* juce_audio_formats */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_formats; path = /Applications/JUCE/modules/juce_audio_formats; sourceTree = "<absolute>"; };
 | 
				
			||||||
@ -521,11 +507,6 @@
 | 
				
			|||||||
		403EB0CF49CF1D62BF359002 /* Source */ = {
 | 
							403EB0CF49CF1D62BF359002 /* Source */ = {
 | 
				
			||||||
			isa = PBXGroup;
 | 
								isa = PBXGroup;
 | 
				
			||||||
			children = (
 | 
								children = (
 | 
				
			||||||
				35099D9622CAC3C800CD4523 /* SharesParams.h */,
 | 
					 | 
				
			||||||
				DECFA95359BC1DDDD1CC86C3 /* BankAndPreset.cpp */,
 | 
					 | 
				
			||||||
				B000E7A360C0C86ADD3C911D /* BankAndPreset.h */,
 | 
					 | 
				
			||||||
				F1EB35E262DC717222E2F93D /* ExposesComponents.h */,
 | 
					 | 
				
			||||||
				88ADEBF51BD04FEA9422D276 /* FilePickerFragment.h */,
 | 
					 | 
				
			||||||
				C13A2FEAA636713EC7A905AF /* FilePicker.cpp */,
 | 
									C13A2FEAA636713EC7A905AF /* FilePicker.cpp */,
 | 
				
			||||||
				21828DE4341668D7E383F10A /* FilePicker.h */,
 | 
									21828DE4341668D7E383F10A /* FilePicker.h */,
 | 
				
			||||||
				DA25104C95E55D1822BFFBE2 /* FluidSynthModel.cpp */,
 | 
									DA25104C95E55D1822BFFBE2 /* FluidSynthModel.cpp */,
 | 
				
			||||||
@ -534,9 +515,6 @@
 | 
				
			|||||||
				576A01FC6A3620A39BD1BDEE /* MyColours.h */,
 | 
									576A01FC6A3620A39BD1BDEE /* MyColours.h */,
 | 
				
			||||||
				2C62C3F0621604CDB65B55A6 /* Pills.cpp */,
 | 
									2C62C3F0621604CDB65B55A6 /* Pills.cpp */,
 | 
				
			||||||
				BFB39134DE6876F9005CFA61 /* Pills.h */,
 | 
									BFB39134DE6876F9005CFA61 /* Pills.h */,
 | 
				
			||||||
				59F9FEC807012C10B8A1FA07 /* Preset.cpp */,
 | 
					 | 
				
			||||||
				AE397302E7E3F3A14A0C5F3C /* Preset.h */,
 | 
					 | 
				
			||||||
				69DB3A0FB3D21F87D1E4B0C1 /* PresetsToBanks.h */,
 | 
					 | 
				
			||||||
				4119A8200AC54674C00EFE66 /* SurjectiveMidiKeyboardComponent.cpp */,
 | 
									4119A8200AC54674C00EFE66 /* SurjectiveMidiKeyboardComponent.cpp */,
 | 
				
			||||||
				B6D37AD919F9E83688578941 /* SurjectiveMidiKeyboardComponent.h */,
 | 
									B6D37AD919F9E83688578941 /* SurjectiveMidiKeyboardComponent.h */,
 | 
				
			||||||
				CE8C41308A31A71A1177D0D5 /* TableComponent.cpp */,
 | 
									CE8C41308A31A71A1177D0D5 /* TableComponent.cpp */,
 | 
				
			||||||
@ -551,10 +529,7 @@
 | 
				
			|||||||
				358E45F922C80DCA0087ED8D /* SlidersComponent.cpp */,
 | 
									358E45F922C80DCA0087ED8D /* SlidersComponent.cpp */,
 | 
				
			||||||
				358E45FA22C80DCA0087ED8D /* SlidersComponent.h */,
 | 
									358E45FA22C80DCA0087ED8D /* SlidersComponent.h */,
 | 
				
			||||||
				35099D9022CA8EF500CD4523 /* Util.h */,
 | 
									35099D9022CA8EF500CD4523 /* Util.h */,
 | 
				
			||||||
				35099D9122CAA87D00CD4523 /* Params.cpp */,
 | 
					 | 
				
			||||||
				35099D9222CAA87D00CD4523 /* Params.h */,
 | 
					 | 
				
			||||||
				35099D9422CAB0A400CD4523 /* GuiConstants.h */,
 | 
									35099D9422CAB0A400CD4523 /* GuiConstants.h */,
 | 
				
			||||||
				35099D9522CAB7CD00CD4523 /* SlidersFragment.h */,
 | 
					 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			name = Source;
 | 
								name = Source;
 | 
				
			||||||
			sourceTree = "<group>";
 | 
								sourceTree = "<group>";
 | 
				
			||||||
@ -937,12 +912,10 @@
 | 
				
			|||||||
			isa = PBXSourcesBuildPhase;
 | 
								isa = PBXSourcesBuildPhase;
 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
			files = (
 | 
								files = (
 | 
				
			||||||
				9AF2F3DE22C71A7F465B2EAD /* BankAndPreset.cpp in Sources */,
 | 
					 | 
				
			||||||
				598516649859A6D6BB2856EF /* FilePicker.cpp in Sources */,
 | 
									598516649859A6D6BB2856EF /* FilePicker.cpp in Sources */,
 | 
				
			||||||
				85E6C3826F86B1258C407725 /* FluidSynthModel.cpp in Sources */,
 | 
									85E6C3826F86B1258C407725 /* FluidSynthModel.cpp in Sources */,
 | 
				
			||||||
				BFD9EF2D67067FC1E5BA3546 /* MyColours.cpp in Sources */,
 | 
									BFD9EF2D67067FC1E5BA3546 /* MyColours.cpp in Sources */,
 | 
				
			||||||
				8502F736BECFB9CB752AC72F /* Pills.cpp in Sources */,
 | 
									8502F736BECFB9CB752AC72F /* Pills.cpp in Sources */,
 | 
				
			||||||
				DF84F5E7E386AF7A38854939 /* Preset.cpp in Sources */,
 | 
					 | 
				
			||||||
				9C107CE4B586E4B097D9D04E /* SurjectiveMidiKeyboardComponent.cpp in Sources */,
 | 
									9C107CE4B586E4B097D9D04E /* SurjectiveMidiKeyboardComponent.cpp in Sources */,
 | 
				
			||||||
				4AE057561AEA78489D9E50F0 /* TableComponent.cpp in Sources */,
 | 
									4AE057561AEA78489D9E50F0 /* TableComponent.cpp in Sources */,
 | 
				
			||||||
				AC5E4EF988D864A298E3650D /* TablesComponent.cpp in Sources */,
 | 
									AC5E4EF988D864A298E3650D /* TablesComponent.cpp in Sources */,
 | 
				
			||||||
@ -950,7 +923,6 @@
 | 
				
			|||||||
				7DF73014FFCCE46E228216DB /* PluginEditor.cpp in Sources */,
 | 
									7DF73014FFCCE46E228216DB /* PluginEditor.cpp in Sources */,
 | 
				
			||||||
				E08B3A2AF85F9FCF991F1CA2 /* include_juce_audio_basics.mm in Sources */,
 | 
									E08B3A2AF85F9FCF991F1CA2 /* include_juce_audio_basics.mm in Sources */,
 | 
				
			||||||
				C4D76C968347E2ACBAB5B6E7 /* include_juce_audio_devices.mm in Sources */,
 | 
									C4D76C968347E2ACBAB5B6E7 /* include_juce_audio_devices.mm in Sources */,
 | 
				
			||||||
				35099D9322CAA87D00CD4523 /* Params.cpp in Sources */,
 | 
					 | 
				
			||||||
				51C9DBCA840E334DB1804133 /* include_juce_audio_formats.mm in Sources */,
 | 
									51C9DBCA840E334DB1804133 /* include_juce_audio_formats.mm in Sources */,
 | 
				
			||||||
				358E45FB22C80DCA0087ED8D /* SlidersComponent.cpp in Sources */,
 | 
									358E45FB22C80DCA0087ED8D /* SlidersComponent.cpp in Sources */,
 | 
				
			||||||
				5E5B833BBDD65F0D4271CA52 /* include_juce_audio_plugin_client_utils.cpp in Sources */,
 | 
									5E5B833BBDD65F0D4271CA52 /* include_juce_audio_plugin_client_utils.cpp in Sources */,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,19 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 13/04/2018.
 | 
					 | 
				
			||||||
// Copyright (c) 2018 Birchlabs. All rights reserved.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "BankAndPreset.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
BankAndPreset::BankAndPreset(int bank, int preset)
 | 
					 | 
				
			||||||
        : bank(bank),
 | 
					 | 
				
			||||||
          preset(preset)
 | 
					 | 
				
			||||||
{}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int BankAndPreset::getBank() {
 | 
					 | 
				
			||||||
    return bank;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int BankAndPreset::getPreset() {
 | 
					 | 
				
			||||||
    return preset;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,23 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 13/04/2018.
 | 
					 | 
				
			||||||
// Copyright (c) 2018 Birchlabs. All rights reserved.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class BankAndPreset {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    BankAndPreset(int bank, int preset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    int getBank();
 | 
					 | 
				
			||||||
    int getPreset();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
    int bank;
 | 
					 | 
				
			||||||
    int preset;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BankAndPreset)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 11/04/2018.
 | 
					 | 
				
			||||||
// Copyright (c) 2018 Birchlabs. All rights reserved.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "FilePickerFragment.h"
 | 
					 | 
				
			||||||
#include "SlidersFragment.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ExposesComponents {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    virtual ~ExposesComponents() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual FilePickerFragment& getFilePicker() = 0;
 | 
					 | 
				
			||||||
    virtual SlidersFragment& getSliders() = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@ -6,10 +6,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					#include "../JuceLibraryCode/JuceHeader.h"
 | 
				
			||||||
#include "FluidSynthModel.h"
 | 
					#include "FluidSynthModel.h"
 | 
				
			||||||
#include "FilePickerFragment.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FilePicker: public Component,
 | 
					class FilePicker: public Component,
 | 
				
			||||||
                  public FilePickerFragment,
 | 
					 | 
				
			||||||
                  public ValueTree::Listener,
 | 
					                  public ValueTree::Listener,
 | 
				
			||||||
                  private FilenameComponentListener
 | 
					                  private FilenameComponentListener
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -23,7 +21,7 @@ public:
 | 
				
			|||||||
    void resized() override;
 | 
					    void resized() override;
 | 
				
			||||||
    void paint (Graphics& g) override;
 | 
					    void paint (Graphics& g) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void setDisplayedFilePath(const String&) override;
 | 
					    void setDisplayedFilePath(const String&);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged,
 | 
					    virtual void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 11/04/2018.
 | 
					 | 
				
			||||||
// Copyright (c) 2018 Birchlabs. All rights reserved.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class FilePickerFragment {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    virtual ~FilePickerFragment() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void setDisplayedFilePath(const String&) = 0;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@ -5,11 +5,8 @@
 | 
				
			|||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					#include "../JuceLibraryCode/JuceHeader.h"
 | 
				
			||||||
#include "SharesParams.h"
 | 
					 | 
				
			||||||
#include <fluidsynth.h>
 | 
					#include <fluidsynth.h>
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
#include "BankAndPreset.h"
 | 
					 | 
				
			||||||
#include "PresetsToBanks.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -69,10 +66,6 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    float currentSampleRate;
 | 
					    float currentSampleRate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fluid_preset_t* getFirstPreset();
 | 
					 | 
				
			||||||
    void selectFirstPreset();
 | 
					 | 
				
			||||||
    unique_ptr<BankAndPreset> getFirstBankAndPreset();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void unloadAndLoadFont(const String &absPath);
 | 
					    void unloadAndLoadFont(const String &absPath);
 | 
				
			||||||
    void loadFont(const String &absPath);
 | 
					    void loadFont(const String &absPath);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
				
			|||||||
@ -1,152 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
//  Params.cpp
 | 
					 | 
				
			||||||
//  juicysfplugin - Shared Code
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//  Created by Alex Birch on 01/07/2019.
 | 
					 | 
				
			||||||
//  Copyright © 2019 Birchlabs. All rights reserved.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "Params.h"
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
#include "MidiConstants.h"
 | 
					 | 
				
			||||||
#include "GuiConstants.h"
 | 
					 | 
				
			||||||
#include "SharesParams.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using namespace std;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Params::Params() noexcept
 | 
					 | 
				
			||||||
// : uiWidth{GuiConstants::minWidth}
 | 
					 | 
				
			||||||
// , uiHeight{GuiConstants::minHeight}
 | 
					 | 
				
			||||||
: soundFontPath{String()}
 | 
					 | 
				
			||||||
// , preset{-1}
 | 
					 | 
				
			||||||
// , bank{-1}
 | 
					 | 
				
			||||||
// , attack{0}
 | 
					 | 
				
			||||||
// , decay{0}
 | 
					 | 
				
			||||||
// , sustain{0}
 | 
					 | 
				
			||||||
// , release{0}
 | 
					 | 
				
			||||||
// , filterCutOff{0}
 | 
					 | 
				
			||||||
// .filterResonance{0}
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void Params::setAttributesOnXml(shared_ptr<XmlElement> xml) {
 | 
					 | 
				
			||||||
    // xml->setAttribute("uiWidth", uiWidth);
 | 
					 | 
				
			||||||
    // xml->setAttribute("uiHeight", uiHeight);
 | 
					 | 
				
			||||||
    xml->setAttribute("soundFontPath", soundFontPath);
 | 
					 | 
				
			||||||
    // xml.setAttribute("preset", preset);
 | 
					 | 
				
			||||||
    // xml.setAttribute("bank", bank);
 | 
					 | 
				
			||||||
    // xml.setAttribute("attack", attack);
 | 
					 | 
				
			||||||
    // xml.setAttribute("decay", decay);
 | 
					 | 
				
			||||||
    // xml.setAttribute("sustain", sustain);
 | 
					 | 
				
			||||||
    // xml.setAttribute("release", release);
 | 
					 | 
				
			||||||
    // xml.setAttribute("filterCutOff", filterCutOff);
 | 
					 | 
				
			||||||
    // xml.setAttribute("filterResonance", filterResonance);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void Params::loadAttributesFromXml(shared_ptr<XmlElement> xmlState) {
 | 
					 | 
				
			||||||
    // uiWidth = jmin(jmax(xmlState->getIntAttribute("uiWidth", uiWidth), GuiConstants::minWidth), GuiConstants::maxWidth);
 | 
					 | 
				
			||||||
    // uiHeight = jmin(jmax(xmlState->getIntAttribute("uiHeight", uiHeight), GuiConstants::minHeight), GuiConstants::maxHeight);
 | 
					 | 
				
			||||||
    soundFontPath = xmlState->getStringAttribute("soundFontPath", soundFontPath);
 | 
					 | 
				
			||||||
    // preset = xmlState->getIntAttribute("preset", preset);
 | 
					 | 
				
			||||||
    // bank = xmlState->getIntAttribute("bank", bank);
 | 
					 | 
				
			||||||
    // attack = jmin(jmax(xmlState->getIntAttribute("attack", attack), MidiConstants::midiMinValue), MidiConstants::midiMaxValue);
 | 
					 | 
				
			||||||
    // decay = jmin(jmax(xmlState->getIntAttribute("decay", decay), MidiConstants::midiMinValue), MidiConstants::midiMaxValue);
 | 
					 | 
				
			||||||
    // sustain = jmin(jmax(xmlState->getIntAttribute("sustain", sustain), MidiConstants::midiMinValue), MidiConstants::midiMaxValue);
 | 
					 | 
				
			||||||
    // release = jmin(jmax(xmlState->getIntAttribute("release", release), MidiConstants::midiMinValue), MidiConstants::midiMaxValue);
 | 
					 | 
				
			||||||
    // filterCutOff = jmin(jmax(xmlState->getIntAttribute("filterCutOff", filterCutOff), MidiConstants::midiMinValue), MidiConstants::midiMaxValue);
 | 
					 | 
				
			||||||
    // filterResonance = jmin(jmax(xmlState->getIntAttribute("filterResonance", filterResonance), MidiConstants::midiMinValue), MidiConstants::midiMaxValue);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//void Params::acceptMidiControlEvent(int controller, int value) {
 | 
					 | 
				
			||||||
//    switch(static_cast<fluid_midi_control_change>(controller)) {
 | 
					 | 
				
			||||||
//        case SOUND_CTRL2: // MIDI CC 71 Timbre/Harmonic Intensity (filter resonance)
 | 
					 | 
				
			||||||
//            filterResonance = value;
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//        case SOUND_CTRL3: // MIDI CC 72 Release time
 | 
					 | 
				
			||||||
//            release = value;
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//        case SOUND_CTRL4: // MIDI CC 73 Attack time
 | 
					 | 
				
			||||||
//            attack = value;
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//        case SOUND_CTRL5: // MIDI CC 74 Brightness (cutoff frequency, FILTERFC)
 | 
					 | 
				
			||||||
//            filterCutOff = value;
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//        case SOUND_CTRL6: // MIDI CC 75 Decay Time
 | 
					 | 
				
			||||||
//            decay = value;
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//        case SOUND_CTRL10: // MIDI CC 79 undefined
 | 
					 | 
				
			||||||
//            sustain = value;
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//        default:
 | 
					 | 
				
			||||||
//            break;
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void Params::setSoundFontPath(const String& value) {
 | 
					 | 
				
			||||||
    soundFontPath = value;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
String& Params::getSoundFontPath() {
 | 
					 | 
				
			||||||
    return soundFontPath;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
//int Params::getPreset() {
 | 
					 | 
				
			||||||
//    return preset;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//int Params::getBank() {
 | 
					 | 
				
			||||||
//    return bank;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
// int Params::getUiWidth() {
 | 
					 | 
				
			||||||
//     return uiWidth;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// int Params::getUiHeight() {
 | 
					 | 
				
			||||||
//     return uiHeight;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
//int Params::getAttack() {
 | 
					 | 
				
			||||||
//    return attack;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//int Params::getDecay() {
 | 
					 | 
				
			||||||
//    return decay;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//int Params::getSustain() {
 | 
					 | 
				
			||||||
//    return sustain;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//int Params::getRelease() {
 | 
					 | 
				
			||||||
//    return release;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//int Params::getFilterCutOff() {
 | 
					 | 
				
			||||||
//    return filterCutOff;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//int Params::getFilterResonance() {
 | 
					 | 
				
			||||||
//    return filterResonance;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//void Params::setPreset(int value) {
 | 
					 | 
				
			||||||
//    preset = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//void Params::setBank(int value) {
 | 
					 | 
				
			||||||
//    bank = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
// void Params::setUiWidth(int value) {
 | 
					 | 
				
			||||||
//     uiWidth = value;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// void Params::setUiHeight(int value) {
 | 
					 | 
				
			||||||
//     uiHeight = value;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
//void Params::setAttack(int value) {
 | 
					 | 
				
			||||||
//    attack = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//void Params::setDecay(int value) {
 | 
					 | 
				
			||||||
//    decay = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//void Params::setSustain(int value) {
 | 
					 | 
				
			||||||
//    sustain = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//void Params::setRelease(int value) {
 | 
					 | 
				
			||||||
//    release = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//void Params::setFilterCutOff(int value) {
 | 
					 | 
				
			||||||
//    filterCutOff = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//void Params::setFilterResonance(int value) {
 | 
					 | 
				
			||||||
//    filterResonance = value;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
@ -1,59 +0,0 @@
 | 
				
			|||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "SharesParams.h"
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using namespace std;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Params: public SharesParams {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    Params() noexcept;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void setAttributesOnXml(shared_ptr<XmlElement> xml) override;
 | 
					 | 
				
			||||||
    virtual void loadAttributesFromXml(shared_ptr<XmlElement> xmlState) override;
 | 
					 | 
				
			||||||
//    virtual void acceptMidiControlEvent(int controller, int value) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void setSoundFontPath(const String& value) override;
 | 
					 | 
				
			||||||
    virtual String& getSoundFontPath() override;
 | 
					 | 
				
			||||||
    // virtual int getPreset() override;
 | 
					 | 
				
			||||||
    // virtual void setPreset(int value) override;
 | 
					 | 
				
			||||||
    // virtual int getBank() override;
 | 
					 | 
				
			||||||
    // virtual void setBank(int value) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual int getUiWidth() override;
 | 
					 | 
				
			||||||
    // virtual void setUiWidth(int value) override;
 | 
					 | 
				
			||||||
    // virtual int getUiHeight() override;
 | 
					 | 
				
			||||||
    // virtual void setUiHeight(int value) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual int getAttack() override;
 | 
					 | 
				
			||||||
    // virtual void setAttack(int value) override;
 | 
					 | 
				
			||||||
    // virtual int getDecay() override;
 | 
					 | 
				
			||||||
    // virtual void setDecay(int value) override;
 | 
					 | 
				
			||||||
    // virtual int getSustain() override;
 | 
					 | 
				
			||||||
    // virtual void setSustain(int value) override;
 | 
					 | 
				
			||||||
    // virtual int getRelease() override;
 | 
					 | 
				
			||||||
    // virtual void setRelease(int value) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual int getFilterCutOff() override;
 | 
					 | 
				
			||||||
    // virtual void setFilterCutOff(int value) override;
 | 
					 | 
				
			||||||
    // virtual int getFilterResonance() override;
 | 
					 | 
				
			||||||
    // virtual void setFilterResonance(int value) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
    // int uiWidth;
 | 
					 | 
				
			||||||
    // int uiHeight;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    String soundFontPath;
 | 
					 | 
				
			||||||
    // int preset;
 | 
					 | 
				
			||||||
    // int bank;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // int attack;
 | 
					 | 
				
			||||||
    // int decay;
 | 
					 | 
				
			||||||
    // int sustain;
 | 
					 | 
				
			||||||
    // int release;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // int filterCutOff;
 | 
					 | 
				
			||||||
    // int filterResonance;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Params)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@ -11,7 +11,6 @@ using namespace std;
 | 
				
			|||||||
class Pill
 | 
					class Pill
 | 
				
			||||||
: public Component
 | 
					: public Component
 | 
				
			||||||
, public Button::Listener
 | 
					, public Button::Listener
 | 
				
			||||||
// , public AudioProcessorValueTreeState::Listener
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    Pill(
 | 
					    Pill(
 | 
				
			||||||
@ -28,10 +27,7 @@ public:
 | 
				
			|||||||
    void paint(Graphics& g) override;
 | 
					    void paint(Graphics& g) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void bankChanged(int bank);
 | 
					    void bankChanged(int bank);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual void parameterChanged (const String& parameterID, float newValue) override;
 | 
					 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    // void loadToggleState();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState;
 | 
					    AudioProcessorValueTreeState& valueTreeState;
 | 
				
			||||||
    int bank;
 | 
					    int bank;
 | 
				
			||||||
@ -48,20 +44,9 @@ class Pills
 | 
				
			|||||||
public:
 | 
					public:
 | 
				
			||||||
    Pills(
 | 
					    Pills(
 | 
				
			||||||
        AudioProcessorValueTreeState& valueTreeState
 | 
					        AudioProcessorValueTreeState& valueTreeState
 | 
				
			||||||
        // string label
 | 
					 | 
				
			||||||
        // const vector<string> &items,
 | 
					 | 
				
			||||||
        // const function<void (int)> &onItemSelected,
 | 
					 | 
				
			||||||
        // const function<int (const string&)> &itemToIDMapper,
 | 
					 | 
				
			||||||
        // int initiallySelectedItem
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    ~Pills();
 | 
					    ~Pills();
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // void setItems(
 | 
					 | 
				
			||||||
    //         const vector<string> &items,
 | 
					 | 
				
			||||||
    //         int initiallySelectedItem
 | 
					 | 
				
			||||||
    // );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // void buttonClicked (Button* button) override;
 | 
					 | 
				
			||||||
    void cycle(bool right);
 | 
					    void cycle(bool right);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void parameterChanged (const String& parameterID, float newValue) override;
 | 
					    virtual void parameterChanged (const String& parameterID, float newValue) override;
 | 
				
			||||||
@ -81,17 +66,10 @@ private:
 | 
				
			|||||||
    void loadModelFrom(ValueTree& banks);
 | 
					    void loadModelFrom(ValueTree& banks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState;
 | 
					    AudioProcessorValueTreeState& valueTreeState;
 | 
				
			||||||
    // string label;
 | 
					 | 
				
			||||||
    // vector<string> items;
 | 
					 | 
				
			||||||
    // function<void (int)> onItemSelected;
 | 
					 | 
				
			||||||
    // function<int (const string&)> itemToIDMapper;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // OwnedArray<Pill> buttons;
 | 
					 | 
				
			||||||
    vector<unique_ptr<Pill>> pills;
 | 
					    vector<unique_ptr<Pill>> pills;
 | 
				
			||||||
    Button *selected;
 | 
					    Button *selected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Pill* addToList (Pill* newButton);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void updatePillToggleStates();
 | 
					    void updatePillToggleStates();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void populate(int initiallySelectedItem);
 | 
					    void populate(int initiallySelectedItem);
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,6 @@ JuicySFAudioProcessorEditor::JuicySFAudioProcessorEditor(
 | 
				
			|||||||
: AudioProcessorEditor{&p}
 | 
					: AudioProcessorEditor{&p}
 | 
				
			||||||
, processor{p}
 | 
					, processor{p}
 | 
				
			||||||
, valueTreeState{valueTreeState}
 | 
					, valueTreeState{valueTreeState}
 | 
				
			||||||
    //   sharedParams{p.getSharedParams()},
 | 
					 | 
				
			||||||
, midiKeyboard{p.keyboardState, SurjectiveMidiKeyboardComponent::horizontalKeyboard}
 | 
					, midiKeyboard{p.keyboardState, SurjectiveMidiKeyboardComponent::horizontalKeyboard}
 | 
				
			||||||
, tablesComponent{valueTreeState}
 | 
					, tablesComponent{valueTreeState}
 | 
				
			||||||
, filePicker{valueTreeState}
 | 
					, filePicker{valueTreeState}
 | 
				
			||||||
@ -32,30 +31,6 @@ JuicySFAudioProcessorEditor::JuicySFAudioProcessorEditor(
 | 
				
			|||||||
        GuiConstants::maxWidth,
 | 
					        GuiConstants::maxWidth,
 | 
				
			||||||
        GuiConstants::maxHeight);
 | 
					        GuiConstants::maxHeight);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // int width, height;
 | 
					 | 
				
			||||||
    // {
 | 
					 | 
				
			||||||
    //     RangedAudioParameter *param {valueTreeState.getParameter("uiWidthPersist")};
 | 
					 | 
				
			||||||
    //     jassert(dynamic_cast<AudioParameterInt*> (param) != nullptr);
 | 
					 | 
				
			||||||
    //     AudioParameterInt* castParam {dynamic_cast<AudioParameterInt*> (param)};
 | 
					 | 
				
			||||||
    //     width = castParam->get();
 | 
					 | 
				
			||||||
    // }
 | 
					 | 
				
			||||||
    // {
 | 
					 | 
				
			||||||
    //     RangedAudioParameter *param {valueTreeState.getParameter("uiHeightPersist")};
 | 
					 | 
				
			||||||
    //     jassert(dynamic_cast<AudioParameterInt*> (param) != nullptr);
 | 
					 | 
				
			||||||
    //     AudioParameterInt* castParam {dynamic_cast<AudioParameterInt*> (param)};
 | 
					 | 
				
			||||||
    //     height = castParam->get();
 | 
					 | 
				
			||||||
    // }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //  valueTreeState.addParameterListener("uiWidthPersist", this);
 | 
					 | 
				
			||||||
    //  valueTreeState.addParameterListener("uiHeightPersist", this);
 | 
					 | 
				
			||||||
//     valueTreeState.addParameterListener("uiWidth", this);
 | 
					 | 
				
			||||||
//     valueTreeState.addParameterListener("uiHeight", this);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//    valueTreeState.state.addListener(this);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // setSize(GuiConstants::minWidth, GuiConstants::minHeight);
 | 
					 | 
				
			||||||
    // setSize(width, height);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    lastUIWidth.referTo(valueTreeState.state.getChildWithName("uiState").getPropertyAsValue("width",  nullptr));
 | 
					    lastUIWidth.referTo(valueTreeState.state.getChildWithName("uiState").getPropertyAsValue("width",  nullptr));
 | 
				
			||||||
    lastUIHeight.referTo(valueTreeState.state.getChildWithName("uiState").getPropertyAsValue("height", nullptr));
 | 
					    lastUIHeight.referTo(valueTreeState.state.getChildWithName("uiState").getPropertyAsValue("height", nullptr));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -65,8 +40,6 @@ JuicySFAudioProcessorEditor::JuicySFAudioProcessorEditor(
 | 
				
			|||||||
    lastUIWidth.addListener(this);
 | 
					    lastUIWidth.addListener(this);
 | 
				
			||||||
    lastUIHeight.addListener(this);
 | 
					    lastUIHeight.addListener(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    processor.subscribeToStateChanges(this);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    midiKeyboard.setName ("MIDI Keyboard");
 | 
					    midiKeyboard.setName ("MIDI Keyboard");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    midiKeyboard.setWantsKeyboardFocus(false);
 | 
					    midiKeyboard.setWantsKeyboardFocus(false);
 | 
				
			||||||
@ -90,76 +63,14 @@ JuicySFAudioProcessorEditor::~JuicySFAudioProcessorEditor()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    lastUIWidth.removeListener(this);
 | 
					    lastUIWidth.removeListener(this);
 | 
				
			||||||
    lastUIHeight.removeListener(this);
 | 
					    lastUIHeight.removeListener(this);
 | 
				
			||||||
    //  valueTreeState.removeParameterListener("uiWidthPersist", this);
 | 
					 | 
				
			||||||
    //  valueTreeState.removeParameterListener("uiHeightPersist", this);
 | 
					 | 
				
			||||||
    // valueTreeState.removeParameterListener("uiWidth", this);
 | 
					 | 
				
			||||||
    // valueTreeState.removeParameterListener("uiHeight", this);
 | 
					 | 
				
			||||||
//    valueTreeState.state.removeListener(this);
 | 
					 | 
				
			||||||
//    processor.unsubscribeFromStateChanges(this);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// void JuicySFAudioProcessorEditor::valueTreePropertyChanged(ValueTree& treeWhosePropertyHasChanged,
 | 
					 | 
				
			||||||
//                                                const Identifier& property) {
 | 
					 | 
				
			||||||
// //    if (treeWhosePropertyHasChanged.getType() == Identifier("PARAM")) {
 | 
					 | 
				
			||||||
//     const String propertyString{property.toString()};
 | 
					 | 
				
			||||||
//         if (propertyString == "uiWidth") {
 | 
					 | 
				
			||||||
//             // String soundFontPath{treeWhosePropertyHasChanged.getProperty("soundFontPath", "")};
 | 
					 | 
				
			||||||
//             // if (soundFontPath.isNotEmpty()) {
 | 
					 | 
				
			||||||
//             //     loadFont(soundFontPath);
 | 
					 | 
				
			||||||
//             // }
 | 
					 | 
				
			||||||
//             int value{treeWhosePropertyHasChanged.getProperty("uiWidth", GuiConstants::minWidth)};
 | 
					 | 
				
			||||||
//             setSize(value, getHeight());
 | 
					 | 
				
			||||||
//         } else if (propertyString == "uiHeight") {
 | 
					 | 
				
			||||||
//             int value{treeWhosePropertyHasChanged.getProperty("uiHeight", GuiConstants::minHeight)};
 | 
					 | 
				
			||||||
//             setSize(getWidth(), value);
 | 
					 | 
				
			||||||
//         }
 | 
					 | 
				
			||||||
// //    }
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// void JuicySFAudioProcessorEditor::parameterChanged(const String& parameterID, float newValue) {
 | 
					 | 
				
			||||||
//     //  if (parameterID == "uiWidthPersist"
 | 
					 | 
				
			||||||
//     //  || parameterID == "uiHeightPersist") {
 | 
					 | 
				
			||||||
//    if (parameterID == "uiWidth"
 | 
					 | 
				
			||||||
//    || parameterID == "uiHeight") {
 | 
					 | 
				
			||||||
//         RangedAudioParameter *param {valueTreeState.getParameter(parameterID)};
 | 
					 | 
				
			||||||
//         jassert(dynamic_cast<AudioParameterInt*> (param) != nullptr);
 | 
					 | 
				
			||||||
//         AudioParameterInt* castParam {dynamic_cast<AudioParameterInt*> (param)};
 | 
					 | 
				
			||||||
//         int value{castParam->get()};
 | 
					 | 
				
			||||||
//         if (parameterID == "uiWidth") {
 | 
					 | 
				
			||||||
//             setSize(value, getHeight());
 | 
					 | 
				
			||||||
//         } else if (parameterID == "uiHeight") {
 | 
					 | 
				
			||||||
//             setSize(getWidth(), value);
 | 
					 | 
				
			||||||
//         }
 | 
					 | 
				
			||||||
//         // if (parameterID == "uiWidthPersist") {
 | 
					 | 
				
			||||||
//         //     setSize(value, getHeight());
 | 
					 | 
				
			||||||
//         // } else if (parameterID == "uiHeightPersist") {
 | 
					 | 
				
			||||||
//         //     setSize(getWidth(), value);
 | 
					 | 
				
			||||||
//         // }
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//void JuicySFAudioProcessorEditor::getStateInformation (XmlElement& xml) {
 | 
					 | 
				
			||||||
//    // save
 | 
					 | 
				
			||||||
//    xml.setAttribute ("uiWidth", getWidth());
 | 
					 | 
				
			||||||
//    xml.setAttribute ("uiHeight", getHeight());
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//void JuicySFAudioProcessorEditor::setStateInformation (XmlElement* xmlState) {
 | 
					 | 
				
			||||||
//    // load
 | 
					 | 
				
			||||||
//    setSize (xmlState->getIntAttribute ("uiWidth", getWidth()),
 | 
					 | 
				
			||||||
//            xmlState->getIntAttribute ("uiHeight", getHeight()));
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//==============================================================================
 | 
					//==============================================================================
 | 
				
			||||||
void JuicySFAudioProcessorEditor::paint (Graphics& g)
 | 
					void JuicySFAudioProcessorEditor::paint (Graphics& g)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // (Our component is opaque, so we must completely fill the background with a solid colour)
 | 
					    // (Our component is opaque, so we must completely fill the background with a solid colour)
 | 
				
			||||||
    g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
 | 
					    g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    g.setColour (Colours::white);
 | 
					 | 
				
			||||||
//    g.setFont (15.0f);
 | 
					 | 
				
			||||||
//    g.drawFittedText ("Hello World!", getLocalBounds(), Justification::centred, 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!focusInitialized) {
 | 
					    if (!focusInitialized) {
 | 
				
			||||||
        if (!hasKeyboardFocus(false) && isVisible()) {
 | 
					        if (!hasKeyboardFocus(false) && isVisible()) {
 | 
				
			||||||
            grabKeyboardFocus();
 | 
					            grabKeyboardFocus();
 | 
				
			||||||
@ -175,13 +86,9 @@ void JuicySFAudioProcessorEditor::resized()
 | 
				
			|||||||
    const int padding{8};
 | 
					    const int padding{8};
 | 
				
			||||||
    const int pianoHeight{70};
 | 
					    const int pianoHeight{70};
 | 
				
			||||||
    const int filePickerHeight{25};
 | 
					    const int filePickerHeight{25};
 | 
				
			||||||
    // const int slidersHeight{150};
 | 
					 | 
				
			||||||
    Rectangle<int> r{getLocalBounds()};
 | 
					    Rectangle<int> r{getLocalBounds()};
 | 
				
			||||||
    filePicker.setBounds(r.removeFromTop(filePickerHeight + padding).reduced(padding, 0).withTrimmedTop(padding));
 | 
					    filePicker.setBounds(r.removeFromTop(filePickerHeight + padding).reduced(padding, 0).withTrimmedTop(padding));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Rectangle<int> r2 (getLocalBounds());
 | 
					 | 
				
			||||||
    // slidersComponent.setBounds(r2.removeFromLeft(filePickerWidth + padding).reduced(padding, 0).withTrimmedLeft(padding));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    midiKeyboard.setBounds (r.removeFromBottom (pianoHeight).reduced(padding, 0));
 | 
					    midiKeyboard.setBounds (r.removeFromBottom (pianoHeight).reduced(padding, 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Rectangle<int> rContent{r.reduced(0, padding)};
 | 
					    Rectangle<int> rContent{r.reduced(0, padding)};
 | 
				
			||||||
@ -191,50 +98,9 @@ void JuicySFAudioProcessorEditor::resized()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    lastUIWidth = getWidth();
 | 
					    lastUIWidth = getWidth();
 | 
				
			||||||
    lastUIHeight = getHeight();
 | 
					    lastUIHeight = getHeight();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    // valueTreeState.state.setPropertyExcludingListener(this, "uiWidth", getWidth(), nullptr);
 | 
					 | 
				
			||||||
    // valueTreeState.state.setPropertyExcludingListener(this, "uiHeight", getHeight(), nullptr);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
//     {
 | 
					 | 
				
			||||||
//         // RangedAudioParameter *param {valueTreeState.getParameter("uiWidthTemp")};
 | 
					 | 
				
			||||||
//         RangedAudioParameter *param {valueTreeState.getParameter("uiWidth")};
 | 
					 | 
				
			||||||
// //        param->setValueNotifyingHost(param->convertTo0to1(getWidth()));
 | 
					 | 
				
			||||||
//         jassert(dynamic_cast<AudioParameterInt*> (param) != nullptr);
 | 
					 | 
				
			||||||
//         AudioParameterInt* castParam {dynamic_cast<AudioParameterInt*> (param)};
 | 
					 | 
				
			||||||
//         *castParam = getWidth();
 | 
					 | 
				
			||||||
// //        castParam->AudioProcessorParameter::setValue(castParam->convertTo0to1(static_cast<float>(getWidth())));
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
//     {
 | 
					 | 
				
			||||||
//         // RangedAudioParameter *param {valueTreeState.getParameter("uiHeightTemp")};
 | 
					 | 
				
			||||||
//         RangedAudioParameter *param {valueTreeState.getParameter("uiHeight")};
 | 
					 | 
				
			||||||
// //        param->setValueNotifyingHost(param->convertTo0to1(getHeight()));
 | 
					 | 
				
			||||||
//         jassert(dynamic_cast<AudioParameterInt*> (param) != nullptr);
 | 
					 | 
				
			||||||
//         AudioParameterInt* castParam {dynamic_cast<AudioParameterInt*> (param)};
 | 
					 | 
				
			||||||
//         *castParam = getHeight();
 | 
					 | 
				
			||||||
// //        castParam->AudioProcessorParameter::setValue(castParam->convertTo0to1(static_cast<float>(getHeight())));
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//    sharedParams.setUiWidth(getWidth());
 | 
					 | 
				
			||||||
//    sharedParams.setUiHeight(getHeight());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//    Rectangle<int> r2 (getLocalBounds());
 | 
					 | 
				
			||||||
//    r2.reduce(0, padding);
 | 
					 | 
				
			||||||
//    r2.removeFromBottom(pianoHeight);
 | 
					 | 
				
			||||||
//    r2.removeFromTop(filePickerHeight);
 | 
					 | 
				
			||||||
//    tablesComponent.setBounds (r2);
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//    Rectangle<int> r3 (getLocalBounds());
 | 
					 | 
				
			||||||
//    r3.removeFromTop(filePickerHeight);
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//    filePicker.setBounds(r3);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool JuicySFAudioProcessorEditor::keyPressed(const KeyPress &key) {
 | 
					bool JuicySFAudioProcessorEditor::keyPressed(const KeyPress &key) {
 | 
				
			||||||
//    if (!hasKeyboardFocus(false))
 | 
					 | 
				
			||||||
//        return false;
 | 
					 | 
				
			||||||
//    if (key.getKeyCode() == KeyPress::upKey){
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
//    cout << "hey\n";
 | 
					 | 
				
			||||||
    const int cursorKeys[] = {
 | 
					    const int cursorKeys[] = {
 | 
				
			||||||
            KeyPress::leftKey,
 | 
					            KeyPress::leftKey,
 | 
				
			||||||
            KeyPress::rightKey,
 | 
					            KeyPress::rightKey,
 | 
				
			||||||
@ -250,24 +116,9 @@ bool JuicySFAudioProcessorEditor::keyPressed(const KeyPress &key) {
 | 
				
			|||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        return midiKeyboard.keyPressed(key);
 | 
					        return midiKeyboard.keyPressed(key);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
//    for(auto childComponent : getChildren()) {
 | 
					 | 
				
			||||||
//        if (childComponent->keyPressed(key)) return true;
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool JuicySFAudioProcessorEditor::keyStateChanged (bool isKeyDown) {
 | 
					bool JuicySFAudioProcessorEditor::keyStateChanged (bool isKeyDown) {
 | 
				
			||||||
    return midiKeyboard.keyStateChanged(isKeyDown);
 | 
					    return midiKeyboard.keyStateChanged(isKeyDown);
 | 
				
			||||||
//    for(auto childComponent : getChildren()) {
 | 
					 | 
				
			||||||
//        if (childComponent->keyStateChanged(isKeyDown)) return true;
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
//    return false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
//FilePickerFragment& JuicySFAudioProcessorEditor::getFilePicker() {
 | 
					 | 
				
			||||||
//    return filePicker;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//SlidersFragment& JuicySFAudioProcessorEditor::getSliders() {
 | 
					 | 
				
			||||||
//    return slidersComponent;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -14,10 +14,7 @@
 | 
				
			|||||||
#include "PluginProcessor.h"
 | 
					#include "PluginProcessor.h"
 | 
				
			||||||
#include "TablesComponent.h"
 | 
					#include "TablesComponent.h"
 | 
				
			||||||
#include "SurjectiveMidiKeyboardComponent.h"
 | 
					#include "SurjectiveMidiKeyboardComponent.h"
 | 
				
			||||||
#include "FilePickerFragment.h"
 | 
					 | 
				
			||||||
#include "ExposesComponents.h"
 | 
					 | 
				
			||||||
#include "FilePicker.h"
 | 
					#include "FilePicker.h"
 | 
				
			||||||
#include "StateChangeSubscriber.h"
 | 
					 | 
				
			||||||
#include "SlidersComponent.h"
 | 
					#include "SlidersComponent.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//==============================================================================
 | 
					//==============================================================================
 | 
				
			||||||
@ -25,12 +22,7 @@
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
class JuicySFAudioProcessorEditor
 | 
					class JuicySFAudioProcessorEditor
 | 
				
			||||||
: public AudioProcessorEditor
 | 
					: public AudioProcessorEditor
 | 
				
			||||||
// , public AudioProcessorValueTreeState::Listener
 | 
					 | 
				
			||||||
, private Value::Listener
 | 
					, private Value::Listener
 | 
				
			||||||
// , public ValueTree::Listener
 | 
					 | 
				
			||||||
                      /*,
 | 
					 | 
				
			||||||
                                     , public ExposesComponents
 | 
					 | 
				
			||||||
                                     public StateChangeSubscriber*/
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    JuicySFAudioProcessorEditor(
 | 
					    JuicySFAudioProcessorEditor(
 | 
				
			||||||
@ -46,28 +38,6 @@ public:
 | 
				
			|||||||
    bool keyPressed(const KeyPress &key) override;
 | 
					    bool keyPressed(const KeyPress &key) override;
 | 
				
			||||||
    bool keyStateChanged (bool isKeyDown) override;
 | 
					    bool keyStateChanged (bool isKeyDown) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    void getStateInformation (XmlElement& xml) override;
 | 
					 | 
				
			||||||
//    void setStateInformation (XmlElement* xmlState) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual FilePickerFragment& getFilePicker() override;
 | 
					 | 
				
			||||||
    // virtual SlidersFragment& getSliders() override;
 | 
					 | 
				
			||||||
    // virtual void parameterChanged (const String& parameterID, float newValue) override;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // int getWidth();
 | 
					 | 
				
			||||||
    // int getHeight();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged,
 | 
					 | 
				
			||||||
    //                                        const Identifier& property) override;
 | 
					 | 
				
			||||||
    // inline virtual void valueTreeChildAdded (ValueTree& parentTree,
 | 
					 | 
				
			||||||
    //                                          ValueTree& childWhichHasBeenAdded) override {};
 | 
					 | 
				
			||||||
    // inline virtual void valueTreeChildRemoved (ValueTree& parentTree,
 | 
					 | 
				
			||||||
    //                                            ValueTree& childWhichHasBeenRemoved,
 | 
					 | 
				
			||||||
    //                                            int indexFromWhichChildWasRemoved) override {};
 | 
					 | 
				
			||||||
    // inline virtual void valueTreeChildOrderChanged (ValueTree& parentTreeWhoseChildrenHaveMoved,
 | 
					 | 
				
			||||||
    //                                                 int oldIndex, int newIndex) override {};
 | 
					 | 
				
			||||||
    // inline virtual void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged) override {};
 | 
					 | 
				
			||||||
    // inline virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) override {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    void valueChanged (Value&) override;
 | 
					    void valueChanged (Value&) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -76,7 +46,6 @@ private:
 | 
				
			|||||||
    JuicySFAudioProcessor& processor;
 | 
					    JuicySFAudioProcessor& processor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState;
 | 
					    AudioProcessorValueTreeState& valueTreeState;
 | 
				
			||||||
    // SharesParams& sharedParams;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // these are used to persist the UI's size - the values are stored along with the
 | 
					    // these are used to persist the UI's size - the values are stored along with the
 | 
				
			||||||
    // filter's other parameters, and the UI component will update them when it gets
 | 
					    // filter's other parameters, and the UI component will update them when it gets
 | 
				
			||||||
 | 
				
			|||||||
@ -10,11 +10,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "PluginProcessor.h"
 | 
					#include "PluginProcessor.h"
 | 
				
			||||||
#include "PluginEditor.h"
 | 
					#include "PluginEditor.h"
 | 
				
			||||||
#include "ExposesComponents.h"
 | 
					 | 
				
			||||||
#include "MidiConstants.h"
 | 
					#include "MidiConstants.h"
 | 
				
			||||||
#include "Util.h"
 | 
					#include "Util.h"
 | 
				
			||||||
#include "SharesParams.h"
 | 
					 | 
				
			||||||
#include "Params.h"
 | 
					 | 
				
			||||||
#include "GuiConstants.h"
 | 
					#include "GuiConstants.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
 | 
				
			|||||||
@ -12,9 +12,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					#include "../JuceLibraryCode/JuceHeader.h"
 | 
				
			||||||
#include "FluidSynthModel.h"
 | 
					#include "FluidSynthModel.h"
 | 
				
			||||||
#include "StateChangeSubscriber.h"
 | 
					 | 
				
			||||||
#include "SharesParams.h"
 | 
					 | 
				
			||||||
#include "Params.h"
 | 
					 | 
				
			||||||
#include <list>
 | 
					#include <list>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 17/09/2017.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "Preset.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using namespace std;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Preset::Preset(
 | 
					 | 
				
			||||||
        int preset,
 | 
					 | 
				
			||||||
        string name
 | 
					 | 
				
			||||||
) : preset(preset),
 | 
					 | 
				
			||||||
    name(name) {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int Preset::getPreset() {
 | 
					 | 
				
			||||||
    return preset;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
string Preset::getName() {
 | 
					 | 
				
			||||||
    return name;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,24 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 17/09/2017.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using namespace std;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Preset {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    Preset(
 | 
					 | 
				
			||||||
            int preset,
 | 
					 | 
				
			||||||
            string name
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    int getPreset();
 | 
					 | 
				
			||||||
    string getName();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
    int preset;
 | 
					 | 
				
			||||||
    string name;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
// http://www.synthfont.com/Tutorial6.html
 | 
					 | 
				
			||||||
// a bank can hold many (128) presets
 | 
					 | 
				
			||||||
// bank 128 is reserved for percussion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "Preset.h"
 | 
					 | 
				
			||||||
#include <map>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef std::multimap<int, Preset> BanksToPresets;
 | 
					 | 
				
			||||||
@ -1,49 +0,0 @@
 | 
				
			|||||||
//
 | 
					 | 
				
			||||||
// Created by Alex Birch on 10/04/2018.
 | 
					 | 
				
			||||||
// Copyright (c) 2018 Birchlabs. All rights reserved.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using namespace std;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class SharesParams {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    virtual ~SharesParams() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void setAttributesOnXml(shared_ptr<XmlElement> xml) = 0;
 | 
					 | 
				
			||||||
    virtual void loadAttributesFromXml(shared_ptr<XmlElement> xmlState) = 0;
 | 
					 | 
				
			||||||
//    virtual void acceptMidiControlEvent(int controller, int value) = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void setSoundFontPath(const String& value) = 0;
 | 
					 | 
				
			||||||
    virtual String& getSoundFontPath() = 0;
 | 
					 | 
				
			||||||
    // virtual int getPreset() = 0;
 | 
					 | 
				
			||||||
    // virtual void setPreset(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual int getBank() = 0;
 | 
					 | 
				
			||||||
    // virtual void setBank(int value) = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual int getUiWidth() = 0;
 | 
					 | 
				
			||||||
    // virtual void setUiWidth(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual int getUiHeight() = 0;
 | 
					 | 
				
			||||||
    // virtual void setUiHeight(int value) = 0;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // virtual int getAttack() = 0;
 | 
					 | 
				
			||||||
    // virtual void setAttack(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual int getDecay() = 0;
 | 
					 | 
				
			||||||
    // virtual void setDecay(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual int getSustain() = 0;
 | 
					 | 
				
			||||||
    // virtual void setSustain(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual int getRelease() = 0;
 | 
					 | 
				
			||||||
    // virtual void setRelease(int value) = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual int getFilterCutOff() = 0;
 | 
					 | 
				
			||||||
    // virtual void setFilterCutOff(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual int getFilterResonance() = 0;
 | 
					 | 
				
			||||||
    // virtual void setFilterResonance(int value) = 0;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -12,7 +12,7 @@
 | 
				
			|||||||
#include "Util.h"
 | 
					#include "Util.h"
 | 
				
			||||||
using SliderAttachment = AudioProcessorValueTreeState::SliderAttachment;
 | 
					using SliderAttachment = AudioProcessorValueTreeState::SliderAttachment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::function<void()> SlidersComponent::makeSliderListener(Slider& slider, int controller/*, std::function<void()> callback*/) {
 | 
					std::function<void()> SlidersComponent::makeSliderListener(Slider& slider, int controller) {
 | 
				
			||||||
    return [this, controller, &slider]{
 | 
					    return [this, controller, &slider]{
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        RangedAudioParameter *param {valueTreeState.getParameter("release")};
 | 
					        RangedAudioParameter *param {valueTreeState.getParameter("release")};
 | 
				
			||||||
@ -25,7 +25,6 @@ std::function<void()> SlidersComponent::makeSliderListener(Slider& slider, int c
 | 
				
			|||||||
        DEBUG_PRINT(s);
 | 
					        DEBUG_PRINT(s);
 | 
				
			||||||
//        slider.setValue(slider.getValue(), NotificationType::dontSendNotification);
 | 
					//        slider.setValue(slider.getValue(), NotificationType::dontSendNotification);
 | 
				
			||||||
        fluidSynthModel.setControllerValue(controller, slider.getValue());
 | 
					        fluidSynthModel.setControllerValue(controller, slider.getValue());
 | 
				
			||||||
        // callback();
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -95,30 +94,9 @@ void SlidersComponent::acceptMidiControlEvent(int controller, int value) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// void SlidersComponent::updateAttackSlider(int value) {
 | 
					 | 
				
			||||||
//     attackSlider.setValue(value, NotificationType::dontSendNotification);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// void SlidersComponent::updateDecaySlider(int value) {
 | 
					 | 
				
			||||||
//     decaySlider.setValue(value, NotificationType::dontSendNotification);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// void SlidersComponent::updateSustainSlider(int value) {
 | 
					 | 
				
			||||||
//     sustainSlider.setValue(value, NotificationType::dontSendNotification);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// void SlidersComponent::updateReleaseSlider(int value) {
 | 
					 | 
				
			||||||
//     releaseSlider.setValue(value, NotificationType::dontSendNotification);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// void SlidersComponent::updateFilterCutOffSlider(int value) {
 | 
					 | 
				
			||||||
//     filterCutOffSlider.setValue(value, NotificationType::dontSendNotification);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
// void SlidersComponent::updateFilterResonanceSlider(int value) {
 | 
					 | 
				
			||||||
//     filterResonanceSlider.setValue(value, NotificationType::dontSendNotification);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SlidersComponent::SlidersComponent(
 | 
					SlidersComponent::SlidersComponent(
 | 
				
			||||||
    // SharesParams& sharedParams,
 | 
					 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState,
 | 
					    AudioProcessorValueTreeState& valueTreeState,
 | 
				
			||||||
    FluidSynthModel& fluidSynthModel)
 | 
					    FluidSynthModel& fluidSynthModel)
 | 
				
			||||||
// : sharedParams{sharedParams}
 | 
					 | 
				
			||||||
: valueTreeState{valueTreeState}
 | 
					: valueTreeState{valueTreeState}
 | 
				
			||||||
, fluidSynthModel{fluidSynthModel}
 | 
					, fluidSynthModel{fluidSynthModel}
 | 
				
			||||||
, envelopeGroup{"envelopeGroup", "Envelope"}
 | 
					, envelopeGroup{"envelopeGroup", "Envelope"}
 | 
				
			||||||
 | 
				
			|||||||
@ -2,18 +2,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					#include "../JuceLibraryCode/JuceHeader.h"
 | 
				
			||||||
#include "FluidSynthModel.h"
 | 
					#include "FluidSynthModel.h"
 | 
				
			||||||
#include "SharesParams.h"
 | 
					 | 
				
			||||||
#include "SlidersFragment.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
using SliderAttachment = AudioProcessorValueTreeState::SliderAttachment;
 | 
					using SliderAttachment = AudioProcessorValueTreeState::SliderAttachment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SlidersComponent : public Component,
 | 
					class SlidersComponent : public Component
 | 
				
			||||||
                         public SlidersFragment
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SlidersComponent(
 | 
					    SlidersComponent(
 | 
				
			||||||
        // SharesParams& sharedParams,
 | 
					 | 
				
			||||||
        AudioProcessorValueTreeState& valueTreeState,
 | 
					        AudioProcessorValueTreeState& valueTreeState,
 | 
				
			||||||
        FluidSynthModel& fluidSynthModel);
 | 
					        FluidSynthModel& fluidSynthModel);
 | 
				
			||||||
    ~SlidersComponent();
 | 
					    ~SlidersComponent();
 | 
				
			||||||
@ -22,20 +18,11 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const int getDesiredWidth();
 | 
					    const int getDesiredWidth();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void acceptMidiControlEvent(int controller, int value) override;
 | 
					    void acceptMidiControlEvent(int controller, int value);
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // virtual void updateAttackSlider(int value) override;
 | 
					 | 
				
			||||||
    // virtual void updateDecaySlider(int value) override;
 | 
					 | 
				
			||||||
    // virtual void updateSustainSlider(int value) override;
 | 
					 | 
				
			||||||
    // virtual void updateReleaseSlider(int value) override;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // virtual void updateFilterCutOffSlider(int value) override;
 | 
					 | 
				
			||||||
    // virtual void updateFilterResonanceSlider(int value) override;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    std::function<void()> makeSliderListener(Slider& slider, int controller);
 | 
					    std::function<void()> makeSliderListener(Slider& slider, int controller);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // SharesParams& sharedParams;
 | 
					 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState;
 | 
					    AudioProcessorValueTreeState& valueTreeState;
 | 
				
			||||||
    FluidSynthModel& fluidSynthModel;
 | 
					    FluidSynthModel& fluidSynthModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class SlidersFragment {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    virtual ~SlidersFragment() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void acceptMidiControlEvent(int controller, int value) = 0;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // virtual void updateAttackSlider(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual void updateDecaySlider(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual void updateSustainSlider(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual void updateReleaseSlider(int value) = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // virtual void updateFilterCutOffSlider(int value) = 0;
 | 
					 | 
				
			||||||
    // virtual void updateFilterResonanceSlider(int value) = 0;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@ -9,7 +9,6 @@
 | 
				
			|||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					#include "../JuceLibraryCode/JuceHeader.h"
 | 
				
			||||||
#include "PresetsToBanks.h"
 | 
					 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
#include <map>
 | 
					#include <map>
 | 
				
			||||||
@ -40,11 +39,6 @@ class TableComponent    : public Component,
 | 
				
			|||||||
public:
 | 
					public:
 | 
				
			||||||
    TableComponent(
 | 
					    TableComponent(
 | 
				
			||||||
            AudioProcessorValueTreeState& valueTreeState
 | 
					            AudioProcessorValueTreeState& valueTreeState
 | 
				
			||||||
        //     const vector<string> &columns,
 | 
					 | 
				
			||||||
        //     const vector<TableRow> &rows,
 | 
					 | 
				
			||||||
            // const function<void (int)> &onRowSelected,
 | 
					 | 
				
			||||||
        //     const function<int (const vector<string>&)> &rowToIDMapper,
 | 
					 | 
				
			||||||
            // int initiallySelectedRow
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    ~TableComponent();
 | 
					    ~TableComponent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -74,8 +68,6 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void resized() override;
 | 
					    void resized() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     void setRows(const vector<TableRow>& rows, int initiallySelectedRow);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool keyPressed(const KeyPress &key) override;
 | 
					    bool keyPressed(const KeyPress &key) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void parameterChanged (const String& parameterID, float newValue) override;
 | 
					    virtual void parameterChanged (const String& parameterID, float newValue) override;
 | 
				
			||||||
@ -92,7 +84,6 @@ public:
 | 
				
			|||||||
    inline virtual void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged) override {};
 | 
					    inline virtual void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged) override {};
 | 
				
			||||||
    inline virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) override {};
 | 
					    inline virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) override {};
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    // void loadModelFrom(ValueTree& presets);
 | 
					 | 
				
			||||||
    void loadModelFrom(ValueTree& banks);
 | 
					    void loadModelFrom(ValueTree& banks);
 | 
				
			||||||
    void repopulateTable();
 | 
					    void repopulateTable();
 | 
				
			||||||
    void selectCurrentPreset();
 | 
					    void selectCurrentPreset();
 | 
				
			||||||
@ -105,12 +96,8 @@ private:
 | 
				
			|||||||
    typedef multimap<int, TableRow> BanksToPresets;
 | 
					    typedef multimap<int, TableRow> BanksToPresets;
 | 
				
			||||||
    BanksToPresets banksToPresets;
 | 
					    BanksToPresets banksToPresets;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     vector<string> columns;
 | 
					 | 
				
			||||||
    vector<TableRow> rows;
 | 
					    vector<TableRow> rows;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // function<void (int)> onRowSelected;
 | 
					 | 
				
			||||||
//     function<int (const vector<string>&)> rowToIDMapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // A comparator used to sort our data when the user clicks a column header
 | 
					    // A comparator used to sort our data when the user clicks a column header
 | 
				
			||||||
    class DataSorter {
 | 
					    class DataSorter {
 | 
				
			||||||
    public:
 | 
					    public:
 | 
				
			||||||
 | 
				
			|||||||
@ -9,153 +9,19 @@ using namespace placeholders;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
TablesComponent::TablesComponent(
 | 
					TablesComponent::TablesComponent(
 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState
 | 
					    AudioProcessorValueTreeState& valueTreeState
 | 
				
			||||||
    // FluidSynthModel& fluidSynthModel
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
: valueTreeState{valueTreeState}
 | 
					: valueTreeState{valueTreeState}
 | 
				
			||||||
// , fluidSynthModel{fluidSynthModel}
 | 
					 | 
				
			||||||
, banks{valueTreeState}
 | 
					, banks{valueTreeState}
 | 
				
			||||||
, presetTable{valueTreeState}
 | 
					, presetTable{valueTreeState}
 | 
				
			||||||
// , banksToPresets{fluidSynthModel.getBanks()}
 | 
					 | 
				
			||||||
// , initialised{false}
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // fluid_preset_t* currentPreset = getCurrentPreset();
 | 
					 | 
				
			||||||
    // selectedBank = -1;
 | 
					 | 
				
			||||||
    // int selectedPreset = -1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // if (currentPreset != nullptr) {
 | 
					 | 
				
			||||||
    //     selectedBank = fluid_preset_get_banknum(currentPreset);
 | 
					 | 
				
			||||||
    //     selectedPreset = fluid_preset_get_num(currentPreset);
 | 
					 | 
				
			||||||
    // }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // auto rowToPresetMapper = [this](const vector<string> &row) {
 | 
					 | 
				
			||||||
    //     return stoi(row[0]);
 | 
					 | 
				
			||||||
    // };
 | 
					 | 
				
			||||||
    // auto itemToBankMapper = [](const string &item) {
 | 
					 | 
				
			||||||
    //     return stoi(item);
 | 
					 | 
				
			||||||
    // };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // presetTable = new TableComponent(
 | 
					 | 
				
			||||||
    //          valueTreeState,
 | 
					 | 
				
			||||||
    //         // {"#", "Name"},
 | 
					 | 
				
			||||||
    //         // mapPresets(
 | 
					 | 
				
			||||||
    //         //         banksToPresets,
 | 
					 | 
				
			||||||
    //         //         selectedBank
 | 
					 | 
				
			||||||
    //         // ),
 | 
					 | 
				
			||||||
    //         // [this](int preset){
 | 
					 | 
				
			||||||
    //         //     this->onPresetSelected(preset);
 | 
					 | 
				
			||||||
    //         // },
 | 
					 | 
				
			||||||
    //         // rowToPresetMapper,
 | 
					 | 
				
			||||||
    //         // presetToIndexMapper(selectedPreset)
 | 
					 | 
				
			||||||
    // );
 | 
					 | 
				
			||||||
    // banks = new Pills(
 | 
					 | 
				
			||||||
    //         "Banks",
 | 
					 | 
				
			||||||
    //         mapBanks(banksToPresets),
 | 
					 | 
				
			||||||
    //         [this](int bank){
 | 
					 | 
				
			||||||
    //             this->onBankSelected(bank);
 | 
					 | 
				
			||||||
    //         },
 | 
					 | 
				
			||||||
    //         itemToBankMapper,
 | 
					 | 
				
			||||||
    //         selectedBank
 | 
					 | 
				
			||||||
    // );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    presetTable.setWantsKeyboardFocus(false);
 | 
					    presetTable.setWantsKeyboardFocus(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    addAndMakeVisible(presetTable);
 | 
					    addAndMakeVisible(presetTable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    addAndMakeVisible(banks);
 | 
					    addAndMakeVisible(banks);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    // initialised = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // fluidSynthModel.addListener(this);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// fluid_preset_t* TablesComponent::getCurrentPreset() {
 | 
					 | 
				
			||||||
//     shared_ptr<fluid_synth_t> synth {fluidSynthModel.getSynth()};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     return fluid_synth_get_channel_preset(synth.get(), fluidSynthModel.getChannel());
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Preset TablesComponent::getFirstPresetInBank(int bank) {
 | 
					 | 
				
			||||||
//     pair<BanksToPresets::const_iterator, BanksToPresets::const_iterator> iterators = banksToPresets.equal_range(bank);
 | 
					 | 
				
			||||||
//     BanksToPresets::const_iterator it = iterators.first;
 | 
					 | 
				
			||||||
//     return it->second;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// void TablesComponent::onBankSelected(int bank) {
 | 
					 | 
				
			||||||
//     if (!initialised || bank == -1) {
 | 
					 | 
				
			||||||
//         return;
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
//     cout << "Bank " << bank << endl;
 | 
					 | 
				
			||||||
//     selectedBank = bank;
 | 
					 | 
				
			||||||
//     Preset firstPresetInBank = getFirstPresetInBank(bank);
 | 
					 | 
				
			||||||
//     presetTable->setRows(
 | 
					 | 
				
			||||||
//             mapPresets(
 | 
					 | 
				
			||||||
//                     banksToPresets,
 | 
					 | 
				
			||||||
//                     bank
 | 
					 | 
				
			||||||
//             ),
 | 
					 | 
				
			||||||
//             presetToIndexMapper(firstPresetInBank.getPreset())
 | 
					 | 
				
			||||||
//     );
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// int TablesComponent::presetToIndexMapper(int preset) {
 | 
					 | 
				
			||||||
//     int ix = 0;
 | 
					 | 
				
			||||||
//     pair<BanksToPresets::const_iterator, BanksToPresets::const_iterator> iterators = this->banksToPresets.equal_range(this->selectedBank);
 | 
					 | 
				
			||||||
//     for (auto it = iterators.first; it != iterators.second; ++it, ix++) {
 | 
					 | 
				
			||||||
//         Preset b = it->second;
 | 
					 | 
				
			||||||
//         if (preset == b.getPreset()) {
 | 
					 | 
				
			||||||
//             return ix;
 | 
					 | 
				
			||||||
//         }
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
//     return 0;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// void TablesComponent::onPresetSelected(int preset) {
 | 
					 | 
				
			||||||
//     if (!initialised || preset == -1) {
 | 
					 | 
				
			||||||
//         return;
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
//     cout << "Preset " << preset << endl;
 | 
					 | 
				
			||||||
// //    selectedPreset = preset;
 | 
					 | 
				
			||||||
//     fluidSynthModel.changePreset(selectedBank, preset);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TablesComponent::~TablesComponent() {
 | 
					 | 
				
			||||||
//     delete presetTable;
 | 
					 | 
				
			||||||
//     delete banks;
 | 
					 | 
				
			||||||
//     // fluidSynthModel.removeListener(this);
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// vector<string> TablesComponent::mapBanks(const BanksToPresets &banksToPresets) {
 | 
					 | 
				
			||||||
//     vector<string> rows;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     const auto compareKey = [](const BanksToPresets::value_type& lhs, const BanksToPresets::value_type& rhs) {
 | 
					 | 
				
			||||||
//         return lhs.first < rhs.first;
 | 
					 | 
				
			||||||
//     };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     for(auto i = banksToPresets.begin(); i != banksToPresets.end(); i = std::upper_bound(i, banksToPresets.end(), *i, compareKey)) {
 | 
					 | 
				
			||||||
//         rows.push_back(to_string(i->first));
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     return rows;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// vector<vector<string>> TablesComponent::mapPresets(const BanksToPresets &banksToPresets, int bank) {
 | 
					 | 
				
			||||||
//     vector<vector<string>> rows;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     pair<BanksToPresets::const_iterator, BanksToPresets::const_iterator> iterators = banksToPresets.equal_range(bank);
 | 
					 | 
				
			||||||
//     for (auto it = iterators.first; it != iterators.second; ++it) {
 | 
					 | 
				
			||||||
//         Preset b = it->second;
 | 
					 | 
				
			||||||
//         vector<string> row;
 | 
					 | 
				
			||||||
//         row.push_back(to_string(b.getPreset()));
 | 
					 | 
				
			||||||
//         row.push_back(b.getName());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//         rows.push_back(row);
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     return rows;
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void TablesComponent::resized() {
 | 
					void TablesComponent::resized() {
 | 
				
			||||||
    Rectangle<int> r (getLocalBounds());
 | 
					    Rectangle<int> r (getLocalBounds());
 | 
				
			||||||
    banks.setBounds (r.removeFromTop(27).reduced(5,0));
 | 
					    banks.setBounds (r.removeFromTop(27).reduced(5,0));
 | 
				
			||||||
@ -171,25 +37,3 @@ bool TablesComponent::keyPressed(const KeyPress &key) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return presetTable.keyPressed(key);
 | 
					    return presetTable.keyPressed(key);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// void TablesComponent::fontChanged(FluidSynthModel *, const String &) {
 | 
					 | 
				
			||||||
//     banksToPresets = fluidSynthModel.getBanks();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     fluid_preset_t* currentPreset = getCurrentPreset();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     selectedBank = fluid_preset_get_banknum(currentPreset);
 | 
					 | 
				
			||||||
//     int selectedPreset = fluid_preset_get_num(currentPreset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     presetTable->setRows(
 | 
					 | 
				
			||||||
//             mapPresets(
 | 
					 | 
				
			||||||
//                     banksToPresets,
 | 
					 | 
				
			||||||
//                     selectedBank
 | 
					 | 
				
			||||||
//             ),
 | 
					 | 
				
			||||||
//             presetToIndexMapper(selectedPreset)
 | 
					 | 
				
			||||||
//     );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//     banks->setItems(
 | 
					 | 
				
			||||||
//             mapBanks(banksToPresets),
 | 
					 | 
				
			||||||
//             selectedBank
 | 
					 | 
				
			||||||
//     );
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -7,50 +7,28 @@
 | 
				
			|||||||
#include "../JuceLibraryCode/JuceHeader.h"
 | 
					#include "../JuceLibraryCode/JuceHeader.h"
 | 
				
			||||||
#include "Pills.h"
 | 
					#include "Pills.h"
 | 
				
			||||||
#include "TableComponent.h"
 | 
					#include "TableComponent.h"
 | 
				
			||||||
#include "Preset.h"
 | 
					 | 
				
			||||||
#include "PresetsToBanks.h"
 | 
					 | 
				
			||||||
#include "FluidSynthModel.h"
 | 
					#include "FluidSynthModel.h"
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
#include <fluidsynth.h>
 | 
					#include <fluidsynth.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TablesComponent : public Component/*,
 | 
					class TablesComponent : public Component
 | 
				
			||||||
                        public FluidSynthModel::Listener */
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    TablesComponent(
 | 
					    TablesComponent(
 | 
				
			||||||
        AudioProcessorValueTreeState& valueTreeState
 | 
					        AudioProcessorValueTreeState& valueTreeState
 | 
				
			||||||
        // FluidSynthModel& fluidSynthModel
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    // ~TablesComponent();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void resized() override;
 | 
					    void resized() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool keyPressed(const KeyPress &key) override;
 | 
					    bool keyPressed(const KeyPress &key) override;
 | 
				
			||||||
    // void fontChanged(FluidSynthModel *, const String &) override;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    AudioProcessorValueTreeState& valueTreeState;
 | 
					    AudioProcessorValueTreeState& valueTreeState;
 | 
				
			||||||
    // FluidSynthModel& fluidSynthModel;
 | 
					 | 
				
			||||||
    // int selectedBank;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Pills banks;
 | 
					    Pills banks;
 | 
				
			||||||
    TableComponent presetTable;
 | 
					    TableComponent presetTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // BanksToPresets banksToPresets;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // static vector<vector<string>> mapPresets(const BanksToPresets &banksToPresets, int bank);
 | 
					 | 
				
			||||||
    // static vector<string> mapBanks(const BanksToPresets &banksToPresets);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // void onBankSelected(int bank);
 | 
					 | 
				
			||||||
    // void onPresetSelected(int preset);
 | 
					 | 
				
			||||||
    // int presetToIndexMapper(int preset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // fluid_preset_t* getCurrentPreset();
 | 
					 | 
				
			||||||
    // Preset getFirstPresetInBank(int bank);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // bool initialised;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TablesComponent)
 | 
					    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TablesComponent)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user