== Major JUCE features and updates ==\r
\r
This file just lists the more notable headline features. For more detailed info\r
-about minor changes and bugfixes, please see the git log!\r
+about minor changes and bugfixes, please see the git log!
+
+Version 4.2.3
+ - Various VST3 improvements: resizing VST3 windows, plug-in compatibility issues
+ - Use NSURLSession on newer OS X versions
+ - Add compatibility for VST 3 SDK update 3.6.6
+ - Miscellaneous fixes and improvements\r
\r
Version 4.2.1\r
- New class CachedValue, for providing easy and efficient access to ValueTree properties
pluginWantsMidiIn="1" pluginProducesMidiOut="0" pluginIsMidiEffectPlugin="0"\r
pluginEditorRequiresKeys="0" pluginAUExportPrefix="AUv3SynthAU"\r
pluginRTASCategory="" aaxIdentifier="com.roli.development.AUv3Synth"\r
- pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.1"\r
+ pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.3"\r
buildStandalone="1">\r
<MAINGROUP id="h0gx6L" name="AUv3Synth">\r
<GROUP id="{9DC59668-E6DF-876C-EB58-DDA88D152162}" name="Source">\r
F452B8399A32BE4F1074F596 = {isa = PBXBuildFile; fileRef = 29982493607128FD6DB6A284; };
69856794EB88963828DDECC6 = {isa = PBXBuildFile; fileRef = 5DAB08505A14E46FF7BF3B1D; };
F56A47BDEEC76681EE80A15E = {isa = PBXBuildFile; fileRef = F003DFE998431203650E2E3F; };
- 26AB69B22ED0C3D7288D1175 = {isa = PBXBuildFile; fileRef = FF08B80860BB393314DC49EA; };
78704983DFEA5408FC5767D8 = {isa = PBXBuildFile; fileRef = D06C2B85E02F13F9B57DB1A9; };
DE7F04372E0068FDBB51B63D = {isa = PBXBuildFile; fileRef = 9C7C3A15A9D747596DDE40AA; };
EB5DBEF68B987F85D1977CE6 = {isa = PBXBuildFile; fileRef = 5063E96C5D8860003810C70E; };
7FE887D76DBB520BBC48CDAF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
802CA561D36E5556CF267271 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAtomic.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAtomic.h"; sourceTree = "SOURCE_ROOT"; };
804448A2E110E3D84021289F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlacAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
+ 805675527BC735B25A5907A5 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
80868CF2327E15F76AD68CF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; };
80970DB9418D27DD52879D1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
809E47902CCE60747026EC3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; };
9767C9015F48F6F42AEC0C9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAutoDisposer.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAutoDisposer.h"; sourceTree = "SOURCE_ROOT"; };
97C74E9A0E8A5576FC301241 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; };
97DDC460BD01030B91158218 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; };
+ 98135B5CED6D00B04F8AD56C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
9819471C5F5583C007A4AED1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "win_utf8_io.h"; path = "../../../../modules/juce_audio_formats/codecs/flac/win_utf8_io.h"; sourceTree = "SOURCE_ROOT"; };
98305AA6513DCC298E322C0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
9849BB6DC80E45E541475772 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jerror.h"; sourceTree = "SOURCE_ROOT"; };
AC36AEF9A7D94B5F50725E38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = lpc.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h"; sourceTree = "SOURCE_ROOT"; };
AC3D1C939D60CBB9F06E5195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorPlayer.h"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h"; sourceTree = "SOURCE_ROOT"; };
ACDA8668B39A102D419BD481 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; };
+ ACDCFB7C5CE966089DF7665E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
+ AD49758CCCDB81F781160518 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; };
AD748818ED49AF2A6BF7AF0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAMath.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAMath.h"; sourceTree = "SOURCE_ROOT"; };
ADA10B57D3CACBF7CA3E7058 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
ADEFBF282F9FF39E37862A73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pnginfo.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h"; sourceTree = "SOURCE_ROOT"; };
AE8270C49E4D0C9109CF8499 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
AF02093447674A2DBEFB7B2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; };
AF575F9303D3AA5E410C274A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B0015C46815CEB6E15236944 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPlayHead.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h"; sourceTree = "SOURCE_ROOT"; };
+ B032D869039A2B845AAD274E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = "../../../../modules/juce_core/zip/zlib/inftrees.h"; sourceTree = "SOURCE_ROOT"; };
+ B054CDFF33B17777FD1855BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c"; sourceTree = "SOURCE_ROOT"; };
+ B05EC8A81DA162236663A8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B0B4FAE3EA49CE2AE0074204 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B0E5392688FD05700AFA0569 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B19103A5C4E54D5ABB50F27F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; };
B1972B63AC71C03527E02534 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; };
- B2CF7DCAD1C8871201A6CE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
- B2F8C1DFA6A765EDB034399D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
+ B2A30D3171F293ECE50DC06B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B2C885D79DF233E10656633A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; };
+ B33097C6BA7E4793E7536BBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
+ B33E3A1B455B48F251A4EFEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B3AED660CB964056A7063CE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; };
B3CA6447C345EE05F8B98195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; };
B442A76A84E1800D10EE5954 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
B48471A74A3A2BDA248931F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisfile.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c"; sourceTree = "SOURCE_ROOT"; };
- B5029BFA56B6E1BB5FB43BFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B4C32A6592E159751BD10360 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
+ B585667FC1E99FE5C1E3F799 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c"; sourceTree = "SOURCE_ROOT"; };
B58CC7A93DBB3706A60E9E76 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; };
- B5CD08BC33A8414D48F4CD67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
+ B5C3356C447E60F512C5E8CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B5CA4FEE0ADFDACCAF2FB017 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngget.c"; sourceTree = "SOURCE_ROOT"; };
B6ABAD2ACC048C4DAB31CA27 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; };
+ B6B3AF7688EF55A4FC61D5D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B774AC9A00BFF63E24EA0646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
+ B77C48286D446F5C7BD4B76F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
B77F4A6EA1005BE4683A0DAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserVoice.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B812C4A2809BB37D45F54A59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c"; sourceTree = "SOURCE_ROOT"; };
+ B8133580F67C0B95E1F36D4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; };
B85C9F9BF94FA8926EB9ACB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; };
B8622807DB0688A98F8C75E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "lookup_data.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h"; sourceTree = "SOURCE_ROOT"; };
+ B98F443DC0CE94BC13CC3D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; };
BAA373F740C171EB1219D9B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessage.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h"; sourceTree = "SOURCE_ROOT"; };
- BBD06432CC4155521050CD2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; };
+ BB1D6E0B0982D0590E8EC99F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BB8432AE150D5AEB38808FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BBB323B5DE53878F445064D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BCC48160464BC0DFCAD33792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; };
BD283419247CBA6C6DD2ADD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; };
+ BDEE5F6548D2980373C45F5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; };
C12C3BDF0D24260675D88C04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiBuffer.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp"; sourceTree = "SOURCE_ROOT"; };
E04216439C3A2AD69B69B520 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
F5E81FD99EFCB226D2486603 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AUv3Synth.vst; sourceTree = "BUILT_PRODUCTS_DIR"; };
8C9C38D32DB4D8BD543CA892 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
A6610B06B712DDE6F2A27290 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = "Flac Licence.txt"; path = "../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt"; sourceTree = "SOURCE_ROOT"; };
AC3356631ED2AC043BC67B79 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
- ACDCFB7C5CE966089DF7665E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
AD228AE61929A94FFBE55CF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAtomicStack.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAtomicStack.h"; sourceTree = "SOURCE_ROOT"; };
- AD49758CCCDB81F781160518 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; };
AE9CA003C4D379CB43E9CDE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAException.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAException.h"; sourceTree = "SOURCE_ROOT"; };
- B0015C46815CEB6E15236944 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPlayHead.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h"; sourceTree = "SOURCE_ROOT"; };
- B032D869039A2B845AAD274E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = "../../../../modules/juce_core/zip/zlib/inftrees.h"; sourceTree = "SOURCE_ROOT"; };
- B054CDFF33B17777FD1855BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c"; sourceTree = "SOURCE_ROOT"; };
- B05EC8A81DA162236663A8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; };
B0A987158C4CF4E8D0D75243 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = format.h; path = "../../../../modules/juce_audio_formats/codecs/flac/format.h"; sourceTree = "SOURCE_ROOT"; };
- B0B4FAE3EA49CE2AE0074204 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
- B0E5392688FD05700AFA0569 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; };
- B19103A5C4E54D5ABB50F27F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; };
- B2A30D3171F293ECE50DC06B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
- B2C885D79DF233E10656633A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; };
- B33097C6BA7E4793E7536BBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
- B33E3A1B455B48F251A4EFEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B2CF7DCAD1C8871201A6CE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
+ B2F8C1DFA6A765EDB034399D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
B3425236EBB43087A2C4AA71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; };
B389D5350378076E0DF5DA6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = export.h; path = "../../../../modules/juce_audio_formats/codecs/flac/export.h"; sourceTree = "SOURCE_ROOT"; };
- B3AED660CB964056A7063CE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; };
- B4C32A6592E159751BD10360 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
- B585667FC1E99FE5C1E3F799 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c"; sourceTree = "SOURCE_ROOT"; };
- B5C3356C447E60F512C5E8CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
- B5CA4FEE0ADFDACCAF2FB017 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngget.c"; sourceTree = "SOURCE_ROOT"; };
- B6B3AF7688EF55A4FC61D5D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B5029BFA56B6E1BB5FB43BFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B5CD08BC33A8414D48F4CD67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
B6EA3B412C6E73478C4D36AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; };
- B774AC9A00BFF63E24EA0646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
- B77C48286D446F5C7BD4B76F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
B79F6D7A104EF67978CFFC4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAVectorUnitTypes.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnitTypes.h"; sourceTree = "SOURCE_ROOT"; };
B801E3F5A1C2992F592A0FBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnail.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h"; sourceTree = "SOURCE_ROOT"; };
- B812C4A2809BB37D45F54A59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c"; sourceTree = "SOURCE_ROOT"; };
- B8133580F67C0B95E1F36D4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; };
B986157ED5B0414CDF696C62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAHostTimeBase.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAHostTimeBase.h"; sourceTree = "SOURCE_ROOT"; };
- B98F443DC0CE94BC13CC3D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; };
BABAE6EE994D5EBDC4013AAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; };
- BB1D6E0B0982D0590E8EC99F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
BB525259297D31B45CC624C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; };
- BB8432AE150D5AEB38808FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; };
- BBB323B5DE53878F445064D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BBD06432CC4155521050CD2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; };
BC2068C5203B2AA39EAE0C6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
- BCC48160464BC0DFCAD33792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; };
BD58CC09BA9FED0E9CACC97B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WindowsMediaAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
BD95E66B6A4CDADCF0631707 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAStreamBasicDescription.cpp; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAStreamBasicDescription.cpp"; sourceTree = "SOURCE_ROOT"; };
BDDC593699182D1603163238 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_devices.cpp"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.cpp"; sourceTree = "SOURCE_ROOT"; };
- BDEE5F6548D2980373C45F5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; };
BED2521A9CE66A6F1A5AE7F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngpread.c"; sourceTree = "SOURCE_ROOT"; };
BED2D02D5F333084E058D678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
BF6BA28F41BA2A03D9325E0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = md5.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h"; sourceTree = "SOURCE_ROOT"; };
C7BED13E38A3138A9D851FAE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_basics.cpp"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.cpp"; sourceTree = "SOURCE_ROOT"; };
C80FFBB5F1E2674B9DBC054B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; };
C87B625D4AD4826BF9301E7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_8.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h"; sourceTree = "SOURCE_ROOT"; };
+ C9407CAAB91ABCB83CD3F80D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; };
C9494DFECDCD27C0815A6F17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; };
C9B7C5BD09A1486B2A10DA8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h"; sourceTree = "SOURCE_ROOT"; };
CA633B8B756E9E7826C8D173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
- CC14A34F66FDF9E12523CABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AUv3.mm"; path = "../../JuceLibraryCode/juce_audio_plugin_client_AUv3.mm"; sourceTree = "SOURCE_ROOT"; };
CC32EDCC4709790EBBA55941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
- CE80FC970F6099B27DAB080D = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
D06C2B85E02F13F9B57DB1A9 = {isa = PBXFileReference; lastKnownFileType = image.png; name = power.png; path = ../../Source/BinaryData/power.png; sourceTree = "SOURCE_ROOT"; };
EC3DE1F504C76EEDDA7F2216 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AUv3Synth.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
9536B5A780A03F6BACB24144 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAUv3Synth.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
C1E4A7F5418639D70CB51F0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; };
C61D176AAECFBC9A277EF2E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; };
C63541C14D518046922DF60B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
- C9407CAAB91ABCB83CD3F80D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; };
CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
CBA22CAB6770979BCCD18EEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
+ CC14A34F66FDF9E12523CABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AUv3.mm"; path = "../../JuceLibraryCode/juce_audio_plugin_client_AUv3.mm"; sourceTree = "SOURCE_ROOT"; };
CC155101953B89262C8B633C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
CD3ABE20AE524B92B9B6A6FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; };
CD41042388657A558C93AD86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c"; sourceTree = "SOURCE_ROOT"; };
F5DC35A024D665725204B375 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; };
F5E8E9C083E0933E6FB6CC13 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; };
F60276DF99D86FCE8A565BE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; };
+ F625DBBA7CA4F3E2830A8FC4 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
F6370FC667E0362CE87FE3E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAVectorUnit.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnit.h"; sourceTree = "SOURCE_ROOT"; };
F66119B180E2027EA08FDCAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; };
F663ABEC52B192E36EBB2958 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cpu.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c"; sourceTree = "SOURCE_ROOT"; };
9329788543F0C6DA2B50BD72,
2CC92DEE105B69921A4BD036, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
988670913C41D72F28DFE34E = {isa = PBXGroup; children = (
+ 98135B5CED6D00B04F8AD56C,
DC8F10CCAC55F7216F0304F9, ); name = AAX; sourceTree = "<group>"; };
FE2338066D80D87950BB4358 = {isa = PBXGroup; children = (
26DB94618438B2D5BF6B856E,
F8952FD62C839E34EBB043F6, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
A2BBDDDA694235612BDE9BD0 = {isa = PBXGroup; children = (
FE2338066D80D87950BB4358,
- F43FCD869B7CBA50CF03BB6F,
3E76A3788CAAB12560CB4517,
AE1DD722E80713D6A2C820C9,
2220D1078A2681D8AAF3563E, ); name = AU; sourceTree = "<group>"; };
- 3CF6F89CE98D1BD583C34852 = {isa = PBXGroup; children = (
+ 618CCB6A21E8C032AF1D2BEB = {isa = PBXGroup; children = (
8905DE78626372768938A4C0,
05C14DEEE0E3BDC4049484B5,
2FA12F7EBB9AC99A08FC1025,
DBA0B8703ED6A2CFF6E952A8,
2D4E5D168D18704BCB317DD8,
CF51659EBB00003E6CB20B66, ); name = RTAS; sourceTree = "<group>"; };
- 5E03484B053FE94C3308A153 = {isa = PBXGroup; children = (
+ E57F8E0940E0C2FB651C1534 = {isa = PBXGroup; children = (
33B2FD7C625F65B132945522,
44E613EE8E541E69E6B8A449, ); name = Standalone; sourceTree = "<group>"; };
- 5D85476955DBC422757405C1 = {isa = PBXGroup; children = (
+ 6E32D1C853DB168862215AF5 = {isa = PBXGroup; children = (
30CDFDC04232575AE7A491F3,
F96C31890AED2B62C4E0E20A,
00A950F33C21C6688103E667,
99AC2D0C2304F21B912FEC5B,
2F9011C34B50B11B6FFEDA7F,
EA8B1437F945AFED7BDF11DB, ); name = utility; sourceTree = "<group>"; };
- F3BA35D57A9C238A5CC3628F = {isa = PBXGroup; children = (
+ 666ACBAA58DBC0AD514A3CF9 = {isa = PBXGroup; children = (
78DD966E73DF076A83FC1F2C,
6FA729EAB8A64447D81B36E9, ); name = VST; sourceTree = "<group>"; };
- 51E2FC46CC35EE59A85AF51E = {isa = PBXGroup; children = (
+ 47BE374539E9FEBFEFDAD7E3 = {isa = PBXGroup; children = (
08D38FFAFF41735F36FD4BF9, ); name = VST3; sourceTree = "<group>"; };
E4D31720EE240DC9A75C9459 = {isa = PBXGroup; children = (
988670913C41D72F28DFE34E,
A2BBDDDA694235612BDE9BD0,
- 3CF6F89CE98D1BD583C34852,
- 5E03484B053FE94C3308A153,
- 5D85476955DBC422757405C1,
- F3BA35D57A9C238A5CC3628F,
- 51E2FC46CC35EE59A85AF51E,
+ 618CCB6A21E8C032AF1D2BEB,
+ E57F8E0940E0C2FB651C1534,
+ 6E32D1C853DB168862215AF5,
+ 666ACBAA58DBC0AD514A3CF9,
+ 47BE374539E9FEBFEFDAD7E3,
9EDB40D557C3BBB1CC63CF65,
26AE9472CE02F176A9513852,
03DE1C983B7DECDCC451C8F8,
F3498E82A2D4ACBED68A7F43,
6AFB9EB642850186B551DB33,
F003DFE998431203650E2E3F,
- FF08B80860BB393314DC49EA,
D06C2B85E02F13F9B57DB1A9, ); name = Resources; sourceTree = "<group>"; };
ED86208188082DE5EA9381E4 = {isa = PBXGroup; children = (
7CBEB55B80E78C9DE16A713A,
F550A01E8A9468C64A914B97 = {isa = XCConfigurationList; buildConfigurations = (
7007C784A0219490DFD18C27,
0ADE306E346FE4F925722F86, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- EF49DCC88B5FC3C6E67ED2A4 = {isa = PBXAggregateTarget; buildConfigurationList = F550A01E8A9468C64A914B97; dependencies = (
+ EF49DCC88B5FC3C6E67ED2A4 = {isa = PBXAggregateTarget; buildConfigurationList = F550A01E8A9468C64A914B97; buildPhases = ( ); buildRules = ( ); dependencies = (
811D9E9CC2221100847306C9,
1316EADEF579F0DB90CF349C,
8F5816EA1D519B78C3345C1B,
19D80348287645B624E0C6B8, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
2094EE2ED994CDD1B1C905BB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
F56A47BDEEC76681EE80A15E,
- 26AB69B22ED0C3D7288D1175,
78704983DFEA5408FC5767D8, ); runOnlyForDeploymentPostprocessing = 0; };
074C299F37078964C5476AC0 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
E94BB952CDD544FA3A0A4DBB, ); runOnlyForDeploymentPostprocessing = 0; };
11C129F26625007CE9DFD618, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
C123969EE00E891FAC7CEF45 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
F56A47BDEEC76681EE80A15E,
- 26AB69B22ED0C3D7288D1175,
78704983DFEA5408FC5767D8, ); runOnlyForDeploymentPostprocessing = 0; };
795D24AC6934948AE4F8FDE2 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
2D137C5E337024E492FA14D4, ); runOnlyForDeploymentPostprocessing = 0; };
5FAC649347835B831BAE3C41, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
0306890051760AEBAFEA2099 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
F56A47BDEEC76681EE80A15E,
- 26AB69B22ED0C3D7288D1175,
78704983DFEA5408FC5767D8, ); runOnlyForDeploymentPostprocessing = 0; };
E60CDCD59C66D98FB19938F1 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
0942F20A9A312E80B2EE65E5, ); runOnlyForDeploymentPostprocessing = 0; };
AE95330B72116D75608B9C68, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
4E507FDDF2C5DF3FE77D60E4 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
F56A47BDEEC76681EE80A15E,
- 26AB69B22ED0C3D7288D1175,
78704983DFEA5408FC5767D8, ); runOnlyForDeploymentPostprocessing = 0; };
7B44C01FD5EBA7864D985AC2 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
0E0B50F4A042E48B9631A42A, ); runOnlyForDeploymentPostprocessing = 0; };
objectVersion = 46;
objects = {
+ 55B4C2F046533A9C139516FF = {isa = PBXBuildFile; fileRef = F5E81FD99EFCB226D2486603; };
EE8DCBA5DC0EE7CAD6FF2F39 = {isa = PBXBuildFile; fileRef = 746B19364297E7D489749B70; };
3F1630B6EF37313AADD6EAB8 = {isa = PBXBuildFile; fileRef = EC3DE1F504C76EEDDA7F2216; };
77FA445D27C21FBA66A46BF2 = {isa = PBXBuildFile; fileRef = 9536B5A780A03F6BACB24144; };
0E0B50F4A042E48B9631A42A = {isa = PBXBuildFile; fileRef = CF02DA80A8A515CE41B0C8F6; };
72733104CA9C62BE856879C9 = {isa = PBXBuildFile; fileRef = 63AFF514CAE6FB89A3503CEF; };
A00624D77FD68669DD6234D0 = {isa = PBXBuildFile; fileRef = A8315F08B794D9C87328F17F; };
+ E94BB952CDD544FA3A0A4DBB = {isa = PBXBuildFile; fileRef = 853D9A89FE96C6DD6730CEC7; };
8EBD1E279B7E4B420F310D12 = {isa = PBXBuildFile; fileRef = D9ED0926381D40DA1A66C26D; };
045E9D3412FD38BFE3071254 = {isa = PBXBuildFile; fileRef = 9965CB9ED8D2B26CACA9C44A; };
4066B5EF83133035C3579D0D = {isa = PBXBuildFile; fileRef = 58E254BD072595F6E3F6D5F5; };
6C5C4F38A006227C77FCBAD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
6CE2AFEAEE4AE23D2E17E2D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; };
6D61505DE8021C51E8C5AE52 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lsp.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c"; sourceTree = "SOURCE_ROOT"; };
+ 6DA4597568FFE5B6D1F5B68A = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-VST.plist"; path = "Info-VST.plist"; sourceTree = "SOURCE_ROOT"; };
6DED13EB49FCE393E16D59FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; };
6DF4FA55C69B25537DCD88C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; };
6DFDBE298AD93DD1B3F067B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; };
738FC67C7D9A53148C0A21AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; };
73BB8E247A275838FD16AFE0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mapping0.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c"; sourceTree = "SOURCE_ROOT"; };
745B58030382C3D0DB6E7815 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; };
- 746B19364297E7D489749B70 = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = AUv3Synth.appex; sourceTree = "BUILT_PRODUCTS_DIR"; };
75034A13541D4052025A4B39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jutils.c"; sourceTree = "SOURCE_ROOT"; };
750DF21E43BED98CE4F53DE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; };
76272B6E0F4FB6D7225653CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CoreAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
7BAB8DD68B7A25B281233969 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; };
7C3E7364953EF9D78C71B866 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
7CA84F62BB5AC492B1EB49A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; };
- 7CBEB55B80E78C9DE16A713A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
7CE0FEFCEC64DF0ADA0B2DF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; };
7D0417B22EF55BE16E7C5061 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; };
7D1E28BE09A85EEBA041558C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; };
7FE887D76DBB520BBC48CDAF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
802CA561D36E5556CF267271 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAtomic.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAtomic.h"; sourceTree = "SOURCE_ROOT"; };
804448A2E110E3D84021289F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlacAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
+ 805675527BC735B25A5907A5 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
80868CF2327E15F76AD68CF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; };
80970DB9418D27DD52879D1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
809E47902CCE60747026EC3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; };
84ABD4F5D068289F4D43E7CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; };
84D3302B18B67B725905AF7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LAMEEncoderAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
8524CF106D2B7B1E08D312C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 853D9A89FE96C6DD6730CEC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_VST2.cpp"; path = "../../JuceLibraryCode/juce_audio_plugin_client_VST2.cpp"; sourceTree = "SOURCE_ROOT"; };
854757FAD81F978667CAA43C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; };
8553867F8B04D10919C2BD4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = smallft.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c"; sourceTree = "SOURCE_ROOT"; };
856618203AAE94C7B806F9EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; };
86AC66980898843AE721BD08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; };
86E1396EB5DB7C3F8D42AF19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; };
87181526B9C99144CBE4F8A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; };
- 872D05BD56490FD7B375C11B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
87415D844832686C8423F226 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c"; sourceTree = "SOURCE_ROOT"; };
874FADD694BB58E2E736FC20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MixerAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
876D30F6E9647DB0F9BE4463 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = format.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h"; sourceTree = "SOURCE_ROOT"; };
89CC639E5B1CDE71BDBC02D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
89E00773FE73394C30642A4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
8A3F809F240408D5195FB0F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = memory.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/memory.c"; sourceTree = "SOURCE_ROOT"; };
- 8AA012F95CDEE0ECAC1D698E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; };
8ACD82D09483797E1A7A65B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; };
8AEA9D5BBBC4CB214F18FCE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; };
8AED766CFA1A37B45BC2DE98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; };
8D030B4C002B429D9A9CF05A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = metadata.h; path = "../../../../modules/juce_audio_formats/codecs/flac/metadata.h"; sourceTree = "SOURCE_ROOT"; };
8D4AF11BC6D0F698838984C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUOutputElement.cpp; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUOutputElement.cpp"; sourceTree = "SOURCE_ROOT"; };
8D6D7548957FA154DA777E17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
- 8D753ADD4B2F1CB0C974A522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; };
- 8DCEAA37D9F7AAD98A244B49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; };
8E1318FA20D468AD45C7A20F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; };
8E29909B5886662F2EC3F5CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
8E61D5E0D6068F247E70219C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; };
8F3941CB0EBB70B37B7DB6DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; };
8F3C3474E9EB852A40B3A25B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUPlugInDispatch.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUPlugInDispatch.h"; sourceTree = "SOURCE_ROOT"; };
8F3FC2A8E965AA4E83259DB3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; };
- 8FAE0E215D1E95E6CA7C58E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; };
8FC88FE9250C7A25AC724BEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; };
- 8FE4D93D82016AE0E952662F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c"; sourceTree = "SOURCE_ROOT"; };
- 90064DDC086AD775FA7D5FFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
- 9015FC74644F82DB0A49FBFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisenc.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c"; sourceTree = "SOURCE_ROOT"; };
903B9CD04DF181894AC76EF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; };
90C18AF3CAC0E59C88732904 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; };
90D3112151AC631747E60670 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; };
9136CCE147582160FA805637 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_16.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h"; sourceTree = "SOURCE_ROOT"; };
9146F18918C954121E932A8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 92529B06E070A28F0C3C4914 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; };
+ 933DE5C4D4002BA9203F65A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 9376596E6EC0707DFEE00ADB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 94304B55601DBF7FBCFC6767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = md5.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c"; sourceTree = "SOURCE_ROOT"; };
+ 94BFEB9B92F3D546332FD8E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = alloc.h; path = "../../../../modules/juce_audio_formats/codecs/flac/alloc.h"; sourceTree = "SOURCE_ROOT"; };
+ 95D4FB306A367AE3A6D28173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 96DCCD578FF29CD7D381E8BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 96F6E7AE69A06FEE69CCA3C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
+ 9A392FBECB732FAC0AA04262 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 9FB1AAC5EC1146B5FC0EFCD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; };
+ A148CC41BDB41EDC8E88DC7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
+ A15E68C337279B15ED933BE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; };
+ E04216439C3A2AD69B69B520 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
+ F5E81FD99EFCB226D2486603 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AUv3Synth.vst; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ 746B19364297E7D489749B70 = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = AUv3Synth.appex; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ 7CBEB55B80E78C9DE16A713A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
+ 872D05BD56490FD7B375C11B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
+ 8AA012F95CDEE0ECAC1D698E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; };
+ 8D753ADD4B2F1CB0C974A522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; };
+ 8DCEAA37D9F7AAD98A244B49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 8FAE0E215D1E95E6CA7C58E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; };
+ 8FE4D93D82016AE0E952662F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c"; sourceTree = "SOURCE_ROOT"; };
+ 90064DDC086AD775FA7D5FFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
+ 9015FC74644F82DB0A49FBFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisenc.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c"; sourceTree = "SOURCE_ROOT"; };
9198593E2E34D16752B90CD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; };
91D10BF1909D2B9C169E4493 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_8.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h"; sourceTree = "SOURCE_ROOT"; };
91F32F326BD577CD67AE20D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_44u.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h"; sourceTree = "SOURCE_ROOT"; };
- 92529B06E070A28F0C3C4914 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; };
92723EFA7826236908D48AC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAAUParameter.cpp; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAUParameter.cpp"; sourceTree = "SOURCE_ROOT"; };
92BFAF31B51618764234C779 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; };
9312B68ACDD2A4EAA31CAA73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
9329788543F0C6DA2B50BD72 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; };
- 933DE5C4D4002BA9203F65A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
- 9376596E6EC0707DFEE00ADB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
938B5112D072B60A18918CF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdcoefct.c"; sourceTree = "SOURCE_ROOT"; };
- 94304B55601DBF7FBCFC6767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = md5.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c"; sourceTree = "SOURCE_ROOT"; };
94308E0D87CFF0D58DAAA0D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "os_types.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/os_types.h"; sourceTree = "SOURCE_ROOT"; };
947776740572A5A07C2500EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; };
- 94BFEB9B92F3D546332FD8E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = alloc.h; path = "../../../../modules/juce_audio_formats/codecs/flac/alloc.h"; sourceTree = "SOURCE_ROOT"; };
94EA45AA948C996F231D6946 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; };
955635CD2D6A1C5BACA519CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
95931BF9B518FB17845AF4A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = smallft.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h"; sourceTree = "SOURCE_ROOT"; };
- 95D4FB306A367AE3A6D28173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; };
96102E98CC639030FAD7EA68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
968EC4E33A1D1949AA4A9F87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; };
96DA31F4C1619188159F7FC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c"; sourceTree = "SOURCE_ROOT"; };
- 96DCCD578FF29CD7D381E8BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; };
- 96F6E7AE69A06FEE69CCA3C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
9767C9015F48F6F42AEC0C9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAutoDisposer.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAutoDisposer.h"; sourceTree = "SOURCE_ROOT"; };
97C74E9A0E8A5576FC301241 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; };
97DDC460BD01030B91158218 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; };
+ 98135B5CED6D00B04F8AD56C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
9819471C5F5583C007A4AED1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "win_utf8_io.h"; path = "../../../../modules/juce_audio_formats/codecs/flac/win_utf8_io.h"; sourceTree = "SOURCE_ROOT"; };
98305AA6513DCC298E322C0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
9849BB6DC80E45E541475772 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jerror.h"; sourceTree = "SOURCE_ROOT"; };
997766E6B5491A51A5242F68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; };
99AC2D0C2304F21B912FEC5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginHostType.h"; path = "../../../../modules/juce_audio_plugin_client/utility/juce_PluginHostType.h"; sourceTree = "SOURCE_ROOT"; };
9A3351689C885961A9BD3F2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; };
- 9A392FBECB732FAC0AA04262 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; };
9A419F28D68BDEB200F29603 = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AUv3Synth/Images.xcassets; sourceTree = "SOURCE_ROOT"; };
9A69DDED5C8357717BAD57DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; };
9AA36A7E6CCDA68D308E0721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_VST2.cpp"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp"; sourceTree = "SOURCE_ROOT"; };
9F1DFEFDC78EC139C4089DEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RuntimePermissions.cpp"; path = "../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"; sourceTree = "SOURCE_ROOT"; };
9F91E161DF777F050B61B6BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; };
9FA43271ACEB06BF3AB00095 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = envelope.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h"; sourceTree = "SOURCE_ROOT"; };
- 9FB1AAC5EC1146B5FC0EFCD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; };
A0173759895A8C13BB754998 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = all.h; path = "../../../../modules/juce_audio_formats/codecs/flac/all.h"; sourceTree = "SOURCE_ROOT"; };
A032CFC5A613848D8594B40B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = all.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h"; sourceTree = "SOURCE_ROOT"; };
A1159B10837BBDD1BD12A882 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CachedValue.cpp"; path = "../../../../modules/juce_data_structures/values/juce_CachedValue.cpp"; sourceTree = "SOURCE_ROOT"; };
A11CF361C0253B499324D31E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; };
A12A4C86AE4FA12C99334932 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
- A148CC41BDB41EDC8E88DC7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
A1595E748092878FDAEA5A30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; };
- A15E68C337279B15ED933BE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; };
A1CFD76549B8E9EB1C360ED5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
A1FA95A0AA37CD773ACBCE8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; };
A2129507609CE7130FBA1340 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; };
C14EFFF60594E0BC2421DC0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C1983ED4284CBEF3B5A427E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
C1D83773976CEDB413DB5E5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = envelope.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c"; sourceTree = "SOURCE_ROOT"; };
+ C1E4A7F5418639D70CB51F0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; };
C1EFF2064480889DAC74D2D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; };
C25203A01A84B7032A7774CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; };
C2DF4936EF95E5A32E71B755 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
C5A2FC7A4569F1C242016136 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = png.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/png.c"; sourceTree = "SOURCE_ROOT"; };
C5B2DDCFB6FEA46E4F97BBA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_events.cpp"; path = "../../../../modules/juce_events/juce_events.cpp"; sourceTree = "SOURCE_ROOT"; };
C61D176AAECFBC9A277EF2E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; };
+ C61EEED69EE6C34E5C64B729 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "config_types.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h"; sourceTree = "SOURCE_ROOT"; };
+ C63541C14D518046922DF60B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
C639338DD5AF077DF5BF8361 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
C68283C8A9FA7CEC6AA6975C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = scales.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h"; sourceTree = "SOURCE_ROOT"; };
C6846316837E7D4578428945 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; };
C9494DFECDCD27C0815A6F17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; };
C9B7C5BD09A1486B2A10DA8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h"; sourceTree = "SOURCE_ROOT"; };
CA633B8B756E9E7826C8D173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
+ CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
+ CBA22CAB6770979BCCD18EEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
CC14A34F66FDF9E12523CABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AUv3.mm"; path = "../../JuceLibraryCode/juce_audio_plugin_client_AUv3.mm"; sourceTree = "SOURCE_ROOT"; };
CC155101953B89262C8B633C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CC32EDCC4709790EBBA55941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
CD3ABE20AE524B92B9B6A6FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; };
CD41042388657A558C93AD86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c"; sourceTree = "SOURCE_ROOT"; };
CD44BCDC60998F9B56D816C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = "../../../../modules/juce_core/zip/zlib/adler32.c"; sourceTree = "SOURCE_ROOT"; };
- CE80FC970F6099B27DAB080D = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
+ CDE81ADB14F09742FBBA28E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CE491063B3EF486A263519F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_X.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h"; sourceTree = "SOURCE_ROOT"; };
+ CE517EF86B0776BA9B27F3F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUTimestampGenerator.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUTimestampGenerator.h"; sourceTree = "SOURCE_ROOT"; };
CF02DA80A8A515CE41B0C8F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_Standalone.cpp"; path = "../../JuceLibraryCode/juce_audio_plugin_client_Standalone.cpp"; sourceTree = "SOURCE_ROOT"; };
CF2F576CE0F6A185597C8D40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; };
CF344C62ABCBA9BAAB6ACFA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; };
CF51659EBB00003E6CB20B66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RTAS_Wrapper.cpp"; path = "../../../../modules/juce_audio_plugin_client/RTAS/juce_RTAS_Wrapper.cpp"; sourceTree = "SOURCE_ROOT"; };
- D03583C1CA01284B5781955E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; };
- D06C2B85E02F13F9B57DB1A9 = {isa = PBXFileReference; lastKnownFileType = image.png; name = power.png; path = ../../Source/BinaryData/power.png; sourceTree = "SOURCE_ROOT"; };
- D0A4E2C5F2B21172DE13DE0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
- D1683E32F1EB634904CD7DE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; };
- D515546E71BD92C742D67905 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; };
- D636983E7D4B5897EF493708 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; };
- DAF78E342ACF24B5A83E0605 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- EC3DE1F504C76EEDDA7F2216 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AUv3Synth.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
- 9536B5A780A03F6BACB24144 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAUv3Synth.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
- C1E4A7F5418639D70CB51F0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; };
- C61EEED69EE6C34E5C64B729 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "config_types.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h"; sourceTree = "SOURCE_ROOT"; };
- C63541C14D518046922DF60B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
- CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
- CBA22CAB6770979BCCD18EEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
- CC32EDCC4709790EBBA55941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
- CDE81ADB14F09742FBBA28E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
- CE491063B3EF486A263519F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_X.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h"; sourceTree = "SOURCE_ROOT"; };
- CE517EF86B0776BA9B27F3F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUTimestampGenerator.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUTimestampGenerator.h"; sourceTree = "SOURCE_ROOT"; };
CF6FA9D2F39F03FE2858F11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
CF7ECFB4AA9A00E103525840 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; };
CF9EEC4A087AA9010D5D21A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
CFADD611F5F0D9EC5127C6C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = trees.c; path = "../../../../modules/juce_core/zip/zlib/trees.c"; sourceTree = "SOURCE_ROOT"; };
CFAFC86F4D25AB5A31DF3BE5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
CFFC609186B1EE226ACEBD2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
+ D03583C1CA01284B5781955E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; };
D0584D8F725E0D7E61F830F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = "../../../../modules/juce_core/zip/zlib/deflate.c"; sourceTree = "SOURCE_ROOT"; };
+ D06C2B85E02F13F9B57DB1A9 = {isa = PBXFileReference; lastKnownFileType = image.png; name = power.png; path = ../../Source/BinaryData/power.png; sourceTree = "SOURCE_ROOT"; };
+ D0A4E2C5F2B21172DE13DE0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
D0ECDC7390CA390D69946652 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcsample.c"; sourceTree = "SOURCE_ROOT"; };
+ D1683E32F1EB634904CD7DE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; };
D19E20CCCD4790B2347D5B80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; };
D2436FFFE291F08409B1EEE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; };
D264387115074C98CF251072 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatWriter.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp"; sourceTree = "SOURCE_ROOT"; };
D48932C6554B443ECB71DC87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; };
D4A4555171F923D744B1FDF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngstruct.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngstruct.h"; sourceTree = "SOURCE_ROOT"; };
D4C0852C1C54EDA5D4F82EB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; };
+ D515546E71BD92C742D67905 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; };
D557AAD12557BF1706441B19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D5797410CEE0E8D2E03D98F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; };
D57DF4F024A84881420586E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = trees.h; path = "../../../../modules/juce_core/zip/zlib/trees.h"; sourceTree = "SOURCE_ROOT"; };
D5816478E1FBC9D296E78CFA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_processors.cpp"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.cpp"; sourceTree = "SOURCE_ROOT"; };
+ D636983E7D4B5897EF493708 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; };
D6670F0F52C7A439715B706F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; };
D6979B0DD8E310EA2512B147 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChannelRemappingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
D72A2819C390689ED5A58197 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; };
DA4E0EA3EB80BE34F9047E72 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; };
DACA6E5A3CE684EC649F31B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; };
DAEE812EF95F96E7D65D875F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; };
+ DAF78E342ACF24B5A83E0605 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
DB216D8107F0BBBBD3F2B0E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
DB3A7C49C8444BD2F57B6689 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; };
DB43ED26DBABD0BC17385E6E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; };
DFF6A93D460B71379FE3EAA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageCollector.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"; sourceTree = "SOURCE_ROOT"; };
E0260479B3C2CAF8477026FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorParameters.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp"; sourceTree = "SOURCE_ROOT"; };
E03AA585A375A39A9BFF3DD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; };
- E04216439C3A2AD69B69B520 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
E0484E5F0994D64013F4EEA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
E09404F45899AA1E82CFC21C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
E0B49BAB1C8D7341A6E142B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jdct.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdct.h"; sourceTree = "SOURCE_ROOT"; };
E31219AD074DCBB8C6A9F816 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
E320A8161071D0D1B9261E2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; };
E32E43F0CC33ED95FD0A9DE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsMediaAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
- E40580FB3605FA6D5DA3FD73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBaseHelper.h"; sourceTree = "SOURCE_ROOT"; };
E433734FC5466D7E26FC11D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; };
E4CB12FDCA729EC8BD9E0845 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c"; sourceTree = "SOURCE_ROOT"; };
E4D985BB229FC31731681790 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
E755606E63BE2C5558FFB353 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; };
E795FC063102CA8BAB722C58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
E79A4F024D4890B61628C42C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ E93BF1F2B52BF52EA12326A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c"; sourceTree = "SOURCE_ROOT"; };
+ EA6D44AA3D1C9B0A5873DC4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_data_structures.cpp"; path = "../../../../modules/juce_data_structures/juce_data_structures.cpp"; sourceTree = "SOURCE_ROOT"; };
+ EC3DE1F504C76EEDDA7F2216 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AUv3Synth.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ 9536B5A780A03F6BACB24144 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAUv3Synth.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ E40580FB3605FA6D5DA3FD73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBaseHelper.h"; sourceTree = "SOURCE_ROOT"; };
E7E45873BE802DD8D676E9CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; };
E88DF76B88F3E67D0FB58CEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = floor0.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c"; sourceTree = "SOURCE_ROOT"; };
E8EB40396974468FBD0EE15B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; };
- E93BF1F2B52BF52EA12326A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c"; sourceTree = "SOURCE_ROOT"; };
E9617DEC7E639354C2AF66A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; };
E9745B8F0DE747F94EAF65A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; };
E975A1A60F48EB781C00B9CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = infback.c; path = "../../../../modules/juce_core/zip/zlib/infback.c"; sourceTree = "SOURCE_ROOT"; };
E9C1C03509E00C37AAA45727 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_QuickTimeAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
EA4345362FE80828317BB860 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; };
- EA6D44AA3D1C9B0A5873DC4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_data_structures.cpp"; path = "../../../../modules/juce_data_structures/juce_data_structures.cpp"; sourceTree = "SOURCE_ROOT"; };
EA89A423564A332B875F040F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = misc.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h"; sourceTree = "SOURCE_ROOT"; };
EA8B1437F945AFED7BDF11DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsHooks.h"; path = "../../../../modules/juce_audio_plugin_client/utility/juce_WindowsHooks.h"; sourceTree = "SOURCE_ROOT"; };
EA92EA0E7F4D3859821CEB4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAUParameter.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAUParameter.h"; sourceTree = "SOURCE_ROOT"; };
F5DC35A024D665725204B375 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; };
F5E8E9C083E0933E6FB6CC13 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; };
F60276DF99D86FCE8A565BE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; };
+ F625DBBA7CA4F3E2830A8FC4 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
F6370FC667E0362CE87FE3E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAVectorUnit.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnit.h"; sourceTree = "SOURCE_ROOT"; };
F66119B180E2027EA08FDCAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; };
F663ABEC52B192E36EBB2958 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cpu.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c"; sourceTree = "SOURCE_ROOT"; };
9329788543F0C6DA2B50BD72,
2CC92DEE105B69921A4BD036, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
988670913C41D72F28DFE34E = {isa = PBXGroup; children = (
+ 98135B5CED6D00B04F8AD56C,
DC8F10CCAC55F7216F0304F9, ); name = AAX; sourceTree = "<group>"; };
FE2338066D80D87950BB4358 = {isa = PBXGroup; children = (
26DB94618438B2D5BF6B856E,
F8952FD62C839E34EBB043F6, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
A2BBDDDA694235612BDE9BD0 = {isa = PBXGroup; children = (
FE2338066D80D87950BB4358,
- F43FCD869B7CBA50CF03BB6F,
3E76A3788CAAB12560CB4517,
AE1DD722E80713D6A2C820C9,
2220D1078A2681D8AAF3563E, ); name = AU; sourceTree = "<group>"; };
- 3CF6F89CE98D1BD583C34852 = {isa = PBXGroup; children = (
+ 618CCB6A21E8C032AF1D2BEB = {isa = PBXGroup; children = (
8905DE78626372768938A4C0,
05C14DEEE0E3BDC4049484B5,
2FA12F7EBB9AC99A08FC1025,
DBA0B8703ED6A2CFF6E952A8,
2D4E5D168D18704BCB317DD8,
CF51659EBB00003E6CB20B66, ); name = RTAS; sourceTree = "<group>"; };
- 5E03484B053FE94C3308A153 = {isa = PBXGroup; children = (
+ E57F8E0940E0C2FB651C1534 = {isa = PBXGroup; children = (
33B2FD7C625F65B132945522,
44E613EE8E541E69E6B8A449, ); name = Standalone; sourceTree = "<group>"; };
- 5D85476955DBC422757405C1 = {isa = PBXGroup; children = (
+ 6E32D1C853DB168862215AF5 = {isa = PBXGroup; children = (
30CDFDC04232575AE7A491F3,
F96C31890AED2B62C4E0E20A,
00A950F33C21C6688103E667,
99AC2D0C2304F21B912FEC5B,
2F9011C34B50B11B6FFEDA7F,
EA8B1437F945AFED7BDF11DB, ); name = utility; sourceTree = "<group>"; };
- F3BA35D57A9C238A5CC3628F = {isa = PBXGroup; children = (
+ 666ACBAA58DBC0AD514A3CF9 = {isa = PBXGroup; children = (
78DD966E73DF076A83FC1F2C,
6FA729EAB8A64447D81B36E9, ); name = VST; sourceTree = "<group>"; };
- 51E2FC46CC35EE59A85AF51E = {isa = PBXGroup; children = (
+ 47BE374539E9FEBFEFDAD7E3 = {isa = PBXGroup; children = (
08D38FFAFF41735F36FD4BF9, ); name = VST3; sourceTree = "<group>"; };
E4D31720EE240DC9A75C9459 = {isa = PBXGroup; children = (
988670913C41D72F28DFE34E,
A2BBDDDA694235612BDE9BD0,
- 3CF6F89CE98D1BD583C34852,
- 5E03484B053FE94C3308A153,
- 5D85476955DBC422757405C1,
- F3BA35D57A9C238A5CC3628F,
- 51E2FC46CC35EE59A85AF51E,
+ 618CCB6A21E8C032AF1D2BEB,
+ E57F8E0940E0C2FB651C1534,
+ 6E32D1C853DB168862215AF5,
+ 666ACBAA58DBC0AD514A3CF9,
+ 47BE374539E9FEBFEFDAD7E3,
9EDB40D557C3BBB1CC63CF65,
26AE9472CE02F176A9513852,
03DE1C983B7DECDCC451C8F8,
CF02DA80A8A515CE41B0C8F6,
63AFF514CAE6FB89A3503CEF,
A8315F08B794D9C87328F17F,
+ 853D9A89FE96C6DD6730CEC7,
D9ED0926381D40DA1A66C26D,
9965CB9ED8D2B26CACA9C44A,
58E254BD072595F6E3F6D5F5,
E553E188A17BDF4E832F0A01,
F138CA63A1127DA0DB69B127, ); name = "Juce Library Code"; sourceTree = "<group>"; };
A727F6B063FCDB816462D213 = {isa = PBXGroup; children = (
+ 6DA4597568FFE5B6D1F5B68A,
F3498E82A2D4ACBED68A7F43,
6AFB9EB642850186B551DB33,
9A419F28D68BDEB200F29603,
29982493607128FD6DB6A284,
5EF6762AB1C5CE4C2DCD59ED, ); name = Frameworks; sourceTree = "<group>"; };
E793574695108F202603BAA5 = {isa = PBXGroup; children = (
+ F5E81FD99EFCB226D2486603,
746B19364297E7D489749B70,
EC3DE1F504C76EEDDA7F2216,
9536B5A780A03F6BACB24144, ); name = Products; sourceTree = "<group>"; };
E793574695108F202603BAA5, ); name = Source; sourceTree = "<group>"; };
7007C784A0219490DFD18C27 = {isa = XCBuildConfiguration; buildSettings = { }; name = Debug; };
0ADE306E346FE4F925722F86 = {isa = XCBuildConfiguration; buildSettings = { }; name = Release; };
+ 653C6C73C56BA201AB6F094C = {isa = XCBuildConfiguration; buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+ CLANG_LINK_OBJC_RUNTIME = NO;
+ CODE_SIGN_IDENTITY = "";
+ COMBINE_HIDPI_IMAGES = YES;
+ CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
+ COPY_PHASE_STRIP = NO;
+ DEPLOYMENT_LOCATION = YES;
+ DSTROOT = /;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "_DEBUG=1",
+ "DEBUG=1",
+ "JucePlugin_Build_VST=1",
+ "JucePlugin_Build_VST3=0",
+ "JucePlugin_Build_AU=0",
+ "JucePlugin_Build_AUv3=0",
+ "JucePlugin_Build_RTAS=0",
+ "JucePlugin_Build_AAX=0",
+ "JucePlugin_Build_Standalone=0",
+ "JUCER_XCODE_IPHONE_5BC26AE3=1",
+ "JUCE_APP_VERSION=1.0.0",
+ "JUCE_APP_VERSION_HEX=0x10000", );
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ GENERATE_PKGINFO_FILE = YES;
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ INFOPLIST_FILE = Info-VST.plist;
+ INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
+ LIBRARY_STYLE = Bundle;
+ OTHER_LDFLAGS = "-bundle -lAUv3Synth";
+ PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
+ WRAPPER_EXTENSION = vst; }; name = Debug; };
+ 19D80348287645B624E0C6B8 = {isa = XCBuildConfiguration; buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+ CLANG_LINK_OBJC_RUNTIME = NO;
+ CODE_SIGN_IDENTITY = "";
+ COMBINE_HIDPI_IMAGES = YES;
+ CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
+ DEAD_CODE_STRIPPING = YES;
+ DEPLOYMENT_LOCATION = YES;
+ DSTROOT = /;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_OPTIMIZATION_LEVEL = 3;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "_NDEBUG=1",
+ "NDEBUG=1",
+ "JucePlugin_Build_VST=1",
+ "JucePlugin_Build_VST3=0",
+ "JucePlugin_Build_AU=0",
+ "JucePlugin_Build_AUv3=0",
+ "JucePlugin_Build_RTAS=0",
+ "JucePlugin_Build_AAX=0",
+ "JucePlugin_Build_Standalone=0",
+ "JUCER_XCODE_IPHONE_5BC26AE3=1",
+ "JUCE_APP_VERSION=1.0.0",
+ "JUCE_APP_VERSION_HEX=0x10000", );
+ GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ GENERATE_PKGINFO_FILE = YES;
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ INFOPLIST_FILE = Info-VST.plist;
+ INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
+ LIBRARY_STYLE = Bundle;
+ OTHER_LDFLAGS = "-bundle -lAUv3Synth";
+ PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
+ WRAPPER_EXTENSION = vst; }; name = Release; };
DC95EAEBECC74A55CADCD887 = {isa = XCBuildConfiguration; buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
"JUCE_APP_VERSION=1.0.0",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_AppExtension.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth.AUv3SynthAUv3; }; name = Debug; };
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_AppExtension.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth.AUv3SynthAUv3; }; name = Release; };
"JUCE_APP_VERSION=1.0.0",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_Standalone.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Debug; };
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_Standalone.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Release; };
"_DEBUG=1",
"DEBUG=1",
"JUCE_SHARED_CODE=1",
- "JucePlugin_Build_VST=0",
+ "JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
"JucePlugin_Build_AUv3=1",
"JUCE_APP_VERSION=1.0.0",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Debug; };
5DA389BE0C844A1A9E20FD7C = {isa = XCBuildConfiguration; buildSettings = {
"_NDEBUG=1",
"NDEBUG=1",
"JUCE_SHARED_CODE=1",
- "JucePlugin_Build_VST=0",
+ "JucePlugin_Build_VST=1",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
"JucePlugin_Build_AUv3=1",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Release; };
D32671708EF2662A51A6335A = {isa = XCBuildConfiguration; buildSettings = {
TARGETED_DEVICE_FAMILY = "1,2";
WARNING_CFLAGS = -Wreorder;
ZERO_LINK = NO; }; name = Release; };
+ 811D9E9CC2221100847306C9 = {isa = PBXTargetDependency; target = 73F4C13CDCAC7EE5914F2E61; };
8F5816EA1D519B78C3345C1B = {isa = PBXTargetDependency; target = 7A046597FDDDB82B78C64AAC; };
E06C8C12CD5FDD7FB372E602 = {isa = PBXTargetDependency; target = E600EF631F7AFA8F3A723E29; };
017B214D817BF0DF53051BB2 = {isa = PBXTargetDependency; target = CD6892FED0DB19C0DDD9AD37; };
F550A01E8A9468C64A914B97 = {isa = XCConfigurationList; buildConfigurations = (
7007C784A0219490DFD18C27,
0ADE306E346FE4F925722F86, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- EF49DCC88B5FC3C6E67ED2A4 = {isa = PBXAggregateTarget; buildConfigurationList = F550A01E8A9468C64A914B97; dependencies = (
+ EF49DCC88B5FC3C6E67ED2A4 = {isa = PBXAggregateTarget; buildConfigurationList = F550A01E8A9468C64A914B97; buildPhases = ( ); buildRules = ( ); dependencies = (
+ 811D9E9CC2221100847306C9,
8F5816EA1D519B78C3345C1B,
E06C8C12CD5FDD7FB372E602,
017B214D817BF0DF53051BB2, ); name = "AUv3Synth (All)"; productName = AUv3Synth; };
+ 32113A068DE980F098C3A7FA = {isa = XCConfigurationList; buildConfigurations = (
+ 653C6C73C56BA201AB6F094C,
+ 19D80348287645B624E0C6B8, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
+ 2094EE2ED994CDD1B1C905BB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
+ 6F585AC4628EC14C9F757022,
+ 78704983DFEA5408FC5767D8, ); runOnlyForDeploymentPostprocessing = 0; };
+ 074C299F37078964C5476AC0 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
+ E94BB952CDD544FA3A0A4DBB, ); runOnlyForDeploymentPostprocessing = 0; };
+ 88CA07DBC6CAFF5FF3E65E3E = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
+ FAD4DF17110D52B8ED8D9F93,
+ 737E06660F37BFFCABD89643,
+ D53302896621B8A3E8BDD606,
+ 669F51FA55E939D010EA279D,
+ EDC8ABA2EC0A2D7A2147E896,
+ 7DEC97493F97160DE6622DBC,
+ 1DF18B2507A574FBA9C49DE1,
+ 71F62F07CBC67FB4FB010583,
+ 6B818B8342839FB008124DEA,
+ F452B8399A32BE4F1074F596,
+ E4236DCEE707C3855C2E3B22, ); runOnlyForDeploymentPostprocessing = 0; };
+ 73F4C13CDCAC7EE5914F2E61 = {isa = PBXNativeTarget; buildConfigurationList = 32113A068DE980F098C3A7FA; buildPhases = (
+ 2094EE2ED994CDD1B1C905BB,
+ 074C299F37078964C5476AC0,
+ 88CA07DBC6CAFF5FF3E65E3E, ); buildRules = ( ); dependencies = (
+ 017B214D817BF0DF53051BB2, ); name = "AUv3Synth (VST)"; productName = AUv3Synth; productReference = F5E81FD99EFCB226D2486603; productType = "com.apple.product-type.bundle"; };
3A7896DB2C11717D9046CE5B = {isa = XCConfigurationList; buildConfigurations = (
DC95EAEBECC74A55CADCD887,
5FAC649347835B831BAE3C41, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
4D9D92DD454BB03746241196, ); runOnlyForDeploymentPostprocessing = 0; };
CD6892FED0DB19C0DDD9AD37 = {isa = PBXNativeTarget; buildConfigurationList = AF907C78A0D17B741F5F8944; buildPhases = (
1F4A8812AAE49E02F3215F48, ); buildRules = ( ); dependencies = ( ); name = "AUv3Synth (Shared Code)"; productName = AUv3Synth; productReference = 9536B5A780A03F6BACB24144; productType = "com.apple.product-type.library.static"; };
- D0E003364F0BE3205BD9243E = {isa = PBXProject; buildConfigurationList = 444EA74CE26BF416566E542C; attributes = { LastUpgradeCheck = 0440; TargetAttributes = { EF49DCC88B5FC3C6E67ED2A4 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };7A046597FDDDB82B78C64AAC = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 1; }; }; };E600EF631F7AFA8F3A723E29 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };CD6892FED0DB19C0DDD9AD37 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; }; }; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 4BFA153CE4E8A774C67EC642; projectDirPath = ""; projectRoot = ""; targets = (EF49DCC88B5FC3C6E67ED2A4, 7A046597FDDDB82B78C64AAC, E600EF631F7AFA8F3A723E29, CD6892FED0DB19C0DDD9AD37); };
+ D0E003364F0BE3205BD9243E = {isa = PBXProject; buildConfigurationList = 444EA74CE26BF416566E542C; attributes = { LastUpgradeCheck = 0440; TargetAttributes = { EF49DCC88B5FC3C6E67ED2A4 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };73F4C13CDCAC7EE5914F2E61 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };7A046597FDDDB82B78C64AAC = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 1; }; }; };E600EF631F7AFA8F3A723E29 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };CD6892FED0DB19C0DDD9AD37 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; }; }; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 4BFA153CE4E8A774C67EC642; projectDirPath = ""; projectRoot = ""; targets = (EF49DCC88B5FC3C6E67ED2A4, 73F4C13CDCAC7EE5914F2E61, 7A046597FDDDB82B78C64AAC, E600EF631F7AFA8F3A723E29, CD6892FED0DB19C0DDD9AD37); };
};
rootObject = D0E003364F0BE3205BD9243E;
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+\r
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
+<plist>\r
+ <dict>\r
+ <key>LSRequiresIPhoneOS</key>\r
+ <true/>\r
+ <key>UIViewControllerBasedStatusBarAppearance</key>\r
+ <false/>\r
+ <key>CFBundleExecutable</key>\r
+ <string>${EXECUTABLE_NAME}</string>\r
+ <key>CFBundleIdentifier</key>\r
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\r
+ <key>CFBundleName</key>\r
+ <string>AUv3Synth</string>\r
+ <key>CFBundleDisplayName</key>\r
+ <string>AUv3Synth</string>\r
+ <key>CFBundlePackageType</key>\r
+ <string>BNDL</string>\r
+ <key>CFBundleSignature</key>\r
+ <string>????</string>\r
+ <key>CFBundleShortVersionString</key>\r
+ <string>1.0.0</string>\r
+ <key>CFBundleVersion</key>\r
+ <string>1.0.0</string>\r
+ <key>NSHumanReadableCopyright</key>\r
+ <string></string>\r
+ <key>NSHighResolutionCapable</key>\r
+ <true/>\r
+ <key>UIRequiresFullScreen</key>\r
+ <true/>\r
+ <key>UIStatusBarHidden</key>\r
+ <true/>\r
+ <key>UISupportedInterfaceOrientations</key>\r
+ <array>\r
+ <string>UIInterfaceOrientationPortrait</string>\r
+ <string>UIInterfaceOrientationLandscapeLeft</string>\r
+ <string>UIInterfaceOrientationLandscapeRight</string>\r
+ </array>\r
+ <key>UIBackgroundModes</key>\r
+ <array/>\r
+ </dict>\r
+</plist>\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail ""\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'ROLI'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'AUv3'\r
+ #define JucePlugin_PluginCode 0x41557633 // 'AUv3'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 1\r
\r
<JUCERPROJECT id="LrATE6" name="AnimationAppExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.AnimationAppExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="F3keCY" name="AnimationAppExample">\r
<GROUP id="{5E4132EA-C4A0-CBDE-BEDA-FD6772DA79D5}" name="Source">\r
<FILE id="n1FmZc" name="MainComponent.cpp" compile="1" resource="0"\r
\r
<JUCERPROJECT id="PAnJXP" name="AudioAppExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.AudioAppExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="GaJIge" name="AudioAppExample">\r
<GROUP id="{168FC5D4-FA65-8320-F83E-C14C416638E1}" name="Source">\r
<FILE id="aHvhJ2" name="MainComponent.cpp" compile="1" resource="0"\r
\r
<JUCERPROJECT id="fyUrFS" name="BouncingBallWavetableDemo" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.juce.BouncingBallWavetableDemo"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.1">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
<MAINGROUP id="MgjqDB" name="BouncingBallWavetableDemo">\r
<GROUP id="{D35F88A0-C242-1CAA-21A9-6D01F78F4128}" name="Source">\r
<FILE id="M5GUDX" name="MainComponent.cpp" compile="1" resource="0"\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="oNvA5C" name="ComponentTutorialExample" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.yourcompany.ComponentTutorialExample"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.1">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
<MAINGROUP id="WydTVz" name="ComponentTutorialExample">\r
<GROUP id="{F2C8112A-EE4B-7AF1-A0A9-16152D1EF1A7}" name="Source">\r
<FILE id="t4ngZQ" name="ToggleLightGridComponent.h" compile="0" resource="0"\r
../../../JuceLibraryCode/juce_video.cpp\\r
\r
ifeq ($(NDK_DEBUG),1)\r
- LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=23" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000"\r
+ LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=gnu++11 -DJUCE_ANDROID=1 -DJUCE_ANDROID_API_VERSION=23 -DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo -DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_ANDROID_7F0E4A25=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000\r
LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL\r
- LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=23" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000"\r
+ LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=gnu++11 -DJUCE_ANDROID=1 -DJUCE_ANDROID_API_VERSION=23 -DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo -DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_ANDROID_7F0E4A25=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000\r
LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL\r
else\r
- LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=23" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000"\r
+ LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=gnu++11 -DJUCE_ANDROID=1 -DJUCE_ANDROID_API_VERSION=23 -DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo -DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_ANDROID_7F0E4A25=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000\r
LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL\r
- LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=23" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000"\r
+ LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=gnu++11 -DJUCE_ANDROID=1 -DJUCE_ANDROID_API_VERSION=23 -DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo -DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_ANDROID_7F0E4A25=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000\r
LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL\r
endif\r
\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
<plist>\r
<dict>\r
+ <key>NSAppTransportSecurity</key>\r
+ <dict>\r
+ <key>NSAllowsArbitraryLoads</key>\r
+ <true/>\r
+ </dict>\r
<key>CFBundleExecutable</key>\r
<string>${EXECUTABLE_NAME}</string>\r
<key>CFBundleIconFile</key>\r
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
<plist>\r
<dict>\r
+ <key>NSAppTransportSecurity</key>\r
+ <dict>\r
+ <key>NSAllowsArbitraryLoads</key>\r
+ <true/>\r
+ </dict>\r
<key>LSRequiresIPhoneOS</key>\r
<true/>\r
<key>UIViewControllerBasedStatusBarAppearance</key>\r
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="sBBIzr" name="JuceDemo" projectType="guiapp" version="3.0.0"\r
- bundleIdentifier="com.yourcompany.JuceDemo" jucerVersion="4.2.1"\r
+ bundleIdentifier="com.yourcompany.JuceDemo" jucerVersion="4.2.3"\r
defines="JUCE_UNIT_TESTS=1" includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
- objCExtraSuffix="hZh0GG" bigIcon="BvyE0d" extraCompilerFlags="-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter">\r
+ objCExtraSuffix="hZh0GG" bigIcon="BvyE0d" extraCompilerFlags="-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter"\r
+ customPList="<plist> <dict> 	<key>NSAppTransportSecurity</key> 	<dict> 		<key>NSAllowsArbitraryLoads</key> 		<true/> 	</dict> </dict> </plist>">\r
<CONFIGURATIONS>\r
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo"\r
osxSDK="default" osxCompatibility="10.10 SDK" osxArchitecture="default"\r
</MODULEPATHS>\r
</XCODE_MAC>\r
<XCODE_IPHONE targetFolder="Builds/iOS" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
- objCExtraSuffix="Lpywnl" bigIcon="BvyE0d" iosScreenOrientation="portraitlandscape">\r
+ objCExtraSuffix="Lpywnl" bigIcon="BvyE0d" iosScreenOrientation="portraitlandscape"\r
+ customPList="<plist> <dict> 	<key>NSAppTransportSecurity</key> 	<dict> 		<key>NSAllowsArbitraryLoads</key> 		<true/> 	</dict> </dict> </plist>">\r
<CONFIGURATIONS>\r
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo"\r
osxSDK="default" osxCompatibility="default" osxArchitecture="default"\r
private:\r
void createRSAKey()\r
{\r
- int bits = jlimit (32, 512, bitSize.getText().getIntValue());\r
+ int bits = jlimit (32, 1024, bitSize.getText().getIntValue());\r
bitSize.setText (String (bits), dontSendNotification);\r
\r
// Create a key-pair...\r
==============================================================================\r
*/\r
\r
+#include <typeinfo>\r
#include "JuceDemoHeader.h"\r
\r
//==============================================================================\r
if (sharedAudioDeviceManager == nullptr)\r
{\r
sharedAudioDeviceManager = new AudioDeviceManager();\r
-\r
- RuntimePermissions::request (\r
- RuntimePermissions::recordAudio,\r
- [] (bool wasGranted) {\r
- int numInputChannels = wasGranted ? 2 : 0;\r
- sharedAudioDeviceManager->initialise (numInputChannels, 2, nullptr, true, String(), nullptr);\r
- }\r
- );\r
+ RuntimePermissions::request (RuntimePermissions::recordAudio, runtimPermissionsCallback);\r
}\r
\r
return *sharedAudioDeviceManager;\r
}\r
\r
+void MainAppWindow::runtimPermissionsCallback (bool wasGranted)\r
+{\r
+ int numInputChannels = wasGranted ? 2 : 0;\r
+ sharedAudioDeviceManager->initialise (numInputChannels, 2, nullptr, true, String(), nullptr);\r
+}\r
+\r
MainAppWindow* MainAppWindow::getMainAppWindow()\r
{\r
for (int i = TopLevelWindow::getNumTopLevelWindows(); --i >= 0;)\r
};\r
\r
private:\r
+\r
+ static void runtimPermissionsCallback (bool wasGranted);\r
+\r
ScopedPointer<ContentComponent> contentComponent;\r
ScopedPointer<Component> taskbarIcon;\r
ScopedPointer<BubbleMessageComponent> currentBubbleMessage;\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="tTAKTK1s" name="HelloWorld" projectType="guiapp" juceFolder="../../../juce"\r
- jucerVersion="4.2.1" version="1.0.0" bundleIdentifier="com.roli.jucehelloworld"\r
+ jucerVersion="4.2.3" version="1.0.0" bundleIdentifier="com.roli.jucehelloworld"\r
companyName="ROLI Ltd." includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="IilE7R" name="MPETest" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.MPETest" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="VCQQcn" name="MPETest">\r
<GROUP id="{D43238F0-992F-BC5A-F1AA-31BBBD3D17B0}" name="Source">\r
<FILE id="uRxR7V" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="wHE0ay" name="MidiTest" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.MidiTest" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="s3xxCh" name="MidiTest">\r
<GROUP id="{7D29F5BC-1B05-AE8F-9202-5CF152AB1103}" name="Source">\r
<FILE id="kpmJ3T" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="gWI5Ir" name="JUCE Network Graphics Demo" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.juce.NetworkGraphicsDemo"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.1">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
<MAINGROUP id="OT9rJ2" name="JUCE Network Graphics Demo">\r
<GROUP id="{48D54E6E-37F4-B20A-E038-C63E4EDFD4D9}" name="Source">\r
<FILE id="BfclEZ" name="Demos.h" compile="0" resource="0" file="Source/Demos.h"/>\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="IhmIkj" name="OSCMonitor" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.rawmaterialsoftware.OSCMonitor" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="N9NMMk" name="OSCMonitor">\r
<GROUP id="{2B92546C-6B49-72D9-ACD0-0F2FCE9AD0D5}" name="Source">\r
<FILE id="fqVB21" name="OSCLogListBox.h" compile="0" resource="0" file="Source/OSCLogListBox.h"/>\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="pdocPt" name="OSCReceiver" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.OSCReceiver" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="Y6Q0O9" name="OSCReceiver">\r
<GROUP id="{9F303ECD-83DE-CA91-97B4-C083DA897F49}" name="Source">\r
<FILE id="HHuoMc" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="rysVAr" name="OSCSender" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.OSCSender" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="knnZZJ" name="OSCSender">\r
<GROUP id="{F2A0007A-4D24-4DD6-DEC8-6428F36CE45D}" name="Source">\r
<FILE id="ORaBHU" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>\r
\r
<JUCERPROJECT id="c3KrlE" name="OpenGLAppExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.OpenGLAppExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="amjEXL" name="OpenGLAppExample">\r
<GROUP id="{28FE2D12-A88D-07E2-72CF-CD04014CF225}" name="Source">\r
<GROUP id="{666960E2-D311-806A-1FE7-A27057939840}" name="Resources">\r
\r
<JUCERPROJECT id="jKHEJM" name="PluckedStringsDemo" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.timurdoumler.PluckedStringsDemo" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="IWdVf7" name="PluckedStringsDemo">\r
<GROUP id="{8800CD50-6741-8B75-0305-FAF13427EF5D}" name="Source">\r
<FILE id="Z7hWe1" name="StringSynthesiser.h" compile="0" resource="0"\r
pluginIsMidiEffectPlugin="1" pluginSilenceInIsSilenceOut="0"\r
pluginEditorRequiresKeys="0" pluginAUExportPrefix="ArpeggiatorAU"\r
pluginRTASCategory="" aaxIdentifier="com.ROLI.Arpeggiator" pluginAAXCategory="AAX_EPlugInCategory_Effect"\r
- jucerVersion="4.2.1" companyName="ROLI Ltd." companyWebsite="www.juce.com"\r
+ jucerVersion="4.2.3" companyName="ROLI Ltd." companyWebsite="www.juce.com"\r
companyEmail="info@juce.com" buildAUv3="0">\r
<MAINGROUP id="l0H2am" name="Arpeggiator">\r
<GROUP id="{E91162B3-479D-3630-4B5F-0E76EE995FB8}" name="Source">\r
2652F9F9C3F4DBC1C5D34974 = {isa = PBXBuildFile; fileRef = FAC1B0E5511BBD94A50A2E49; };
6056E4708065C48B5DBEC734 = {isa = PBXBuildFile; fileRef = 970820EDE1527139F0A21632; };
EFD318C0120FF5F53BE57A95 = {isa = PBXBuildFile; fileRef = 2F12CFEB1E95BC54E1CD3C7D; };
- E3609826518EFA6E8E7589AB = {isa = PBXBuildFile; fileRef = ACE47F30020C3E4144BD108A; };
CBE3170A78C2C2BA01C59EB0 = {isa = PBXBuildFile; fileRef = C74725F506BB44F32F0D8E50; };
- 8A0665F23ACB1B3CB69D88F8 = {isa = PBXBuildFile; fileRef = A3F2CF6BFEAFFFE58A0A9B24; };
+ BDB2CF0F590248E3BB247AFD = {isa = PBXBuildFile; fileRef = 697EF2A14DCAE2E85C3C5A53; };
CD51ABAA6EF40CBA996A4E90 = {isa = PBXBuildFile; fileRef = 2E94A5BF0507304C7FBE7DAC; };
F9286BDCED2819E0411D290B = {isa = PBXBuildFile; fileRef = 2F4E8F666770D3FE1819841C; };
E121C97227FD69E95BC0B848 = {isa = PBXBuildFile; fileRef = B88670F8C43CDC4E1C93F040; };
1433B21863210729F0530CE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../JuceLibraryCode/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; };
1468E60D6C97CED46CEE65D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngread.c; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngread.c"; sourceTree = "SOURCE_ROOT"; };
149DE318630BB06FE1878110 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 14ADC9B94C2E4CD0D6E0AEC1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
14B42A90EAB699C9D84607C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_8.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h"; sourceTree = "SOURCE_ROOT"; };
14D6E8868C09C8A775DC2409 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ComponentBase.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/ComponentBase.h"; sourceTree = "SOURCE_ROOT"; };
14F1769BC9227265335CE7E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../../../../modules/juce_video/juce_video.mm"; sourceTree = "SOURCE_ROOT"; };
2B27A10CE5AE76648A90D11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; };
2B74FE1DB5690776640A424A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jidctfst.c"; sourceTree = "SOURCE_ROOT"; };
2B934F373C03D2E722D651A7 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = "Flac Licence.txt"; path = "../../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt"; sourceTree = "SOURCE_ROOT"; };
+ 2BFEB8B6D2202970E1EDA7E2 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
2C5EC74F7F59FB4D2EDBF48A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; };
2C96D1EF867911A0E68FFBFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
2CCEDD6E4D5033AC85568494 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; };
2E886B4634424C6F38673E3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jcapimin.c"; sourceTree = "SOURCE_ROOT"; };
2E94A5BF0507304C7FBE7DAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../JuceLibraryCode/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; };
2EC53AB4DD0E835D9B23844C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUPlugInDispatch.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUPlugInDispatch.h"; sourceTree = "SOURCE_ROOT"; };
- 2F4E8F666770D3FE1819841C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../JuceLibraryCode/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; };
2FFF28CCC21983E2097F661E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; };
315792D7850F26654F7F799A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c"; sourceTree = "SOURCE_ROOT"; };
316054DECCF2C8CA1375419C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAVectorUnitTypes.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnitTypes.h"; sourceTree = "SOURCE_ROOT"; };
31C6340CFAED51F9297A247B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
- 326380A033B511A7D6C908B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 31EA1DBEF38B6612DCF697ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; };
32AAD6851954F58C57AAF699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; };
33FA636BC069C12099595FF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
34E23BC027A8B05CC5F418FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 34F7EF8094F8E02C29C9851B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
35A89273665F75DDA18CDC47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
35D50824AD807A721FA1ED0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; };
3676883386C9710B77E2A882 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitreader.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h"; sourceTree = "SOURCE_ROOT"; };
36E62B359C62BCD4DEC8715B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fixed.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h"; sourceTree = "SOURCE_ROOT"; };
375309A679FB0737182D6268 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mapping0.c; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c"; sourceTree = "SOURCE_ROOT"; };
377125E7F99E475F08A365DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = memory.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h"; sourceTree = "SOURCE_ROOT"; };
- 38286B4A32B4D3C255E0A871 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AAX_Wrapper.cpp"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp"; sourceTree = "SOURCE_ROOT"; };
- 385469D6F16711AF64054853 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterFloat.h"; path = "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h"; sourceTree = "SOURCE_ROOT"; };
3BEDADA1310ADC048CDA2C5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPENote.h"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPENote.h"; sourceTree = "SOURCE_ROOT"; };
3DF64E77DF55D4CFF0445C51 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReverbAudioSource.cpp"; path = "../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
3F2ECB4984ED66DFE2FBC8A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = float.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/float.c"; sourceTree = "SOURCE_ROOT"; };
2C88000D1FD0FF38CE9A45DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_RTAS_MacUtilities.mm"; path = "../../../../../modules/juce_audio_plugin_client/RTAS/juce_RTAS_MacUtilities.mm"; sourceTree = "SOURCE_ROOT"; };
2D0FF4338F332D5D2EF467BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; };
2F12CFEB1E95BC54E1CD3C7D = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; };
+ 2F4E8F666770D3FE1819841C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../JuceLibraryCode/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; };
2F9B863B3208F7FDC2DFB5C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; };
3076EC4F52A19CE9017D3F25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; };
30C6744AD7589406A556BB04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; };
- 31EA1DBEF38B6612DCF697ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; };
+ 326380A033B511A7D6C908B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; };
32A851BECAA8CB552DA0C92B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; };
333B1B17AC6BBF4E5330BA2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
3393B8D4E413710805AAD1FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; };
3447AC4248751CBF85190EAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
34A5198B33BE63C226542043 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; };
34D919EE29BFF65E7B058F7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; };
- 34F7EF8094F8E02C29C9851B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
35BC4E6396C07229A7B57058 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
364C3095D20CCE47471C4DB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
36B5D78633D30EBA28D70796 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
37506BAF1DE7956F29B94FC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
37CB0A4D4B303E50117CE937 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
37CC572A9EBB11B044700DD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 38286B4A32B4D3C255E0A871 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AAX_Wrapper.cpp"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 385469D6F16711AF64054853 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterFloat.h"; path = "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h"; sourceTree = "SOURCE_ROOT"; };
38611AE4F0B78E647A39BDD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RuntimePermissions.cpp"; path = "../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"; sourceTree = "SOURCE_ROOT"; };
387FA9A6E4DD47AA1E9EB560 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = zconf.in.h; path = "../../../../../modules/juce_core/zip/zlib/zconf.in.h"; sourceTree = "SOURCE_ROOT"; };
38EB4858B45965104516E7E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; };
6965419522A8F4EE3C0E2F45 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
6966F44BE8B15F279DD220B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; };
697C69452850D5C1756C89AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; };
+ 697EF2A14DCAE2E85C3C5A53 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
69B162683CA492C8029257F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; };
69B2E6C4996E538FBA2F0DE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUOutputBase.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUOutputBase.cpp"; sourceTree = "SOURCE_ROOT"; };
69B37CF1CC379A84387B0334 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pnginfo.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h"; sourceTree = "SOURCE_ROOT"; };
A3C4B0ADA80F626A16808AE0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c"; sourceTree = "SOURCE_ROOT"; };
A3CD317F3EE5C06F2EA1A08C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
A3E82EA41C7ED1F1F667C06F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_events.cpp"; path = "../../../../../modules/juce_events/juce_events.cpp"; sourceTree = "SOURCE_ROOT"; };
- A3F2CF6BFEAFFFE58A0A9B24 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
A42D10D549BC0D20A8F94101 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLContext.cpp"; path = "../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp"; sourceTree = "SOURCE_ROOT"; };
A4934E1C24CBC9827ECC9149 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; };
A49A07A7416A34302BA77068 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
C0EDB3E56321B663CEA2E600,
DAF907ABF4DE87F35748F3D6, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
A761179035DC171AE3CC1361 = {isa = PBXGroup; children = (
+ 14ADC9B94C2E4CD0D6E0AEC1,
38286B4A32B4D3C255E0A871, ); name = AAX; sourceTree = "<group>"; };
2950965D1962FA815C4D2EED = {isa = PBXGroup; children = (
8050245A4FDA661B38C56FB7,
905886A5158A96197F3B794D, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
BA137B835216E7860F255BD8 = {isa = PBXGroup; children = (
2950965D1962FA815C4D2EED,
- 433FE5AD20CFA2F2D6A1E037,
3C5308C4C1F27A3EDA01A6AE,
7E48708D1F7B5C675C2317FA,
- 5B391F3E3B16BFFA2E2E022F,
- A3F2CF6BFEAFFFE58A0A9B24, ); name = AU; sourceTree = "<group>"; };
- 8691C24C4102F1C9E9B9C411 = {isa = PBXGroup; children = (
+ 5B391F3E3B16BFFA2E2E022F, ); name = AU; sourceTree = "<group>"; };
+ 0F72F8E63055FBB979899A29 = {isa = PBXGroup; children = (
60887069093B99EFB6343769,
26EFE7738F4209B87E675B48,
8495D4AC707047B56331794B,
2C88000D1FD0FF38CE9A45DC,
85762464FE37AFE1886FEC22,
EBC20070F34FA195234BE6DF, ); name = RTAS; sourceTree = "<group>"; };
- C05274DFED1EB6E34DF36733 = {isa = PBXGroup; children = (
+ 745D75DA8B561FCA6860047F = {isa = PBXGroup; children = (
4383F22A2A80A06AD2CC494A,
12351FF0F32DCFFD8F9B753E, ); name = Standalone; sourceTree = "<group>"; };
- 99C24791D5336D7A9E41FAF5 = {isa = PBXGroup; children = (
+ B6C772C0440D8D8DBE7632CB = {isa = PBXGroup; children = (
391348A415637487C38D51AF,
689997DCF29C4EA0BBE54FB3,
F04DF2587A3735FD7CBD29C0,
4C2521E196D9F39AEE5A9A3C,
54ED3AEF6A560DA2A2C9A6A1,
73967B10B92F7FAB36839F0C, ); name = utility; sourceTree = "<group>"; };
- 5485B6828CE54EEAFCFE850A = {isa = PBXGroup; children = (
+ 6CA0C21AAEF945AA59C2EB8C = {isa = PBXGroup; children = (
0462FCF4041854C357138EB2,
C18A26D290AB9B1B16DDF330, ); name = VST; sourceTree = "<group>"; };
- 17217ECF28B1997B5294F7EB = {isa = PBXGroup; children = (
+ 8A9835029A0E7FDB7F930A00 = {isa = PBXGroup; children = (
EAAA5DE166254FF08BBF56C4, ); name = VST3; sourceTree = "<group>"; };
7FF931018B659697B544BFF0 = {isa = PBXGroup; children = (
A761179035DC171AE3CC1361,
BA137B835216E7860F255BD8,
- 8691C24C4102F1C9E9B9C411,
- C05274DFED1EB6E34DF36733,
- 99C24791D5336D7A9E41FAF5,
- 5485B6828CE54EEAFCFE850A,
- 17217ECF28B1997B5294F7EB,
+ 0F72F8E63055FBB979899A29,
+ 745D75DA8B561FCA6860047F,
+ B6C772C0440D8D8DBE7632CB,
+ 6CA0C21AAEF945AA59C2EB8C,
+ 8A9835029A0E7FDB7F930A00,
735F5B2D82B337DC3E3F2B4C,
951CE97A5CF4D268F6F8F450,
F9BB54AE65B0CB1C8D3A6484,
+ 697EF2A14DCAE2E85C3C5A53,
7A8D5B45E22BF4C69EE381A7,
5E7D4EE3F4AF0E8F5178E18E,
74F428D92543A96844DADEA8,
AD33FF34F267508546D24E26,
E39E8398B8A26F3F99A37341,
DE0DBA6DFFF3F7B3024D78AF,
- 2F12CFEB1E95BC54E1CD3C7D,
- ACE47F30020C3E4144BD108A, ); name = Resources; sourceTree = "<group>"; };
+ 2F12CFEB1E95BC54E1CD3C7D, ); name = Resources; sourceTree = "<group>"; };
61D8F5CF64FE3EC528B85D1B = {isa = PBXGroup; children = (
C3F6222E9059F8CCD9674AD0,
AC840D910B076A8D6E11D0E3,
3C2FB38C546E3A4CBD11DD08 = {isa = XCConfigurationList; buildConfigurations = (
6A83695CF366C87636A392BE,
024F8B1B5C243015CA8FEF35, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- 08D74DB290FCD09A8D4810BB = {isa = PBXAggregateTarget; buildConfigurationList = 3C2FB38C546E3A4CBD11DD08; dependencies = (
+ 08D74DB290FCD09A8D4810BB = {isa = PBXAggregateTarget; buildConfigurationList = 3C2FB38C546E3A4CBD11DD08; buildPhases = ( ); buildRules = ( ); dependencies = (
D65F24B83710D0DAEB515331,
FB5FCA02BA29016482B2C525,
78D7AF4AA023DEF36CFB4694,
D83A1735FBD5B491316453B8,
AC0ABA95F0350939E21390E1, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
DD2730D2C73FAF12FC2A2FE1 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- EFD318C0120FF5F53BE57A95,
- E3609826518EFA6E8E7589AB, ); runOnlyForDeploymentPostprocessing = 0; };
+ EFD318C0120FF5F53BE57A95, ); runOnlyForDeploymentPostprocessing = 0; };
374615B793201971BEB6ACD7 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
3F4774290CDA1A5712701353, ); runOnlyForDeploymentPostprocessing = 0; };
C536519964353A302E775B31 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
D42A639827E2709B5AF668D8,
07B9E8F70529950A47F22BA0, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
6E5217D875151ACA03487C5F = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- EFD318C0120FF5F53BE57A95,
- E3609826518EFA6E8E7589AB, ); runOnlyForDeploymentPostprocessing = 0; };
+ EFD318C0120FF5F53BE57A95, ); runOnlyForDeploymentPostprocessing = 0; };
D6A7B6CC63294E7F4E4C2669 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
087F53B6CB2E5291253A1662, ); runOnlyForDeploymentPostprocessing = 0; };
FD25AA0E45A27BC734181E25 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
575D0AC8DD9926D1C8349BE2,
6B6E02F5844A057FE3738154, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
D4AFA92A095134140E436078 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- EFD318C0120FF5F53BE57A95,
- E3609826518EFA6E8E7589AB, ); runOnlyForDeploymentPostprocessing = 0; };
+ EFD318C0120FF5F53BE57A95, ); runOnlyForDeploymentPostprocessing = 0; };
2DBC42F261B32E5F29204E1A = {isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = (
- 8A0665F23ACB1B3CB69D88F8, ); runOnlyForDeploymentPostprocessing = 0; };
+ BDB2CF0F590248E3BB247AFD, ); runOnlyForDeploymentPostprocessing = 0; };
CE1F70D63BB05DCAD3BA3110 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
7FD723582B7BF1775729023D,
1935BD4130D5954448BC9B9D, ); runOnlyForDeploymentPostprocessing = 0; };
515B9E5E69F486633922E731,
3F21DFC5AA6C44E97BE3588C, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
56971B7CCCA861C76980BF5F = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- EFD318C0120FF5F53BE57A95,
- E3609826518EFA6E8E7589AB, ); runOnlyForDeploymentPostprocessing = 0; };
+ EFD318C0120FF5F53BE57A95, ); runOnlyForDeploymentPostprocessing = 0; };
A74DE6A1732099BA13F670AD = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
0C147FBEF5B1A66FBFBB01F4, ); runOnlyForDeploymentPostprocessing = 0; };
B6D4E134F7DDBE5BEE94F2B0 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
-<plist>\r
- <dict>\r
- <key>CFBundleExecutable</key>\r
- <string>${EXECUTABLE_NAME}</string>\r
- <key>CFBundleIconFile</key>\r
- <string></string>\r
- <key>CFBundleIdentifier</key>\r
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\r
- <key>CFBundleName</key>\r
- <string>Arpeggiator</string>\r
- <key>CFBundleDisplayName</key>\r
- <string>Arpeggiator</string>\r
- <key>CFBundlePackageType</key>\r
- <string>FMWK</string>\r
- <key>CFBundleSignature</key>\r
- <string>????</string>\r
- <key>CFBundleShortVersionString</key>\r
- <string>1.0.0</string>\r
- <key>CFBundleVersion</key>\r
- <string>1.0.0</string>\r
- <key>NSHumanReadableCopyright</key>\r
- <string>ROLI Ltd.</string>\r
- <key>NSHighResolutionCapable</key>\r
- <true/>\r
- </dict>\r
-</plist>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\sampler\juce_Sampler.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBaseHelper.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBuffer.h"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r"/>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/>\r
</ItemGroup>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h">\r
<Filter>Juce Modules\juce_audio_formats</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h">\r
+ <Filter>Juce Modules\juce_audio_plugin_client\AAX</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses</Filter>\r
</ClInclude>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
</None>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r">\r
- <Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
+ </None>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
</None>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt">\r
<Filter>Juce Modules\juce_graphics\image_formats\jpglib</Filter>\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail "info@juce.com"\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'ROLI'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'Arpg'\r
+ #define JucePlugin_PluginCode 0x41727067 // 'Arpg'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 0\r
#define JucePlugin_VSTCategory kPlugCategEffect\r
#endif\r
#ifndef JucePlugin_AUMainType\r
- #define JucePlugin_AUMainType kAudioUnitType_Effect\r
+ #define JucePlugin_AUMainType 'aumi'\r
#endif\r
#ifndef JucePlugin_AUSubType\r
#define JucePlugin_AUSubType JucePlugin_PluginCode\r
6B4E64CC0DA5E1DC53159376 = {isa = PBXBuildFile; fileRef = 28754784774E7974CF215965; };
14E482AFF9CC9F18BA3798BD = {isa = PBXBuildFile; fileRef = 8B25F581B3FC77FB9FE0079B; };
434F6E14A0DACDAA2BF2212B = {isa = PBXBuildFile; fileRef = E13512F9451169A200CA63BF; };
- 685F85F881C02A3AAA5E9B47 = {isa = PBXBuildFile; fileRef = BF909DFBC9B899C6119F556B; };
FADD82E463A2C5169B5F72E9 = {isa = PBXBuildFile; fileRef = ECD7D7FB3760E3792BAAC6CE; };
- 9D6465B0B231D381F43E350E = {isa = PBXBuildFile; fileRef = 52F901B45BB73B9A4C4588C4; };
+ F6C5AAF2B7414AC1474EF3EA = {isa = PBXBuildFile; fileRef = 2BB3D82DA20E11064A181C9F; };
BE1CCB2BA25C1B9CC93BD180 = {isa = PBXBuildFile; fileRef = 2A42EB4E6808C916CD805B55; };
6A823DA60FD178B0AE4F7795 = {isa = PBXBuildFile; fileRef = 539D8FB917601AE0FEF2EDD0; };
6859170B30F156B4628F7476 = {isa = PBXBuildFile; fileRef = 3F62CC0D964ADA2C5FEE8780; };
2134DC1B33511F87D54B2D8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; };
2147F477AF3713D33E1E50CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
2152D28F9FCD5E968AB74A6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 21888BBF72D5076AA09BF442 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
218E7DFF985197C095961EB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; };
21B97DA05679BB8EE0C91A65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FloatVectorOperations.h"; path = "../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h"; sourceTree = "SOURCE_ROOT"; };
21D96C3F5C44E2768DC18ED0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLFrameBuffer.h"; path = "../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h"; sourceTree = "SOURCE_ROOT"; };
2B67B13342F0A3F807DF2B2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiRPN.cpp"; path = "../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp"; sourceTree = "SOURCE_ROOT"; };
2B7C784CF333CA6BEEF5038A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RTAS_DigiCode1.cpp"; path = "../../../../../modules/juce_audio_plugin_client/RTAS/juce_RTAS_DigiCode1.cpp"; sourceTree = "SOURCE_ROOT"; };
2B8E9F5D2845DA70FCDB53F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = "../../../../../modules/juce_core/zip/zlib/deflate.c"; sourceTree = "SOURCE_ROOT"; };
+ 2BB3D82DA20E11064A181C9F = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
2BC8F8214792631A55C86182 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IncludeModuleHeaders.h"; path = "../../../../../modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h"; sourceTree = "SOURCE_ROOT"; };
2BFB3614DD9C2CFD7D08B4D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_graphics.cpp"; path = "../../../../../modules/juce_graphics/juce_graphics.cpp"; sourceTree = "SOURCE_ROOT"; };
2C29E6A7967E9244FC3CDE85 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; };
52B3A797835ED0B7474BD7C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_QuickTimeMovieComponent.cpp"; path = "../../../../../modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
52BFB6C68B8BF5A6BEFC0127 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUBuffer.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBuffer.h"; sourceTree = "SOURCE_ROOT"; };
52E047F304B418DC34B7961D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
- 52F901B45BB73B9A4C4588C4 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
539D8FB917601AE0FEF2EDD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../JuceLibraryCode/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; };
53C8168EAD3420C0EFD34BE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CoreAudioFormat.cpp"; path = "../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
53F794C42FF269F389C0371A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; };
EE3D9D885DC024F73E7BA834 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CarbonEventHandler.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp"; sourceTree = "SOURCE_ROOT"; };
EE68D617C21D6400FFDC08E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; };
EE799DBCC57F1B69CEB332A1 = {isa = PBXFileReference; lastKnownFileType = file.r; name = AUResources.r; path = "../../../../../modules/juce_audio_plugin_client/AU/AUResources.r"; sourceTree = "SOURCE_ROOT"; };
+ EEB2A8271DE160CC76165242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
EEE02CD512C902DD7B0C5D13 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; };
EF055DD10D73DD84E657AB0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; };
EF0ED3DFA2926694133E27E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; };
F19532C9A9B834EF732E2C52 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZoneLayout.cpp"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
F1A0F0881D3C62C8E705120E = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-VST3.plist"; path = "Info-VST3.plist"; sourceTree = "SOURCE_ROOT"; };
F1B4EC755365729CF9850E27 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
+ F1B858A448D0BA6929408B97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jchuff.h; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.h"; sourceTree = "SOURCE_ROOT"; };
F1C1D72B4B911227DF608946 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; };
F2317300350CF81B3EC383A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = transupp.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/transupp.c"; sourceTree = "SOURCE_ROOT"; };
F28941FBBB1C31040CDFEA67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; };
F3B8EEB02E5588D99021DD10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
F3BFC5ADFAD663890D658894 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
F3FC0F1212CEA1EE597AF0DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_opengl.cpp"; path = "../../../../../modules/juce_opengl/juce_opengl.cpp"; sourceTree = "SOURCE_ROOT"; };
- F8D93BA03DB14514E2F9D007 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GainPlugIn.component; sourceTree = "BUILT_PRODUCTS_DIR"; };
- C43A527A45129CF421296BD0 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GainPlugIn.aaxplugin; sourceTree = "BUILT_PRODUCTS_DIR"; };
- 074F1E0FAFBD4B127B869BC2 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGainPlugIn.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
- F1B858A448D0BA6929408B97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jchuff.h; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.h"; sourceTree = "SOURCE_ROOT"; };
- F405F19EE310FBC6BB4A1472 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAXException.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAXException.h"; sourceTree = "SOURCE_ROOT"; };
F507AE61AF55B2101383B1E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectShowComponent.h"; path = "../../../../../modules/juce_video/playback/juce_DirectShowComponent.h"; sourceTree = "SOURCE_ROOT"; };
F527FEA0852AA21984AD9F47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; };
F549ECCF4D91FC7A30105297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; };
F5C623942E20C541382097E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
F5EAFB838EC3E83930E9C8F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c"; sourceTree = "SOURCE_ROOT"; };
F6AC635E17C2745BA801256F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; };
- F6D0C31C49847196CB56EF7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; };
F6D61FC781A1532ACF955A56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; };
- F6F268E5CE4AC0C5EFF2A414 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUCarbonViewControl.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h"; sourceTree = "SOURCE_ROOT"; };
F73E61CD3ACE30495293E399 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c"; sourceTree = "SOURCE_ROOT"; };
F758A3A014E70D7F75D889D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; };
- F76BAD45163B80F58A11FE42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatManager.cpp"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; };
F7837342DC31305E98733379 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorGraph.cpp"; path = "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp"; sourceTree = "SOURCE_ROOT"; };
+ F8D93BA03DB14514E2F9D007 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GainPlugIn.component; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ C43A527A45129CF421296BD0 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GainPlugIn.aaxplugin; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ 074F1E0FAFBD4B127B869BC2 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGainPlugIn.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ F405F19EE310FBC6BB4A1472 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAXException.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAXException.h"; sourceTree = "SOURCE_ROOT"; };
+ F6D0C31C49847196CB56EF7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; };
+ F6F268E5CE4AC0C5EFF2A414 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUCarbonViewControl.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h"; sourceTree = "SOURCE_ROOT"; };
+ F76BAD45163B80F58A11FE42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatManager.cpp"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; };
F79776F078375AA287A24AB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../JuceLibraryCode/juce_video.mm"; sourceTree = "SOURCE_ROOT"; };
F7BB750285C1A56C05A6B437 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
F7FA3CA65C2B371C902CA9EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
56FF5DCB746A2F7485406F63,
18B7B5B0C06A1C96ED45C9AB, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
F1C57B1BE7D3A85714FB7C7A = {isa = PBXGroup; children = (
+ EEB2A8271DE160CC76165242,
B41DB1D9877BC61AB0558A69, ); name = AAX; sourceTree = "<group>"; };
AB9348DF000622E4B2C60AD4 = {isa = PBXGroup; children = (
F12E2F9633C0C10172C7EB29,
5E148B6D2D4D3ACADBD369BA, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
F2D5F877258DB2BBF0433F23 = {isa = PBXGroup; children = (
AB9348DF000622E4B2C60AD4,
- EE799DBCC57F1B69CEB332A1,
8CABBDFF3D48FA622F561D56,
B15D003DE2F4E963EC111711,
- 8782AADF74783EA3DD066529,
- 52F901B45BB73B9A4C4588C4, ); name = AU; sourceTree = "<group>"; };
- A8BAB3F628FDD2F723B11AF5 = {isa = PBXGroup; children = (
+ 8782AADF74783EA3DD066529, ); name = AU; sourceTree = "<group>"; };
+ 1DDAAEC5B6DB8099FC652515 = {isa = PBXGroup; children = (
B7EC6979B78232E97C67586D,
2B7C784CF333CA6BEEF5038A,
CF608BF804CB06BCBB51B9C2,
6701AB4D2F5DAD2EA72ACFE9,
DC55FBABEB3A839B6602D678,
DBF11B9083F40C0C849B9302, ); name = RTAS; sourceTree = "<group>"; };
- 48CA15F7102E796E2AD6058D = {isa = PBXGroup; children = (
+ ABE3EC02D9B5D528025BF690 = {isa = PBXGroup; children = (
43B51F79EFF2E9673AA1BCE6,
8323AB8EF5430A81A4FDD26E, ); name = Standalone; sourceTree = "<group>"; };
- 50034CFA00470A07703FD97C = {isa = PBXGroup; children = (
+ AAB881B99070695DB74EB217 = {isa = PBXGroup; children = (
9B5CE97BAC0AAD8EEAF75ABF,
38687DB2FEC47B8E4826346E,
E219774D186DF70D694D2768,
9F56E1F9CF75D555C677A38D,
E9FEFC46FF2B51B8C3A520F4,
21F8A643A1D07AE29337D139, ); name = utility; sourceTree = "<group>"; };
- 0DA9BEC29F87A7F4440AA21A = {isa = PBXGroup; children = (
+ D78074DEDA44278DDA6376E6 = {isa = PBXGroup; children = (
9548631628595F1576CD7B73,
C3D43F992D8AAA5EF9D23288, ); name = VST; sourceTree = "<group>"; };
- CD737733FC3EFC2B3A99B8C1 = {isa = PBXGroup; children = (
+ C02CF34EACB3A93904174BD4 = {isa = PBXGroup; children = (
8676D218DB100E6B4636A82E, ); name = VST3; sourceTree = "<group>"; };
F7173AE77C51F8BD4B4476AC = {isa = PBXGroup; children = (
F1C57B1BE7D3A85714FB7C7A,
F2D5F877258DB2BBF0433F23,
- A8BAB3F628FDD2F723B11AF5,
- 48CA15F7102E796E2AD6058D,
- 50034CFA00470A07703FD97C,
- 0DA9BEC29F87A7F4440AA21A,
- CD737733FC3EFC2B3A99B8C1,
+ 1DDAAEC5B6DB8099FC652515,
+ ABE3EC02D9B5D528025BF690,
+ AAB881B99070695DB74EB217,
+ D78074DEDA44278DDA6376E6,
+ C02CF34EACB3A93904174BD4,
B5F601E64CCEDC477481A4ED,
BBBE3DABDB9284A6397CE7B8,
FEDE864FABF0E3C4883CF664,
+ 2BB3D82DA20E11064A181C9F,
A9D38AF307DF9AD3D7E01502,
4544225B1B0BC9D00BA328C0,
03B89FFF7FBE455F753317FB,
F1A0F0881D3C62C8E705120E,
EDFE3B976573F01C8D3AA486,
9D1C58BBAA0B7F70D6EB7724,
- E13512F9451169A200CA63BF,
- BF909DFBC9B899C6119F556B, ); name = Resources; sourceTree = "<group>"; };
+ E13512F9451169A200CA63BF, ); name = Resources; sourceTree = "<group>"; };
00DE399BF0EF1D2BB5C99DF6 = {isa = PBXGroup; children = (
71B73129FAEF3B7CB3FF6993,
9D6BD8DE6FC16E28FE2169F0,
960E82451D9B9C0C256DE750 = {isa = XCConfigurationList; buildConfigurations = (
28E3B1FE50FFC5B2A58897A0,
987E131B9EAD1C8CE9786F9C, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- 67946078D4B1207C2A6BDB4F = {isa = PBXAggregateTarget; buildConfigurationList = 960E82451D9B9C0C256DE750; dependencies = (
+ 67946078D4B1207C2A6BDB4F = {isa = PBXAggregateTarget; buildConfigurationList = 960E82451D9B9C0C256DE750; buildPhases = ( ); buildRules = ( ); dependencies = (
60FCED8B68702AB28A4297C4,
0F3A38F7A210718AC51B5B67,
6FBE3D1D1900F691ECD1E9CF,
2258034E5AABF301ACB109C1,
B5B4DDE9429C2F747AEAFEBC, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
AAA7EBE70E20807CF2102118 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 434F6E14A0DACDAA2BF2212B,
- 685F85F881C02A3AAA5E9B47, ); runOnlyForDeploymentPostprocessing = 0; };
+ 434F6E14A0DACDAA2BF2212B, ); runOnlyForDeploymentPostprocessing = 0; };
006D5D33A2A2D68C9354B32D = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
C396DBDD84D1162113B3ABD7, ); runOnlyForDeploymentPostprocessing = 0; };
911E05FA69C1B8015EA96560 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
1F8B7104586EEA017DC9E66D,
8C4CBD97ADA22451A0CBDB2A, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
F779790510354BCC375B6866 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 434F6E14A0DACDAA2BF2212B,
- 685F85F881C02A3AAA5E9B47, ); runOnlyForDeploymentPostprocessing = 0; };
+ 434F6E14A0DACDAA2BF2212B, ); runOnlyForDeploymentPostprocessing = 0; };
961B720A39DE7A36993450FB = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
60A23086F8F04399960054A9, ); runOnlyForDeploymentPostprocessing = 0; };
B97CFDFCFBB3263FBE4CE9DA = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
913C8DA77769EF7E429930F2,
93405247663082AE0B727930, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
A8BFD81EACAF4420A2D9C7E7 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 434F6E14A0DACDAA2BF2212B,
- 685F85F881C02A3AAA5E9B47, ); runOnlyForDeploymentPostprocessing = 0; };
+ 434F6E14A0DACDAA2BF2212B, ); runOnlyForDeploymentPostprocessing = 0; };
12E5B85CBAEF4ADCEF60C693 = {isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = (
- 9D6465B0B231D381F43E350E, ); runOnlyForDeploymentPostprocessing = 0; };
+ F6C5AAF2B7414AC1474EF3EA, ); runOnlyForDeploymentPostprocessing = 0; };
7CD5DF20930E5FD4B8978F68 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
27BAA78181CB9EA282A6AC64,
7EFB529B9EA74539375A96E0, ); runOnlyForDeploymentPostprocessing = 0; };
71BC79A3E5FEBDB257DE068E,
A1AD203AE69C428760D3AD4A, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
87D9874ECD12A1F70BE4B01C = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 434F6E14A0DACDAA2BF2212B,
- 685F85F881C02A3AAA5E9B47, ); runOnlyForDeploymentPostprocessing = 0; };
+ 434F6E14A0DACDAA2BF2212B, ); runOnlyForDeploymentPostprocessing = 0; };
5ED60E79CB2B11C45637CA8A = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
920289CA43FF41424E0F0AE9, ); runOnlyForDeploymentPostprocessing = 0; };
B4837EEA7868B856A37F43BD = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\sampler\juce_Sampler.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBaseHelper.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBuffer.h"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r"/>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/>\r
</ItemGroup>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h">\r
<Filter>Juce Modules\juce_audio_formats</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h">\r
+ <Filter>Juce Modules\juce_audio_plugin_client\AAX</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses</Filter>\r
</ClInclude>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
</None>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r">\r
- <Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
+ </None>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
</None>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt">\r
<Filter>Juce Modules\juce_graphics\image_formats\jpglib</Filter>\r
pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0"\r
pluginSilenceInIsSilenceOut="1" pluginEditorRequiresKeys="0"\r
pluginAUExportPrefix="GainPlugInAU" pluginRTASCategory="" aaxIdentifier="com.ROLI.GainPlugIn"\r
- pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.1"\r
+ pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.3"\r
pluginIsMidiEffectPlugin="0" buildAUv3="0">\r
<MAINGROUP id="sXaVAU" name="GainPlugIn">\r
<GROUP id="{57500C1B-EA6F-4A79-EE51-1D02CA8A8350}" name="Source">\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail ""\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'ROLI'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'Gain'\r
+ #define JucePlugin_PluginCode 0x4761696e // 'Gain'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 0\r
EF983C366CDBC57B6FEE75D3 = {isa = PBXBuildFile; fileRef = 15B8BCB48229C73748FB9E9C; };
FC43C69A538FBE74E63D8D2D = {isa = PBXBuildFile; fileRef = 0E52162DFFFCCD06B941AE62; };
7293C6A173EDB952C43C4E1E = {isa = PBXBuildFile; fileRef = 8F6829961A0F50B8265BD9CB; };
- 0D85DE716EC383C1E7CA404B = {isa = PBXBuildFile; fileRef = 47C8050DE3ABBEC6BEC74B2F; };
DBEB6D440551FCEA8C7EC910 = {isa = PBXBuildFile; fileRef = 614BDB6E04A50D791DF8A237; };
- 28C99E7CD1CE273646B706BF = {isa = PBXBuildFile; fileRef = F06745DFADC49CA1C3D5C964; };
+ 7E2BF0D7672428735E4B25C6 = {isa = PBXBuildFile; fileRef = 662205D63DB6B428A86C4E88; };
F3EA62332EC4B7A82F672E51 = {isa = PBXBuildFile; fileRef = 0D3AB1D2BB096CE5F3EAAE0F; };
CBF6D1C360065E76B0C371BD = {isa = PBXBuildFile; fileRef = CBDE271C4C5387CE39BD348F; };
6849CB54E7F162EDDFB344C9 = {isa = PBXBuildFile; fileRef = 6FCB8DD99D8DB1C154E30620; };
65D9B4315FAA195761CE7527 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameterWithID.h"; path = "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h"; sourceTree = "SOURCE_ROOT"; };
65F124A6502B670A634647EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
660CCC2FD998549705CD7B61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; };
+ 662205D63DB6B428A86C4E88 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
665763F2042DE8357AF3B1A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; };
665D6CE9BEC24300CD897F0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; };
66C34363559FEABE6A3FFF4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; };
701887A3C3EE66EEF8EF0961 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterFloat.h"; path = "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h"; sourceTree = "SOURCE_ROOT"; };
701C0E9CF1CA9D837C4EB044 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAUParameter.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAUParameter.h"; sourceTree = "SOURCE_ROOT"; };
7053FC8D746749F7DA46BC08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitreader.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c"; sourceTree = "SOURCE_ROOT"; };
+ 7059556F3B242B8E276833AC = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
706EA223A5859B5B1D9AE107 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; };
70BC3C87909EA4BAA5A23BFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
70C5C7441E1ABDD141697357 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserVoice.cpp"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp"; sourceTree = "SOURCE_ROOT"; };
8F5F65FD0D7B5E2A7029D68C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_22.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h"; sourceTree = "SOURCE_ROOT"; };
8F6829961A0F50B8265BD9CB = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; };
8F808F4330D4F791E62FC452 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 8F929BB1E10DD57C1056FF50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
8F9997207C596AF8202322E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; };
8FA0603940FEA0AFA46A769E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
8FBC36FD7DC1A74D573936AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; };
CA8CF02AC2665E599ECF7A7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReader.cpp"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; };
CAAE1D22DACE9CACB93B2129 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; };
CAF48DE29336FD7E6BA83365 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; };
- CB841032A149EE040BB59594 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
CBDE271C4C5387CE39BD348F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../JuceLibraryCode/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; };
CC1F87E59205712A0B2B08D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginHostType.h"; path = "../../../../../modules/juce_audio_plugin_client/utility/juce_PluginHostType.h"; sourceTree = "SOURCE_ROOT"; };
CC8E350DE3898296FD1CA6AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_gui_extra.cpp"; path = "../../../../../modules/juce_gui_extra/juce_gui_extra.cpp"; sourceTree = "SOURCE_ROOT"; };
CCF97D006BD017722C74B6A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MusicDeviceBase.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/MusicDeviceBase.cpp"; sourceTree = "SOURCE_ROOT"; };
CD02F270DE7AE1635A3E423E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
CD111D36AD8E9D73CE9739F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; };
- CD26D70DEFE69EB620F09443 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
- CD2CEC703F63930859D26DBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTPluginFormat.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
CD4A4B5DF38D0F6C1B5CA961 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
CE1C954808FDA669FEEFDC2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
- CE7AB9CEBC2AD27B236A69F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StandaloneFilterApp.cpp"; path = "../../../../../modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp"; sourceTree = "SOURCE_ROOT"; };
- CEEC9947F99D7F39C77DE79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CE756CA0F5505BA8084D5CA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
CF2A59FABE1AEC5251A7C9A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAAudioChannelLayout.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAudioChannelLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
D5445BE1A8D52195956FD045 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
D6889EB5ED8960BD2093A686 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ios_Audio.cpp"; path = "../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp"; sourceTree = "SOURCE_ROOT"; };
C785485A7DC04A2134F4F2B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEValue.cpp"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp"; sourceTree = "SOURCE_ROOT"; };
C7FF15427F8871470BFA4820 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
CB1789262FD3A919F45A7FD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KnownPluginList.h"; path = "../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h"; sourceTree = "SOURCE_ROOT"; };
+ CB841032A149EE040BB59594 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
+ CD26D70DEFE69EB620F09443 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
+ CD2CEC703F63930859D26DBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTPluginFormat.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
CD4CB495D75A2ABAA66A2951 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MixerAudioSource.h"; path = "../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
CDB15D2B8437758B0F7434B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; };
- CE756CA0F5505BA8084D5CA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
+ CE7AB9CEBC2AD27B236A69F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StandaloneFilterApp.cpp"; path = "../../../../../modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp"; sourceTree = "SOURCE_ROOT"; };
CEA5C634122F13B61BC06B2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CEEC9947F99D7F39C77DE79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; };
D01619CC43F88EC81883B673 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; };
D06DCC799C2F8567B19C2B0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; };
D08EBD01477B270E49ADD283 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitwise.c; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c"; sourceTree = "SOURCE_ROOT"; };
EF8849B28A436C3A48F95829 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLHelpers.h"; path = "../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h"; sourceTree = "SOURCE_ROOT"; };
EFC0C53B3B0C166406FA20DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngwio.c"; sourceTree = "SOURCE_ROOT"; };
EFECC8D227334F0274FE2BF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../../../modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; };
- F06745DFADC49CA1C3D5C964 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
F09ADDD0ED10155EB599DD3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = synthesis.c; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c"; sourceTree = "SOURCE_ROOT"; };
F0E7FB678622A999A3AF4FED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../../../../modules/juce_video/juce_video.mm"; sourceTree = "SOURCE_ROOT"; };
F13ED53195C1AFEC88B36244 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; };
0D4AA39D67CF9EB2B8FC06C9,
4B4395FD0B981840C14E2344, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
EC8818482FE69DEA2472407C = {isa = PBXGroup; children = (
+ 8F929BB1E10DD57C1056FF50,
069622CB01111075080B6F60, ); name = AAX; sourceTree = "<group>"; };
93B4691809E49A377D666871 = {isa = PBXGroup; children = (
AA6B7C4CCA49273A0A082DD0,
75300D231C75A269DD7D523F, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
7B934098FF9E066D257F3FC8 = {isa = PBXGroup; children = (
93B4691809E49A377D666871,
- 868CB112CC3DC2F9ABBB8480,
5A56163B25252D8E74389F96,
836EAC1C5D126C6C8907E8C7,
- 675627DA901E329524A4B7CD,
- F06745DFADC49CA1C3D5C964, ); name = AU; sourceTree = "<group>"; };
- F28D61A1E7F58403483E15BA = {isa = PBXGroup; children = (
+ 675627DA901E329524A4B7CD, ); name = AU; sourceTree = "<group>"; };
+ B034C01D71A8349088379345 = {isa = PBXGroup; children = (
1DDD52E2562F45C7BF44E3BA,
86FD2BEB554C25724A2AF813,
E8F14A4246A337084B54E9C1,
6E9CF164968692ECBF14BFA4,
A99BE51ABD7D9EC4B325A59C,
3DC291F8A448B57C4E7B85C9, ); name = RTAS; sourceTree = "<group>"; };
- 5BFF3A02016001970CDD81AC = {isa = PBXGroup; children = (
+ F4395C66021B50FE5AAB303C = {isa = PBXGroup; children = (
CE7AB9CEBC2AD27B236A69F8,
8379A87D62F44DFFC9366AD6, ); name = Standalone; sourceTree = "<group>"; };
- 506B96F755E66EF451C5D0F0 = {isa = PBXGroup; children = (
+ B973D84EF8EAD532ECB42F83 = {isa = PBXGroup; children = (
9407A9BBA5CC55FAB981363F,
1B468DBA17F78A4C46EFDB34,
8BC913A5669953BFE5A456F6,
CC1F87E59205712A0B2B08D5,
EE10601535426EBE973755EE,
45A7DB93A834F903CFB76794, ); name = utility; sourceTree = "<group>"; };
- 038E461CCD00BE2C0FFB4060 = {isa = PBXGroup; children = (
+ 794BD365073742451788E5DF = {isa = PBXGroup; children = (
21F7313455725884DEC213E7,
F7D1FD08E57CD55F824DB44D, ); name = VST; sourceTree = "<group>"; };
- CC2DA37A9DF73AE3068DDFB6 = {isa = PBXGroup; children = (
+ 27252EE648860860662C12D6 = {isa = PBXGroup; children = (
A9BFA5468698DC8F32062A9B, ); name = VST3; sourceTree = "<group>"; };
B7199B2DD8BEEA7DBC08C672 = {isa = PBXGroup; children = (
EC8818482FE69DEA2472407C,
7B934098FF9E066D257F3FC8,
- F28D61A1E7F58403483E15BA,
- 5BFF3A02016001970CDD81AC,
- 506B96F755E66EF451C5D0F0,
- 038E461CCD00BE2C0FFB4060,
- CC2DA37A9DF73AE3068DDFB6,
+ B034C01D71A8349088379345,
+ F4395C66021B50FE5AAB303C,
+ B973D84EF8EAD532ECB42F83,
+ 794BD365073742451788E5DF,
+ 27252EE648860860662C12D6,
04DAC3B6E82E983D25C6700E,
C6765BF98421489E663C9713,
AC1D5EC23242A02FFBB90928,
+ 662205D63DB6B428A86C4E88,
D1D5978F5EE20BB506361B3A,
1CEDDCD15AC89113C91DB85D,
63219087202573D0D10EF3DE,
641C08407D49F28BD9FDB843,
3B0847349353DE99EB99252B,
E9105E2E5E237EC32F79DFDF,
- 8F6829961A0F50B8265BD9CB,
- 47C8050DE3ABBEC6BEC74B2F, ); name = Resources; sourceTree = "<group>"; };
+ 8F6829961A0F50B8265BD9CB, ); name = Resources; sourceTree = "<group>"; };
649BBC267932DD53D319C8C1 = {isa = PBXGroup; children = (
918ECC9726F9792AEA2BF389,
759F7DE2DC579FE827D3048E,
F00437060A1034E54BE737BF = {isa = XCConfigurationList; buildConfigurations = (
326E2BA4D324D09F4A7F0A63,
B4227B6386A801962DC6DE9F, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- F142F5144E24B9733BC560AA = {isa = PBXAggregateTarget; buildConfigurationList = F00437060A1034E54BE737BF; dependencies = (
+ F142F5144E24B9733BC560AA = {isa = PBXAggregateTarget; buildConfigurationList = F00437060A1034E54BE737BF; buildPhases = ( ); buildRules = ( ); dependencies = (
75C3E9C0CE34EEE2F5A36000,
4B92B77B69B5E3247011B212,
D2DBB1440B1CF214018AA738,
5F2A5A5FDFB771E794E04854,
A57CA38D505E2243A3395BA7, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
04536241DA00BCF3D76062A5 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 7293C6A173EDB952C43C4E1E,
- 0D85DE716EC383C1E7CA404B, ); runOnlyForDeploymentPostprocessing = 0; };
+ 7293C6A173EDB952C43C4E1E, ); runOnlyForDeploymentPostprocessing = 0; };
8059231D72D6BF32B790D039 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
E131F66DF397C2C865D2BDB9, ); runOnlyForDeploymentPostprocessing = 0; };
33FB604DCAD6DD6453DD6488 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
242FD13403C5B6F386EFC545,
6908F21CF215042E9B0ABFFA, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
7088241D4191060ACF5CFCA9 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 7293C6A173EDB952C43C4E1E,
- 0D85DE716EC383C1E7CA404B, ); runOnlyForDeploymentPostprocessing = 0; };
+ 7293C6A173EDB952C43C4E1E, ); runOnlyForDeploymentPostprocessing = 0; };
DD4F2A6BEA93776ADBB4E10B = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
8C76E37FF5C940A385BEB140, ); runOnlyForDeploymentPostprocessing = 0; };
4C772F7842B90802A57373D0 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
FC26955F59CF4154DB451744,
DF2B398AB709C3CAEAC8FE2E, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
BFA824A2C63456DA5C6422E9 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 7293C6A173EDB952C43C4E1E,
- 0D85DE716EC383C1E7CA404B, ); runOnlyForDeploymentPostprocessing = 0; };
+ 7293C6A173EDB952C43C4E1E, ); runOnlyForDeploymentPostprocessing = 0; };
266612BAF31747EB6270EF76 = {isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = (
- 28C99E7CD1CE273646B706BF, ); runOnlyForDeploymentPostprocessing = 0; };
+ 7E2BF0D7672428735E4B25C6, ); runOnlyForDeploymentPostprocessing = 0; };
1F0C1963E7BE22BFAB4A0ADB = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
A52519AD234D3F6BC18A647D,
FB2400E593546DDBAA460738, ); runOnlyForDeploymentPostprocessing = 0; };
43006A3E8ABF9104DF671B2D,
C73CB90BA269F3D54B8DF37B, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
9D7CAC1B0EC21F17055AD199 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 7293C6A173EDB952C43C4E1E,
- 0D85DE716EC383C1E7CA404B, ); runOnlyForDeploymentPostprocessing = 0; };
+ 7293C6A173EDB952C43C4E1E, ); runOnlyForDeploymentPostprocessing = 0; };
42953782839B367DFDE6876C = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
F85D68AA01C1180EE14E32B2, ); runOnlyForDeploymentPostprocessing = 0; };
13698285AE0013DEB1144725 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\sampler\juce_Sampler.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBaseHelper.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBuffer.h"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r"/>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/>\r
</ItemGroup>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h">\r
<Filter>Juce Modules\juce_audio_formats</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h">\r
+ <Filter>Juce Modules\juce_audio_plugin_client\AAX</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses</Filter>\r
</ClInclude>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
</None>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r">\r
- <Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
+ </None>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
</None>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt">\r
<Filter>Juce Modules\juce_graphics\image_formats\jpglib</Filter>\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail "info@juce.com"\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'ROLI'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'MoSy'\r
+ #define JucePlugin_PluginCode 0x4d6f5379 // 'MoSy'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 1\r
pluginSilenceInIsSilenceOut="0" pluginEditorRequiresKeys="0"\r
pluginAUExportPrefix="MultiOutSynthAU" pluginRTASCategory=""\r
aaxIdentifier="com.ROLI.MultiOutSynth" pluginAAXCategory="AAX_ePlugInCategory_SWGenerators"\r
- jucerVersion="4.2.1" companyName="ROLI Ltd." companyWebsite="www.roli.com"\r
+ jucerVersion="4.2.3" companyName="ROLI Ltd." companyWebsite="www.roli.com"\r
companyEmail="info@juce.com" pluginIsMidiEffectPlugin="0" buildAUv3="0">\r
<MAINGROUP id="uGSDhi" name="MultiOutSynth">\r
<GROUP id="{78464AFF-72EB-5BDD-4FD3-6C8C6CF5DFA3}" name="Source">\r
37650014CFB133BE49E618C7 = {isa = PBXBuildFile; fileRef = 5ACE35425F10E6FE0CD30B44; };
15165888F33A50CEEAF270C7 = {isa = PBXBuildFile; fileRef = B6567C791BE962F993B78C02; };
12C002E482A05AEA16654DF9 = {isa = PBXBuildFile; fileRef = 7A6A889A32581FBE73645356; };
- A6EFA2CFF4D8C125C8AAEFB6 = {isa = PBXBuildFile; fileRef = 12C24C2237E0F23FDCCCE953; };
5AD5FE50F1508B1EC89C37AF = {isa = PBXBuildFile; fileRef = 45E82A90482A147FF8FA6507; };
- 0A67F5C2A80DEC5B7E1A75A2 = {isa = PBXBuildFile; fileRef = 78AF8E4090DF691FA058374D; };
+ 5242C773D354EA0B2527D4B8 = {isa = PBXBuildFile; fileRef = F9AD652235B91EB0693AB186; };
ED749B2640D6B4FB7E32CC22 = {isa = PBXBuildFile; fileRef = 60ECEC321E2335CA55B41A55; };
F85FA72ECA3C1A04D624A4BD = {isa = PBXBuildFile; fileRef = 2DA5A7253793B9BFBB4E2A18; };
C452CBE4FAC93EDD00579A23 = {isa = PBXBuildFile; fileRef = 8E20AE27507F5C47985A6865; };
783876754D144BA9D9D80508 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c"; sourceTree = "SOURCE_ROOT"; };
789D3C1F5D021FF597F455E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
789EBDE5AA3DDBF44BCCE63F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; };
- 78AF8E4090DF691FA058374D = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
78F0E6FD7AF95F7440C0291C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUInputFormatConverter.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUInputFormatConverter.h"; sourceTree = "SOURCE_ROOT"; };
79123AD075DF679CBD0CD0F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = md5.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c"; sourceTree = "SOURCE_ROOT"; };
79A8D43470A0E32CB2CBED38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUBase.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBase.h"; sourceTree = "SOURCE_ROOT"; };
854A261D384CB1F682305BE9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; };
85B9E97C3FC7D20270A420B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
865AA1F62812A0984F048080 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "res_books_51.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h"; sourceTree = "SOURCE_ROOT"; };
+ 86691FA1B2CDD3570ABEA9C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
867F6834281C8B941D0BCE1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
873AB549F9D4BB2CB942B021 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
8751B08C7CCFAA3B9B070452 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CameraDevice.h"; path = "../../../../../modules/juce_video/capture/juce_CameraDevice.h"; sourceTree = "SOURCE_ROOT"; };
9CBD130337083207F2B56452 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../../../modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; };
9CC8CDF595616EEF33071A40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
9CCA07FAE3B4A4D2257497BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ 9CDA4A2E17BF5DB191F883D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; };
9D14B147B6A2CA89387ADD72 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; };
9D67E9F6247EDE2E207EFE8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CameraDevice.cpp"; path = "../../../../../modules/juce_video/capture/juce_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; };
9D91048D35939171C41AFA99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
9DAB02E651736622947A4879 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; };
+ 9DEA01475DB585366B99507A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; };
+ 9DF06DEA20D7CC5B7784ABB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = "../../../../../modules/juce_core/zip/zlib/zlib.h"; sourceTree = "SOURCE_ROOT"; };
9E0C3CD23088388B14CFE298 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
9E1B841AC727490DBAD510C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngwio.c"; sourceTree = "SOURCE_ROOT"; };
- 9EA4A85998E5730634754DA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
9EB05C378008BD43BC552E33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; };
+ 9EB8F8C25EC50AA2C1289551 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; };
9F0F2E14CFA9F3D6A25E2B38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ 9F5C521FCFAB9BD273073B55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
9FC8B1D81C0535EC5B6D0C75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_basics.cpp"; path = "../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"; sourceTree = "SOURCE_ROOT"; };
AFB3197B2BE07ED91A0C5FEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CatmullRomInterpolator.cpp"; path = "../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.cpp"; sourceTree = "SOURCE_ROOT"; };
B135B7ABB572DE03324CFD7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = memory.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h"; sourceTree = "SOURCE_ROOT"; };
970832BB3D7B3F1D404D36CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_X.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h"; sourceTree = "SOURCE_ROOT"; };
9998DD31ABBEB8513422A48B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = fixed.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c"; sourceTree = "SOURCE_ROOT"; };
9C62742BCA5D3C9524DE3029 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NoiseGate.aaxplugin; sourceTree = "BUILT_PRODUCTS_DIR"; };
- 9CDA4A2E17BF5DB191F883D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; };
9D0EADD58202012822195D8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_VST2.cpp"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp"; sourceTree = "SOURCE_ROOT"; };
9D366DD91CD44CED6934A26A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitreader.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c"; sourceTree = "SOURCE_ROOT"; };
9D67999CB8A7EA49B548EF9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mdct.h; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h"; sourceTree = "SOURCE_ROOT"; };
- 9DEA01475DB585366B99507A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; };
- 9DF06DEA20D7CC5B7784ABB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = "../../../../../modules/juce_core/zip/zlib/zlib.h"; sourceTree = "SOURCE_ROOT"; };
9E2841D274BDF096C1567AA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AAX.mm"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AAX.mm"; sourceTree = "SOURCE_ROOT"; };
9E3C9508D07D11C753F6F4EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BlowFish.h"; path = "../../../../../modules/juce_cryptography/encryption/juce_BlowFish.h"; sourceTree = "SOURCE_ROOT"; };
9E65E218A429E2B64829B4E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
9E685F6C42796C5B486A08BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUPlugInDispatch.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUPlugInDispatch.h"; sourceTree = "SOURCE_ROOT"; };
- 9EB8F8C25EC50AA2C1289551 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; };
+ 9EA4A85998E5730634754DA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
9F385C17D1F088F19F3A12F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiOutput.cpp"; path = "../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp"; sourceTree = "SOURCE_ROOT"; };
9F39266110C56F8A0C97FA65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jversion.h; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jversion.h"; sourceTree = "SOURCE_ROOT"; };
9F53388B3A4667994AD93E8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitwriter.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h"; sourceTree = "SOURCE_ROOT"; };
- 9F5C521FCFAB9BD273073B55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
9F5E1264C9AC4AA54E0AB158 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; };
9F9D896F664C8CA286C041FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
9FB3DAAD402A11A090B0521C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IncludeSystemHeaders.h"; path = "../../../../../modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h"; sourceTree = "SOURCE_ROOT"; };
9FD8096E8A6E070EB0D3E6F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
A0189ED3EEAACC00AD4649EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = codebook.h; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h"; sourceTree = "SOURCE_ROOT"; };
A067B55828A6944BF5F96152 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ A06D19395CD8A48E64CE9E16 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
A092D24F3C62D06CF5928A64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = scales.h; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h"; sourceTree = "SOURCE_ROOT"; };
A0B50A729CB25919EE133A4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSourcePlayer.cpp"; path = "../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp"; sourceTree = "SOURCE_ROOT"; };
A0CB59F4AD5D67685CD8673D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
F977E6E34D35E0FC5235BA25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; };
F983B97EB7A763CA91C2B615 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUInputElement.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUInputElement.cpp"; sourceTree = "SOURCE_ROOT"; };
F99AADA9ED5F73C39AE618ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = os.h; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h"; sourceTree = "SOURCE_ROOT"; };
+ F9AD652235B91EB0693AB186 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
F9AEBC8B0F4EAE709D0D5E80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; };
FA2B3781996DC52D0CFE3BA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
FA5C3295E813D0648A2E7543 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = "../../../../../modules/juce_core/zip/zlib/adler32.c"; sourceTree = "SOURCE_ROOT"; };
5BB1BBCB34B72DCE9B16B695,
259860F50BF88025C9451A37, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
C87C608E9A5C5E6E7E794076 = {isa = PBXGroup; children = (
+ 86691FA1B2CDD3570ABEA9C7,
218937DFF1E643C7E9392D3D, ); name = AAX; sourceTree = "<group>"; };
0F13F4CD7D902B9D2DA69DC9 = {isa = PBXGroup; children = (
E9A6A98219D0E4514484593D,
F899FD17F2789DA5C2BC257A, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
3D494EE356FF362ACDC1098E = {isa = PBXGroup; children = (
0F13F4CD7D902B9D2DA69DC9,
- 69D40DB250FC6775EDBCCC5B,
3105E167622313C70055B903,
CB425D61E072DED92F6CAC85,
- C6C096547CAD0C12FA4746CF,
- 78AF8E4090DF691FA058374D, ); name = AU; sourceTree = "<group>"; };
- 7188C9AEA767393C223A5803 = {isa = PBXGroup; children = (
+ C6C096547CAD0C12FA4746CF, ); name = AU; sourceTree = "<group>"; };
+ 5A8AB44A44CEA32DC33D5765 = {isa = PBXGroup; children = (
F4E8427587734D0D2B94F4D8,
E09DC8AF27C6E40AB436E821,
6033F6DD0B905B8819C115E2,
F8AB7D10F5C9ABF34829AE8F,
F785317A2BB8414F5D8E2813,
D0A3F2265D323BB3F90F3DD5, ); name = RTAS; sourceTree = "<group>"; };
- C681F67747E80C4D05C41413 = {isa = PBXGroup; children = (
+ A0C36FF148057D22D568BE59 = {isa = PBXGroup; children = (
F4D616BD3FAFE9587EC29FC6,
5202ABFCC92AA0AFBC9400BE, ); name = Standalone; sourceTree = "<group>"; };
- 5800B1C18680BF3EA8806892 = {isa = PBXGroup; children = (
+ 3AE05782CAEEEB1F04B31F1A = {isa = PBXGroup; children = (
210E0DDAE66818EF2B278274,
94F3D0138EBB7EB31E15940C,
F4C02954B36F8FCE5D4E647C,
A29D254460762F8F6990D54C,
B9A21AE64CC4B86FC1F67061,
F35CA755BCEF635E1D3A905C, ); name = utility; sourceTree = "<group>"; };
- 4083DD4A6818D524406ECDF6 = {isa = PBXGroup; children = (
+ CBE8572BAED059334FB2FDF2 = {isa = PBXGroup; children = (
906428E1A9963444AF1B0D60,
69A29D8420DB0B53507E223D, ); name = VST; sourceTree = "<group>"; };
- 430F3673E2829D691E5A9ECF = {isa = PBXGroup; children = (
+ 2CFD285766D4639C6B7C7457 = {isa = PBXGroup; children = (
CDE1B83C996A1861A93C93A7, ); name = VST3; sourceTree = "<group>"; };
3935AB4CC6A0A44A4A93B7E8 = {isa = PBXGroup; children = (
C87C608E9A5C5E6E7E794076,
3D494EE356FF362ACDC1098E,
- 7188C9AEA767393C223A5803,
- C681F67747E80C4D05C41413,
- 5800B1C18680BF3EA8806892,
- 4083DD4A6818D524406ECDF6,
- 430F3673E2829D691E5A9ECF,
+ 5A8AB44A44CEA32DC33D5765,
+ A0C36FF148057D22D568BE59,
+ 3AE05782CAEEEB1F04B31F1A,
+ CBE8572BAED059334FB2FDF2,
+ 2CFD285766D4639C6B7C7457,
163F8CC7509513B483860103,
AF02EDDBD4B4B8081DC18DA4,
9E2841D274BDF096C1567AA0,
+ F9AD652235B91EB0693AB186,
68810A5E034BC83F99EFE3B9,
B7CEA623FCCB463BF8058A7F,
9771DD4915BE1789A7993E69,
BCC02F39B2F24479D8F6DB50,
D30F58A3C82A7C61E6768EBE,
44AA2CDFC06F2E27F3BD6313,
- 7A6A889A32581FBE73645356,
- 12C24C2237E0F23FDCCCE953, ); name = Resources; sourceTree = "<group>"; };
+ 7A6A889A32581FBE73645356, ); name = Resources; sourceTree = "<group>"; };
2D45B9382F864E0FC39A7D86 = {isa = PBXGroup; children = (
EE004DC5369648F9F4F967B5,
943B88ECAC8C127556319A56,
4B6CE3423D63B067B4CCB9CA = {isa = XCConfigurationList; buildConfigurations = (
D43C967D02EDDCC29FB7059C,
EEA93C1E6EEC110939D1685F, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- BE96E7C5FAB338297CC69BA9 = {isa = PBXAggregateTarget; buildConfigurationList = 4B6CE3423D63B067B4CCB9CA; dependencies = (
+ BE96E7C5FAB338297CC69BA9 = {isa = PBXAggregateTarget; buildConfigurationList = 4B6CE3423D63B067B4CCB9CA; buildPhases = ( ); buildRules = ( ); dependencies = (
211DD9687930134AF6E64FF0,
6FE20A9165A15D7BE98F2B99,
0D517069DB7201D47B168BEE,
BA984224A933EC837F514164,
AC5F1E6328DC16FF2891CB62, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
216E0D6AC94324AA60E8341F = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 12C002E482A05AEA16654DF9,
- A6EFA2CFF4D8C125C8AAEFB6, ); runOnlyForDeploymentPostprocessing = 0; };
+ 12C002E482A05AEA16654DF9, ); runOnlyForDeploymentPostprocessing = 0; };
EEE027F86C42C2897FFAFAB4 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
0D1C8A857D386C6BC5C99FA3, ); runOnlyForDeploymentPostprocessing = 0; };
88ED31A2FC837CDDC443C602 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
23F878D56387ED4B67B9E2DF,
32B1624E3B1B34C461D60562, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
47F5AD1898E28C0A6D16C018 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 12C002E482A05AEA16654DF9,
- A6EFA2CFF4D8C125C8AAEFB6, ); runOnlyForDeploymentPostprocessing = 0; };
+ 12C002E482A05AEA16654DF9, ); runOnlyForDeploymentPostprocessing = 0; };
FE7603D4FD2A5265B17C5CDB = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
6D0FB6DF3B238687E64CA059, ); runOnlyForDeploymentPostprocessing = 0; };
E3794423504E5A68368E60FB = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
4130388B36B3B506391E717A,
B3B550855CF90C491B1B3921, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
2547749F251ADA67558CFBC5 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 12C002E482A05AEA16654DF9,
- A6EFA2CFF4D8C125C8AAEFB6, ); runOnlyForDeploymentPostprocessing = 0; };
+ 12C002E482A05AEA16654DF9, ); runOnlyForDeploymentPostprocessing = 0; };
F38684DBAA310B29B5B2598B = {isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = (
- 0A67F5C2A80DEC5B7E1A75A2, ); runOnlyForDeploymentPostprocessing = 0; };
+ 5242C773D354EA0B2527D4B8, ); runOnlyForDeploymentPostprocessing = 0; };
2B362E865E39D8FBBEF5836E = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
65D4B3952523E1D9729D5696,
297C90DB48F08189C5E161F6, ); runOnlyForDeploymentPostprocessing = 0; };
6597D0E1B573ECB84853415C,
BCA3F1D08B6DEDD8120DDF25, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
547175C3907E0E0E4318B03E = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 12C002E482A05AEA16654DF9,
- A6EFA2CFF4D8C125C8AAEFB6, ); runOnlyForDeploymentPostprocessing = 0; };
+ 12C002E482A05AEA16654DF9, ); runOnlyForDeploymentPostprocessing = 0; };
60B6674FAE4C8F988F0F1086 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
FCE06A0BAC628295014D8729, ); runOnlyForDeploymentPostprocessing = 0; };
A47A37CF689DBA8E163F1A4D = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\sampler\juce_Sampler.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBaseHelper.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBuffer.h"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r"/>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/>\r
</ItemGroup>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h">\r
<Filter>Juce Modules\juce_audio_formats</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h">\r
+ <Filter>Juce Modules\juce_audio_plugin_client\AAX</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses</Filter>\r
</ClInclude>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
</None>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r">\r
- <Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
+ </None>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
</None>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt">\r
<Filter>Juce Modules\juce_graphics\image_formats\jpglib</Filter>\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail ""\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'ROLI'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'Nois'\r
+ #define JucePlugin_PluginCode 0x4e6f6973 // 'Nois'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 0\r
pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0"\r
pluginSilenceInIsSilenceOut="0" pluginEditorRequiresKeys="0"\r
pluginAUExportPrefix="NoiseGateAU" pluginRTASCategory="" aaxIdentifier="com.roli.NoiseGate"\r
- pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.1"\r
+ pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.3"\r
pluginIsMidiEffectPlugin="0" buildAUv3="0">\r
<MAINGROUP id="FVYuyg" name="NoiseGate">\r
<GROUP id="{6EB662B0-ED81-2504-8B90-DCBFA5675DFC}" name="Source">\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0 -Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -fPIC -O3 -Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
1730BAC6358B020E5359B15D = {isa = PBXBuildFile; fileRef = 130A1E6607521A6C51E7E702; };
FDCC043886C609481941F040 = {isa = PBXBuildFile; fileRef = 407B6CB925E1B5FAA7E3914E; };
2191E7D09CE99E98C2CCCF54 = {isa = PBXBuildFile; fileRef = 7B09ECEA92A79A22173B9A1A; };
- 841F2C2B98BCB5059C093CCA = {isa = PBXBuildFile; fileRef = A0BFEED17AF0E43A7401189C; };
84756A2E1F219D073187D649 = {isa = PBXBuildFile; fileRef = 4F1AF1D850DBBFB581EAE294; };
- A36135867496E3E1F6C08770 = {isa = PBXBuildFile; fileRef = 0ED2BEA90D9AB8F53ABAC23F; };
+ B68A16DE8AEEE404657DB343 = {isa = PBXBuildFile; fileRef = 02FB9A6955DBBBEAC8BB16D8; };
C45C4C878E526E955DB4BE2C = {isa = PBXBuildFile; fileRef = CC3734C049214EF91327C2B6; };
BC0836F398C7EA8BED36B53B = {isa = PBXBuildFile; fileRef = 9B38FFE6C8577E7F22DFEF2F; };
8FF45061553548B84D31A121 = {isa = PBXBuildFile; fileRef = 689794DAC80724A7C23A1759; };
02011069400D49AE29D3A8AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AU_1.mm"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm"; sourceTree = "SOURCE_ROOT"; };
024CB198D719E920742AAF38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; };
02CE6BB6202647637FF78A6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LAMEEncoderAudioFormat.h"; path = "../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
+ 02FB9A6955DBBBEAC8BB16D8 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
0362C38B47B2235F4443A98D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = zutil.c; path = "../../../../../modules/juce_core/zip/zlib/zutil.c"; sourceTree = "SOURCE_ROOT"; };
036F63DADE847F2C8CF7E777 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; };
03E9D79DB85F5A7AB13B3890 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; };
0EC44B4F782B363577DC6BB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
0EC5AD5447DD911B8294F413 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; };
0ECBC001B10ABD4E646F2141 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../../../modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; };
- 0ED2BEA90D9AB8F53ABAC23F = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
1000AB9EC17650FB0092DCD8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RTAS_DigiCode3.cpp"; path = "../../../../../modules/juce_audio_plugin_client/RTAS/juce_RTAS_DigiCode3.cpp"; sourceTree = "SOURCE_ROOT"; };
10307599177903E1B8824E06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; };
103B4CFDB78F4A23AB769052 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
831D6FCD81612A1649B0CF08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; };
832774543B7277913460C41E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAutoDisposer.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAutoDisposer.h"; sourceTree = "SOURCE_ROOT"; };
83E2EFC9133757FD09C67ABE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; };
+ 84361AF1AD46751899D33C5D = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
854BE217C612C256BED72308 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
857D93C46EF5F30B686666FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jctrans.c"; sourceTree = "SOURCE_ROOT"; };
863578C8C35502444456B6EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; };
8A604B4BD445F2F0F2ED6C96 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; };
8AB1217C7D9CEC5CA4CE87B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; };
8B2B33EB8FE2027523BD9ADD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; };
- 8B61BBC7490B7EB09164C24E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Headers.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h"; sourceTree = "SOURCE_ROOT"; };
+ 8D2F64C046BBAAA084369818 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; };
8D3B6133B6EFF1551DA6A0B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_8.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h"; sourceTree = "SOURCE_ROOT"; };
8DC3D1402CD78E1E728A885C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VST_Wrapper.cpp"; path = "../../../../../modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp"; sourceTree = "SOURCE_ROOT"; };
8E11074D4A9A023AE33D2777 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CheckSettingMacros.h"; path = "../../../../../modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h"; sourceTree = "SOURCE_ROOT"; };
8E5677A16F98C56CAA7F2842 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_16.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h"; sourceTree = "SOURCE_ROOT"; };
+ 8EE2300EB5893E6FE4447464 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
90593FC8C1E0DF38F5C4E13C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_32.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h"; sourceTree = "SOURCE_ROOT"; };
91B36A38A2515EACFDB74FF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stream_encoder.h"; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h"; sourceTree = "SOURCE_ROOT"; };
91DC52EFEE54AA6A25F414F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; };
89BE99C79A12FAA559AB0958 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioCDReader.cpp"; path = "../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; };
8A0648AE319C0CEA55D7AD88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; };
8ACBFC171B28F02B7C79EC9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 8B61BBC7490B7EB09164C24E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Headers.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h"; sourceTree = "SOURCE_ROOT"; };
8B8C8E45262B02EE3013C440 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
8C3432BC2BDC534720A9DBB9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c"; sourceTree = "SOURCE_ROOT"; };
8D136314D0A9E7C7A20F5252 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = infback.c; path = "../../../../../modules/juce_core/zip/zlib/infback.c"; sourceTree = "SOURCE_ROOT"; };
- 8D2F64C046BBAAA084369818 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; };
8D7431A21F329A0623106F9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StandaloneFilterApp.cpp"; path = "../../../../../modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp"; sourceTree = "SOURCE_ROOT"; };
8D8276FB197AE7CF5FBB3AB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
8DCC53AC83A1540BF58AF95D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
35B628AB8DFBC44E9BBF1EF9,
907ECB8961B34F538328C66D, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
B03491D4B8689C8544B25B87 = {isa = PBXGroup; children = (
+ 8EE2300EB5893E6FE4447464,
4B133B1F9874EBA8953DCDF9, ); name = AAX; sourceTree = "<group>"; };
DA59CA30765E869649A5C076 = {isa = PBXGroup; children = (
458D73FCC89935898F0D2C23,
9497F6127D98FC93F698D42F, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
682B81CC505D8F57DEA7E0AC = {isa = PBXGroup; children = (
DA59CA30765E869649A5C076,
- A120FD8A1529CD1910D93F52,
E8154A3245B28F12461708E8,
7BD189FD9F797A43D5818C6A,
- 3A925CFFB7F60920C14EC144,
- 0ED2BEA90D9AB8F53ABAC23F, ); name = AU; sourceTree = "<group>"; };
- F780A21E1C3DA3D40B592D7A = {isa = PBXGroup; children = (
+ 3A925CFFB7F60920C14EC144, ); name = AU; sourceTree = "<group>"; };
+ E314FF34EAECD51445016614 = {isa = PBXGroup; children = (
5583A45CA7C609741BB8B9EF,
55DFDE807E321ABD1E879E41,
AB04D06155A5E52B0658F3D6,
7D2CA0CEB4019C90AE75474C,
C52ED1AAE029660B7F7E195A,
283ADB95E9375730B1389880, ); name = RTAS; sourceTree = "<group>"; };
- D67F6C60D18A07F957783FCA = {isa = PBXGroup; children = (
+ 18C29C50CF51AC97F9938ADF = {isa = PBXGroup; children = (
8D7431A21F329A0623106F9F,
F468166F5B1642808084C964, ); name = Standalone; sourceTree = "<group>"; };
- FAD31EA8ACFB57F726B6B00A = {isa = PBXGroup; children = (
+ 0B1A4F8E5F393124D0B107B5 = {isa = PBXGroup; children = (
EDF3BB834AA5EA021B07F5FA,
8E11074D4A9A023AE33D2777,
377EE4F29DE0ECCB0B0F8EBD,
ADCF8757250D34CD709BF18E,
F6AE18B04CC3D2BB90189253,
D7D538F79741F629EC0B174F, ); name = utility; sourceTree = "<group>"; };
- CFB2A255E91D41F8C12E5150 = {isa = PBXGroup; children = (
+ 2B8EF8A8BCA0AB75EDE7FB7A = {isa = PBXGroup; children = (
8DC3D1402CD78E1E728A885C,
897466367AE90A6757BD78AA, ); name = VST; sourceTree = "<group>"; };
- B71E23C0ADB4B7F7D300A2B9 = {isa = PBXGroup; children = (
+ 6BA032A25FA6EF715361DBA9 = {isa = PBXGroup; children = (
C97229429AD64768E560F4AD, ); name = VST3; sourceTree = "<group>"; };
3C13BDA7064F6A67ED81C57C = {isa = PBXGroup; children = (
B03491D4B8689C8544B25B87,
682B81CC505D8F57DEA7E0AC,
- F780A21E1C3DA3D40B592D7A,
- D67F6C60D18A07F957783FCA,
- FAD31EA8ACFB57F726B6B00A,
- CFB2A255E91D41F8C12E5150,
- B71E23C0ADB4B7F7D300A2B9,
+ E314FF34EAECD51445016614,
+ 18C29C50CF51AC97F9938ADF,
+ 0B1A4F8E5F393124D0B107B5,
+ 2B8EF8A8BCA0AB75EDE7FB7A,
+ 6BA032A25FA6EF715361DBA9,
764CC7C9098B8A13EE1E2BDD,
5E4DECB460D73AB4F75A0807,
98DEEE52698DC2DD0C22A537,
+ 02FB9A6955DBBBEAC8BB16D8,
02011069400D49AE29D3A8AA,
C5AC6B7D92F08E36C6CC81D0,
DC26D1CA02600B967A955667,
3E67AEA9A0FD3291E8C1B486,
F02875DC328E400B3141069D,
19E1189C678E9189ECD11DEF,
- 7B09ECEA92A79A22173B9A1A,
- A0BFEED17AF0E43A7401189C, ); name = Resources; sourceTree = "<group>"; };
+ 7B09ECEA92A79A22173B9A1A, ); name = Resources; sourceTree = "<group>"; };
18B9690A5C364D20F5C100E3 = {isa = PBXGroup; children = (
52EEFA8ED8C29967F5A9E1EE,
D8FC94038AF7B050BBADC027,
EED368527EBF92E628608D8B = {isa = XCConfigurationList; buildConfigurations = (
C73902ED4D2E8620A64FB955,
10FD9778667189623A2CDD86, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- 662E24C61A67634787C1DDDA = {isa = PBXAggregateTarget; buildConfigurationList = EED368527EBF92E628608D8B; dependencies = (
+ 662E24C61A67634787C1DDDA = {isa = PBXAggregateTarget; buildConfigurationList = EED368527EBF92E628608D8B; buildPhases = ( ); buildRules = ( ); dependencies = (
5FC77F15FFD6E6F3449B16D6,
32FFC55D51387C8C331E25B9,
53E1E3FE56FEC27499FA8243,
EB917BF8D9134F341F138D54,
4C0FBAEF448A6C797FB6DD45, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
C6635CD032CBB46EE84BE2BD = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 2191E7D09CE99E98C2CCCF54,
- 841F2C2B98BCB5059C093CCA, ); runOnlyForDeploymentPostprocessing = 0; };
+ 2191E7D09CE99E98C2CCCF54, ); runOnlyForDeploymentPostprocessing = 0; };
7DBFF07EA24A761249FDB194 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
E03A96B10126A69293C044FD, ); runOnlyForDeploymentPostprocessing = 0; };
2E087F2A8528F2C788D09A5E = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
61074CD12CE591486A05A574,
7FCB6817E56D52F78EC1AE71, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
82A795FF64B3DC1673E6DFFD = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 2191E7D09CE99E98C2CCCF54,
- 841F2C2B98BCB5059C093CCA, ); runOnlyForDeploymentPostprocessing = 0; };
+ 2191E7D09CE99E98C2CCCF54, ); runOnlyForDeploymentPostprocessing = 0; };
C40118D5AA68EA22C25990A9 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
CEBB3C6F336A43045FFF411D, ); runOnlyForDeploymentPostprocessing = 0; };
38083A2E2A2930885CC53FC0 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
E32045A65CECB559C0FB4C68,
1D54A1AEFE13AA013860EF06, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
6A3AF05F6EAA6537996C2F42 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 2191E7D09CE99E98C2CCCF54,
- 841F2C2B98BCB5059C093CCA, ); runOnlyForDeploymentPostprocessing = 0; };
+ 2191E7D09CE99E98C2CCCF54, ); runOnlyForDeploymentPostprocessing = 0; };
EE0E282E33E11BDEEC93785F = {isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = (
- A36135867496E3E1F6C08770, ); runOnlyForDeploymentPostprocessing = 0; };
+ B68A16DE8AEEE404657DB343, ); runOnlyForDeploymentPostprocessing = 0; };
6AF7D8B2A0C3D350ECF9E451 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
64624CD6DC9AD04D81B9E401,
057B3431395E851B7328AE02, ); runOnlyForDeploymentPostprocessing = 0; };
6097E35463A00493A0E17C6D,
B376411945AB7D80ECC98A26, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
5276FC9AAD3BF2140C19513D = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 2191E7D09CE99E98C2CCCF54,
- 841F2C2B98BCB5059C093CCA, ); runOnlyForDeploymentPostprocessing = 0; };
+ 2191E7D09CE99E98C2CCCF54, ); runOnlyForDeploymentPostprocessing = 0; };
9CA62E78DD58EF6DCD1F513E = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
F07C6D3843A293AF087DC6AA, ); runOnlyForDeploymentPostprocessing = 0; };
E0725217929C36E3C067C5DB = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\sampler\juce_Sampler.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBaseHelper.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBuffer.h"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r"/>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r"/>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/>\r
</ItemGroup>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h">\r
<Filter>Juce Modules\juce_audio_formats</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h">\r
+ <Filter>Juce Modules\juce_audio_plugin_client\AAX</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses</Filter>\r
</ClInclude>\r
<None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
</None>\r
- <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r">\r
- <Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
+ </None>\r
+ <None Include="..\..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
</None>\r
<None Include="..\..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt">\r
<Filter>Juce Modules\juce_graphics\image_formats\jpglib</Filter>\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail ""\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'ROLI'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'Srrd'\r
+ #define JucePlugin_PluginCode 0x53727264 // 'Srrd'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 0\r
pluginIsMidiEffectPlugin="0" pluginSilenceInIsSilenceOut="0"\r
pluginEditorRequiresKeys="0" pluginAUExportPrefix="SurroundAU"\r
pluginRTASCategory="" aaxIdentifier="com.ROLI.Surround" pluginAAXCategory="AAX_ePlugInCategory_Dynamics"\r
- jucerVersion="4.2.1" buildAUv3="0">\r
+ jucerVersion="4.2.3" buildAUv3="0">\r
<MAINGROUP id="dEAH7t" name="Surround">\r
<GROUP id="{1CB41212-BD0E-AC71-15E8-C40AD59BD2EE}" name="Source">\r
<FILE id="sLk2ic" name="SurroundProcessor.cpp" compile="1" resource="0"\r
\r
<JUCERPROJECT id="cgcxPd" name="SimpleFFTExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.SimpleFFTExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1">\r
+ jucerVersion="4.2.3">\r
<MAINGROUP id="rZCHr8" name="SimpleFFTExample">\r
<GROUP id="{8DC23B3F-98AC-AB1C-B26A-E693AF2DF0D2}" name="Source">\r
<FILE id="B1L62H" name="SpectrogramComponent.h" compile="0" resource="0"\r
g.fillAll (Colours::black);\r
\r
g.setOpacity (1.0f);\r
- g.drawImageWithin (spectrogramImage, 0, 0, getWidth(), getHeight(), RectanglePlacement::stretchToFit);\r
+ g.drawImage (spectrogramImage, getLocalBounds().toFloat());\r
}\r
\r
void timerCallback() override\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -fPIC -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
<key>factoryFunction</key>\r
<string>JuceDemoProjectAUFactory</string>\r
<key>manufacturer</key>\r
- <string>Roli</string>\r
+ <string>ROLI</string>\r
<key>type</key>\r
<string>aumf</string>\r
<key>subtype</key>\r
221F46E90C0A8651AB76A0E5 = {isa = PBXBuildFile; fileRef = 58E978708BAA8613A40F61E3; };
B46C12D99498E9FA8F1D083A = {isa = PBXBuildFile; fileRef = A59A08DCC76EE0FC7EBE1203; };
B003460B11C0B7C1CC07E666 = {isa = PBXBuildFile; fileRef = 0926E36205F4D676343AB6E7; };
- 984317B46E5445CE1D8E4096 = {isa = PBXBuildFile; fileRef = F5E9ED24FCF950C2B09ED67C; };
E32999B782F688D3746FEB08 = {isa = PBXBuildFile; fileRef = 9EC0C4C02099C656EEF39DA9; };
8265E59547F2C5DDD10F58BF = {isa = PBXBuildFile; fileRef = 682D51082D9FE9859F364A10; };
- 71BB1850016434ACD2C733E3 = {isa = PBXBuildFile; fileRef = BD5793B7DA291D1C1B991DDC; };
+ 839CB91EF7AAB3086CD898FE = {isa = PBXBuildFile; fileRef = 550FAA1B7314518C5237CB46; };
A135B77ECC75825288B59AD1 = {isa = PBXBuildFile; fileRef = F68C44DED59A1830DEC06DDB; };
CBEE8BA08EA81BC9612EB237 = {isa = PBXBuildFile; fileRef = 0E062265A0862663225F3BE4; };
57CCDB4997DD3ADCE483C6D9 = {isa = PBXBuildFile; fileRef = F87AC3FCCA31FB0B419456B2; };
0BEC77B5C0B5DCE51EE24DA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectSound.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp"; sourceTree = "SOURCE_ROOT"; };
0C4BA1D16AD18E7FD8D242EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; };
0C68BAE8F95098A8AD14F2A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 0C8BB62A92D20349100A4EDA = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
0CD474E9C69F05868EF8D9EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; };
0CF861C9A12A38A47B7BC43C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LagrangeInterpolator.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h"; sourceTree = "SOURCE_ROOT"; };
0D06541766ED7D5D99E403C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; };
5484ACC1742F9FA740314458 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c"; sourceTree = "SOURCE_ROOT"; };
54A2AD39C0C739C9880E35B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_11.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h"; sourceTree = "SOURCE_ROOT"; };
54DD8BD688BB54E3F94A19A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 550FAA1B7314518C5237CB46 = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_AU.r"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r"; sourceTree = "SOURCE_ROOT"; };
551EB50AA3CCA08ABE8CB458 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c"; sourceTree = "SOURCE_ROOT"; };
5532406796823FC4FB6ADC39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitmath.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h"; sourceTree = "SOURCE_ROOT"; };
5535A6B1099BB113B17C42DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDReader.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm"; sourceTree = "SOURCE_ROOT"; };
BCE8039887ABB9343A257AFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"; sourceTree = "SOURCE_ROOT"; };
BD1EC91E61ECEAB657C78D5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
BD443A9D110E97DAB8EBB131 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAThreadSafeList.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAThreadSafeList.h"; sourceTree = "SOURCE_ROOT"; };
- BD5793B7DA291D1C1B991DDC = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_RezResources_AU.r"; path = "../../../../modules/juce_audio_plugin_client/AU/juce_RezResources_AU.r"; sourceTree = "SOURCE_ROOT"; };
BD8E1F131237E716EC029375 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; };
BDAAC3539C137CDDEF894B3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c"; sourceTree = "SOURCE_ROOT"; };
BDB897B2503C29D7ABDDB656 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnailCache.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp"; sourceTree = "SOURCE_ROOT"; };
C7CC2605B8131869099F0D1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; };
C8302DD07934EBD796C2BFBB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
C83B8AC79590CB5FBF6CEDB9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
+ C83FE0526DC2E3078BCAFC5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AAX_Modifier_Injector.h"; path = "../../../../modules/juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h"; sourceTree = "SOURCE_ROOT"; };
C854266C28A55C3F34489746 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
C859B01B55EAB67BC10ED803 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; };
C8741583F363ECB8C2010509 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; };
0687D10EFBEEEC129BC807D3,
2AA92DC1171DAF0BA4BB0E63, ); name = "juce_audio_formats"; sourceTree = "<group>"; };
B663729F88A22F9325C3C9D0 = {isa = PBXGroup; children = (
+ C83FE0526DC2E3078BCAFC5D,
1BAAB47A9C5B1D76D28FA282, ); name = AAX; sourceTree = "<group>"; };
35F768B6427149AF0129BB8C = {isa = PBXGroup; children = (
3AA0960DF09414DBA0A2255B,
49386674C08BAD7864966166, ); name = CoreAudioUtilityClasses; sourceTree = "<group>"; };
E96D0837CDD1CE8B768E4077 = {isa = PBXGroup; children = (
35F768B6427149AF0129BB8C,
- 20BA6A1962016CD285EB30F2,
3F16A54F45ED278001F4CA09,
EE149F9075819C0132879D4C,
- 833921AD05E4BAF484FC7749,
- BD5793B7DA291D1C1B991DDC, ); name = AU; sourceTree = "<group>"; };
- B002DD058A40E158192BAEE5 = {isa = PBXGroup; children = (
+ 833921AD05E4BAF484FC7749, ); name = AU; sourceTree = "<group>"; };
+ 10721EE9E840AA7BC5F61764 = {isa = PBXGroup; children = (
CD61A73C6A090CD85EC57354,
9C9DEB7FB75C42C4F47AF999,
F7454AD16EE05969CCF5FD7C,
3755479207D218969425F91F,
17EC828C9226E13D4EF03E85,
1D4AFBEC703C6F373B292D9A, ); name = RTAS; sourceTree = "<group>"; };
- 69EEEA6D294205148B1E268A = {isa = PBXGroup; children = (
+ 5B3F9588F32C646D12DE0ACE = {isa = PBXGroup; children = (
12D74EEE2F7F5D8E17C746EA,
A13CE6DC3E31158D49337C8F, ); name = Standalone; sourceTree = "<group>"; };
- 18E6563C4672B4D77223D259 = {isa = PBXGroup; children = (
+ 0356C38F32660D46D5EE6554 = {isa = PBXGroup; children = (
7B870EE6D43B984CADE69C28,
94AA9AF4939F914AD00CEE1F,
58CEA1474B2E77B7287D735B,
841B6783475386C5471CA039,
8C0D1A1E000E47D09B771963,
7E588E8934AFA6EA5C58C133, ); name = utility; sourceTree = "<group>"; };
- 0EB0BD7272CEB2232D7F7BD2 = {isa = PBXGroup; children = (
+ 0720EF699B01F6EB0A2C4E3A = {isa = PBXGroup; children = (
1E496F7BF3B3C59E5ECACCDE,
8EB324480D60B3E3A81541E5, ); name = VST; sourceTree = "<group>"; };
- DBCC2B2AF371A45272E6FA21 = {isa = PBXGroup; children = (
+ E090AC75C454B0E281AB5C5A = {isa = PBXGroup; children = (
6CEFF94C7852DB3BFA5E29EB, ); name = VST3; sourceTree = "<group>"; };
09C66663E0BF7CD43C73C7E6 = {isa = PBXGroup; children = (
B663729F88A22F9325C3C9D0,
E96D0837CDD1CE8B768E4077,
- B002DD058A40E158192BAEE5,
- 69EEEA6D294205148B1E268A,
- 18E6563C4672B4D77223D259,
- 0EB0BD7272CEB2232D7F7BD2,
- DBCC2B2AF371A45272E6FA21,
+ 10721EE9E840AA7BC5F61764,
+ 5B3F9588F32C646D12DE0ACE,
+ 0356C38F32660D46D5EE6554,
+ 0720EF699B01F6EB0A2C4E3A,
+ E090AC75C454B0E281AB5C5A,
E65E231978B796AA7868DC4A,
BB2CD1B0323135818D0AB47F,
2A6E2BC2F602472C0FC70E68,
+ 550FAA1B7314518C5237CB46,
CB93B445C37845467DFFA948,
D79CAC82B4607BE7DEED1045,
DFB0C0515543105C1C262D1F,
12E665A9E9A675668AF160A9,
CF99F55660DC79DAE3D0D1A2,
8B67A16CB449160267AA05BB,
- 0926E36205F4D676343AB6E7,
- F5E9ED24FCF950C2B09ED67C, ); name = Resources; sourceTree = "<group>"; };
+ 0926E36205F4D676343AB6E7, ); name = Resources; sourceTree = "<group>"; };
7EA0AEAFB626CDF5E0038ED5 = {isa = PBXGroup; children = (
537D65EF3BBBDFC4651D389D,
A206765795252391D3F60EA4,
66A99B0A3E2094889407A133 = {isa = XCConfigurationList; buildConfigurations = (
155E2212057EC38829899A3C,
103368FE85719AF0B91BA072, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- D4A200CA175E6673EB359B63 = {isa = PBXAggregateTarget; buildConfigurationList = 66A99B0A3E2094889407A133; dependencies = (
+ D4A200CA175E6673EB359B63 = {isa = PBXAggregateTarget; buildConfigurationList = 66A99B0A3E2094889407A133; buildPhases = ( ); buildRules = ( ); dependencies = (
3D94E4E73BA4376BD0C954BB,
96A187ABC229B69131A7A553,
F1D7CFC05961A0332974083D,
A4B12DFADE1730C6014F332B,
D56C28DC5C3854D6AA9E04C2, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
A9C5EEDC68735C4FD82BD179 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- B003460B11C0B7C1CC07E666,
- 984317B46E5445CE1D8E4096, ); runOnlyForDeploymentPostprocessing = 0; };
+ B003460B11C0B7C1CC07E666, ); runOnlyForDeploymentPostprocessing = 0; };
8FC8AA9EA1AC4A26A5275F62 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
2A10495092621B672B55C020, ); runOnlyForDeploymentPostprocessing = 0; };
401B24CA453ED2BFC0EB2E89 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
AD749722210AC59435D40744,
5B39217A95807DE26271788F, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
0F2E05BC557F712359B8A9EB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- B003460B11C0B7C1CC07E666,
- 984317B46E5445CE1D8E4096, ); runOnlyForDeploymentPostprocessing = 0; };
+ B003460B11C0B7C1CC07E666, ); runOnlyForDeploymentPostprocessing = 0; };
0F041AFA4DBFCC6D0F1BAF6D = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
4B8B36CA49A9DEFEF84C4554, ); runOnlyForDeploymentPostprocessing = 0; };
543F0A994B5AC3479C27489E = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
1FA913B64C8ADDFFCA9768E1,
9E686ABA5935BF9B713A0C5A, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
98265196468E8519A8CB7DDB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- B003460B11C0B7C1CC07E666,
- 984317B46E5445CE1D8E4096, ); runOnlyForDeploymentPostprocessing = 0; };
+ B003460B11C0B7C1CC07E666, ); runOnlyForDeploymentPostprocessing = 0; };
60542F4F7805D965FF306DF1 = {isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = (
- 71BB1850016434ACD2C733E3, ); runOnlyForDeploymentPostprocessing = 0; };
+ 839CB91EF7AAB3086CD898FE, ); runOnlyForDeploymentPostprocessing = 0; };
37F22BD1952B828C02A1154C = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
7F77BD3679C81BEB8057BE4F,
A001C0EF302F42D8784EF150, ); runOnlyForDeploymentPostprocessing = 0; };
<ClInclude Include="..\..\..\..\modules\juce_audio_formats\sampler\juce_Sampler.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBaseHelper.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBuffer.h"/>\r
<None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/>\r
<None Include="..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/>\r
<None Include="..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r"/>\r
- <None Include="..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r"/>\r
+ <None Include="..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r"/>\r
+ <None Include="..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r"/>\r
<None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/>\r
<None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/>\r
</ItemGroup>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_formats\juce_audio_formats.h">\r
<Filter>Juce Modules\juce_audio_formats</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_plugin_client\AAX\juce_AAX_Modifier_Injector.h">\r
+ <Filter>Juce Modules\juce_audio_plugin_client\AAX</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses\AUBase.h">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU\CoreAudioUtilityClasses</Filter>\r
</ClInclude>\r
<None Include="..\..\..\..\modules\juce_audio_plugin_client\AU\AUResources.r">\r
<Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
</None>\r
- <None Include="..\..\..\..\modules\juce_audio_plugin_client\AU\juce_RezResources_AU.r">\r
- <Filter>Juce Modules\juce_audio_plugin_client\AU</Filter>\r
+ <None Include="..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_AU.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
+ </None>\r
+ <None Include="..\..\..\..\modules\juce_audio_plugin_client\juce_audio_plugin_client_RTAS.r">\r
+ <Filter>Juce Modules\juce_audio_plugin_client</Filter>\r
</None>\r
<None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt">\r
<Filter>Juce Modules\juce_graphics\image_formats\jpglib</Filter>\r
<JUCERPROJECT id="0nRd9LLGO" name="JuceDemoPlugin" projectType="audioplug"\r
version="1.0.0" juceLinkage="amalg_multi" buildVST="1" buildRTAS="0"\r
buildAU="1" pluginName="Juce Demo Plugin" pluginDesc="Juce Demo Plugin"\r
- pluginManufacturer="ROLI Ltd." pluginManufacturerCode="Roli"\r
+ pluginManufacturer="ROLI Ltd." pluginManufacturerCode="ROLI"\r
pluginCode="Jcdm" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0"\r
pluginWantsMidiIn="1" pluginProducesMidiOut="1" pluginSilenceInIsSilenceOut="0"\r
pluginTailLength="0" pluginEditorRequiresKeys="1" pluginAUExportPrefix="JuceDemoProjectAU"\r
pluginAUViewClass="JuceDemoProjectAU_V1" pluginRTASCategory=""\r
- bundleIdentifier="com.juce.JuceDemoPlugin" jucerVersion="4.2.1"\r
+ bundleIdentifier="com.juce.JuceDemoPlugin" jucerVersion="4.2.3"\r
companyName="ROLI Ltd." aaxIdentifier="com.yourcompany.JuceDemoPlugin"\r
buildAAX="0" pluginAAXCategory="AAX_ePlugInCategory_Dynamics"\r
includeBinaryInAppConfig="1" buildVST3="1" pluginManufacturerEmail="support@yourcompany.com"\r
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT\r
#endif\r
\r
+//==============================================================================\r
+// juce_audio_plugin_client flags:\r
+\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+#endif\r
+\r
//==============================================================================\r
// juce_audio_processors flags:\r
\r
#define JucePlugin_ManufacturerEmail "info@juce.com"\r
#endif\r
#ifndef JucePlugin_ManufacturerCode\r
- #define JucePlugin_ManufacturerCode 'Roli'\r
+ #define JucePlugin_ManufacturerCode 0x524f4c49 // 'ROLI'\r
#endif\r
#ifndef JucePlugin_PluginCode\r
- #define JucePlugin_PluginCode 'Jcdm'\r
+ #define JucePlugin_PluginCode 0x4a63646d // 'Jcdm'\r
#endif\r
#ifndef JucePlugin_IsSynth\r
#define JucePlugin_IsSynth 0\r
timecodeDisplayLabel.setColour (Label::textColourId, Colours::blue);\r
timecodeDisplayLabel.setFont (Font (Font::getDefaultMonospacedFontName(), 15.0f, Font::plain));\r
\r
- // add the triangular resizer component for the bottom-right of the UI\r
- addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits));\r
- resizeLimits.setSizeLimits (150, 150, 800, 300);\r
+ // set resize limits for this plug-in\r
+ setResizeLimits (400, 200, 800, 300);\r
\r
// set our component's initial size to be the last one that was stored in the filter's settings\r
setSize (owner.lastUIWidth,\r
gainSlider->setBounds (sliderArea.removeFromLeft (jmin (180, sliderArea.getWidth() / 2)));\r
delaySlider->setBounds (sliderArea.removeFromLeft (jmin (180, sliderArea.getWidth())));\r
\r
- resizer->setBounds (getWidth() - 16, getHeight() - 16, 16, 16);\r
-\r
getProcessor().lastUIWidth = getWidth();\r
getProcessor().lastUIHeight = getHeight();\r
}\r
// quick-and-dirty function to format a timecode string\r
static String timeToTimecodeString (double seconds)\r
{\r
- const int millisecs = roundToInt (std::abs (seconds * 1000.0));\r
+ const int millisecs = roundToInt (seconds * 1000.0);\r
+ const int absMillisecs = std::abs (millisecs);\r
\r
- return String::formatted ("%s%02d:%02d:%02d.%03d",\r
- seconds < 0 ? "-" : "",\r
+ return String::formatted ("%02d:%02d:%02d.%03d",\r
millisecs / 360000,\r
- (millisecs / 60000) % 60,\r
- (millisecs / 1000) % 60,\r
- millisecs % 1000);\r
+ (absMillisecs / 60000) % 60,\r
+ (absMillisecs / 1000) % 60,\r
+ absMillisecs % 1000);\r
}\r
\r
// quick-and-dirty function to format a bars/beats string\r
// Updates the text in our position label.\r
void JuceDemoPluginAudioProcessorEditor::updateTimecodeDisplay (AudioPlayHead::CurrentPositionInfo pos)\r
{\r
- if (lastDisplayedPosition != pos)\r
- {\r
- lastDisplayedPosition = pos;\r
-\r
- MemoryOutputStream displayText;\r
-\r
- displayText << "[" << SystemStats::getJUCEVersion() << "] "\r
- << String (pos.bpm, 2) << " bpm, "\r
- << pos.timeSigNumerator << '/' << pos.timeSigDenominator\r
- << " - " << timeToTimecodeString (pos.timeInSeconds)\r
- << " - " << quarterNotePositionToBarsBeatsString (pos.ppqPosition,\r
- pos.timeSigNumerator,\r
- pos.timeSigDenominator);\r
-\r
- if (pos.isRecording)\r
- displayText << " (recording)";\r
- else if (pos.isPlaying)\r
- displayText << " (playing)";\r
-\r
- timecodeDisplayLabel.setText (displayText.toString(), dontSendNotification);\r
- }\r
+ MemoryOutputStream displayText;\r
+\r
+ displayText << "[" << SystemStats::getJUCEVersion() << "] "\r
+ << String (pos.bpm, 2) << " bpm, "\r
+ << pos.timeSigNumerator << '/' << pos.timeSigDenominator\r
+ << " - " << timeToTimecodeString (pos.timeInSeconds)\r
+ << " - " << quarterNotePositionToBarsBeatsString (pos.ppqPosition,\r
+ pos.timeSigNumerator,\r
+ pos.timeSigDenominator);\r
+\r
+ if (pos.isRecording)\r
+ displayText << " (recording)";\r
+ else if (pos.isPlaying)\r
+ displayText << " (playing)";\r
+\r
+ timecodeDisplayLabel.setText (displayText.toString(), dontSendNotification);\r
}\r
MidiKeyboardComponent midiKeyboard;\r
Label timecodeDisplayLabel, gainLabel, delayLabel;\r
ScopedPointer<ParameterSlider> gainSlider, delaySlider;\r
- ScopedPointer<ResizableCornerComponent> resizer;\r
- ComponentBoundsConstrainer resizeLimits;\r
-\r
- AudioPlayHead::CurrentPositionInfo lastDisplayedPosition;\r
\r
//==============================================================================\r
JuceDemoPluginAudioProcessor& getProcessor() const\r
if (xmlState->hasTagName ("MYPLUGINSETTINGS"))\r
{\r
// ok, now pull out our last window size..\r
- lastUIWidth = xmlState->getIntAttribute ("uiWidth", lastUIWidth);\r
- lastUIHeight = xmlState->getIntAttribute ("uiHeight", lastUIHeight);\r
+ lastUIWidth = jmax (xmlState->getIntAttribute ("uiWidth", lastUIWidth), 400);\r
+ lastUIHeight = jmax (xmlState->getIntAttribute ("uiHeight", lastUIHeight), 200);\r
\r
// Now reload our parameters..\r
for (int i = 0; i < getNumParameters(); ++i)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="NTe0XB0ij" name="Plugin Host" projectType="guiapp" version="1.0.0"\r
juceFolder="../../../juce" vstFolderMac="~/SDKs/vstsdk2.4" vstFolderPC="c:\SDKs\vstsdk2.4"\r
- bundleIdentifier="com.roli.pluginhost" jucerVersion="4.2.1" companyName="ROLI Ltd."\r
+ bundleIdentifier="com.roli.pluginhost" jucerVersion="4.2.3" companyName="ROLI Ltd."\r
includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="" rtasFolder="~/SDKs/PT_80_SDK"\r
\r
<JUCERPROJECT id="AKfc5m" name="AudioPerformanceTest" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.juce.AudioPerformanceTest"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.1">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
<MAINGROUP id="b1eVTe" name="AudioPerformanceTest">\r
<GROUP id="{AB66118C-9D88-1C3A-D95C-42892D828E4B}" name="Source">\r
<FILE id="SqGU9p" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=4.2.1" -D "JUCE_APP_VERSION_HEX=0x40201" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=4.2.3 -DJUCE_APP_VERSION_HEX=0x40203 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 -std=c++11\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt -lcurl \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=4.2.1" -D "JUCE_APP_VERSION_HEX=0x40201" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=4.2.3 -DJUCE_APP_VERSION_HEX=0x40203 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 -std=c++11\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt -lcurl \r
<key>CFBundleSignature</key>\r
<string>????</string>\r
<key>CFBundleShortVersionString</key>\r
- <string>4.2.1</string>\r
+ <string>4.2.3</string>\r
<key>CFBundleVersion</key>\r
- <string>4.2.1</string>\r
+ <string>4.2.3</string>\r
<key>NSHumanReadableCopyright</key>\r
<string></string>\r
<key>NSHighResolutionCapable</key>\r
"_DEBUG=1",
"DEBUG=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=4.2.1",
- "JUCE_APP_VERSION_HEX=0x40201", );
+ "JUCE_APP_VERSION=4.2.3",
+ "JUCE_APP_VERSION_HEX=0x40203", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
"_NDEBUG=1",
"NDEBUG=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=4.2.1",
- "JUCE_APP_VERSION_HEX=0x40201", );
+ "JUCE_APP_VERSION=4.2.3",
+ "JUCE_APP_VERSION_HEX=0x40203", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
<Optimization>Disabled</Optimization>\r
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
<ClCompile>\r
<Optimization>Full</Optimization>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
#include <windows.h>\r
\r
VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION 4,2,1,0\r
+FILEVERSION 4,2,3,0\r
BEGIN\r
BLOCK "StringFileInfo"\r
BEGIN\r
BLOCK "040904E4"\r
BEGIN\r
VALUE "FileDescription", "Projucer\0"\r
- VALUE "FileVersion", "4.2.1\0"\r
+ VALUE "FileVersion", "4.2.3\0"\r
VALUE "ProductName", "Projucer\0"\r
- VALUE "ProductVersion", "4.2.1\0"\r
+ VALUE "ProductVersion", "4.2.3\0"\r
END\r
END\r
\r
<Optimization>Disabled</Optimization>\r
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
<ClCompile>\r
<Optimization>Full</Optimization>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
#include <windows.h>\r
\r
VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION 4,2,1,0\r
+FILEVERSION 4,2,3,0\r
BEGIN\r
BLOCK "StringFileInfo"\r
BEGIN\r
BLOCK "040904E4"\r
BEGIN\r
VALUE "FileDescription", "Projucer\0"\r
- VALUE "FileVersion", "4.2.1\0"\r
+ VALUE "FileVersion", "4.2.3\0"\r
VALUE "ProductName", "Projucer\0"\r
- VALUE "ProductVersion", "4.2.1\0"\r
+ VALUE "ProductVersion", "4.2.3\0"\r
END\r
END\r
\r
namespace ProjectInfo\r
{\r
const char* const projectName = "Projucer";\r
- const char* const versionString = "4.2.1";\r
- const int versionNumber = 0x40201;\r
+ const char* const versionString = "4.2.3";\r
+ const int versionNumber = 0x40203;\r
}\r
#endif\r
\r
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="M70qfTRRk" name="Projucer" projectType="guiapp" juceFolder="../../juce"\r
- jucerVersion="4.2.1" version="4.2.1" bundleIdentifier="com.juce.theprojucer"\r
+ jucerVersion="4.2.3" version="4.2.3" bundleIdentifier="com.juce.theprojucer"\r
defines="" includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
{\r
registerColour (TextButton::buttonColourId, "background (normal)", "bgColOff");\r
registerColour (TextButton::buttonOnColourId, "background (on)", "bgColOn");\r
- registerColour (TextButton::textColourOnId, "text colour (normal)", "textCol");\r
- registerColour (TextButton::textColourOffId, "text colour (on)", "textColOn");\r
+ registerColour (TextButton::textColourOffId, "text colour (normal)", "textCol");\r
+ registerColour (TextButton::textColourOnId, "text colour (on)", "textColOn");\r
}\r
\r
Component* createNewComponent (JucerDocument*)\r
{\r
- return new TextButton ("new button", String::empty);\r
+ return new TextButton ("new button", String());\r
}\r
\r
void getEditableProperties (Component* component, JucerDocument& document, Array<PropertyComponent*>& props)\r
{\r
ButtonHandler::getEditableProperties (component, document, props);\r
-\r
addColourProperties (component, document, props);\r
}\r
\r
XmlElement* createXmlFor (Component* comp, const ComponentLayout* layout)\r
{\r
- XmlElement* e = ButtonHandler::createXmlFor (comp, layout);\r
-\r
- //TextButton* tb = (TextButton*) comp;\r
-\r
- return e;\r
+ return ButtonHandler::createXmlFor (comp, layout);\r
}\r
\r
bool restoreFromXml (const XmlElement& xml, Component* comp, const ComponentLayout* layout)\r
{\r
- if (! ButtonHandler::restoreFromXml (xml, comp, layout))\r
- return false;\r
-\r
- //TextButton* tb = (TextButton*) comp;\r
-\r
- return true;\r
+ return ButtonHandler::restoreFromXml (xml, comp, layout);\r
}\r
\r
void fillInCreationCode (GeneratedCode& code, Component* component, const String& memberVariableName)\r
{\r
ButtonHandler::fillInCreationCode (code, component, memberVariableName);\r
\r
- //TextButton* const tb = dynamic_cast<TextButton*> (component);\r
- //TextButton defaultButton (String::empty);\r
-\r
String s;\r
\r
s << getColourIntialisationCode (component, memberVariableName)\r
Value shouldGenerateManifestValue() { return getValue (Ids::generateManifest); }\r
bool shouldGenerateManifest() const { return config [Ids::generateManifest]; }\r
\r
+ Value shouldLinkIncrementalValue() { return getValue (Ids::enableIncrementalLinking); }\r
+ bool shouldLinkIncremental() const { return config [Ids::enableIncrementalLinking]; }\r
+\r
Value getWholeProgramOptValue() { return getValue (Ids::wholeProgramOptimisation); }\r
bool shouldDisableWholeProgramOpt() const { return static_cast<int> (config [Ids::wholeProgramOptimisation]) > 0; }\r
\r
StringArray (wpoNames), Array<var> (wpoValues, numElementsInArray (wpoValues))));\r
}\r
\r
+ {\r
+ props.add (new BooleanPropertyComponent (shouldLinkIncrementalValue(), "Incremental Linking", "Enable"),\r
+ "Enable to avoid linking from scratch for every new build. "\r
+ "Disable to ensure that your final release build does not contain padding or thunks.");\r
+ }\r
+\r
if (! isDebug())\r
props.add (new BooleanPropertyComponent (shouldGenerateDebugSymbolsValue(), "Debug Symbols", "Force generation of debug symbols"));\r
\r
\r
linker->setAttribute ("IgnoreDefaultLibraryNames", isDebug ? "libcmt.lib, msvcrt.lib" : "");\r
linker->setAttribute ("GenerateDebugInformation", (isDebug || config.shouldGenerateDebugSymbols()) ? "true" : "false");\r
+ linker->setAttribute ("LinkIncremental", config.shouldLinkIncremental() ? "2" : "1");\r
linker->setAttribute ("ProgramDatabaseFile", getIntDirFile (config, config.getOutputFilename (".pdb", true)));\r
linker->setAttribute ("SubSystem", msvcIsWindowsSubsystem ? "2" : "1");\r
\r
\r
linker->setAttribute ("OutputFile", getOutDirFile (config, config.getOutputFilename (msvcTargetSuffix, false)));\r
linker->setAttribute ("IgnoreDefaultLibraryNames", isDebug ? "libcmt.lib, msvcrt.lib" : "");\r
+\r
+ linker->setAttribute ("LinkIncremental", config.shouldLinkIncremental() ? "2" : "1");\r
}\r
else\r
{\r
if (! (config.isDebug() || config.shouldDisableWholeProgramOpt()))\r
e->createNewChildElement ("WholeProgramOptimization")->addTextElement ("true");\r
\r
+ if (config.shouldLinkIncremental())\r
+ e->createNewChildElement ("LinkIncremental")->addTextElement ("true");\r
+\r
if (config.is64Bit())\r
e->createNewChildElement ("PlatformToolset")->addTextElement (getPlatformToolset());\r
}\r
bool isOSX() const override { return ! iOS; }\r
bool isiOS() const override { return iOS; }\r
\r
- bool supportsVST() const override { return ! iOS; }\r
+ bool supportsVST() const override { return true; }\r
bool supportsVST3() const override { return ! iOS; }\r
bool supportsAAX() const override { return ! iOS; }\r
bool supportsRTAS() const override { return ! iOS; }\r
\r
if (! projectType.isStaticLibrary() && target.type != Target::SharedCodeTarget)\r
target.addBuildPhase ("PBXFrameworksBuildPhase", target.frameworkIDs);\r
-\r
- target.addShellScriptBuildPhase ("Post-build script", getPostBuildScript());\r
}\r
\r
+ target.addShellScriptBuildPhase ("Post-build script", getPostBuildScript());\r
+\r
if (project.getProjectType().isAudioPlugin() && project.shouldBuildAUv3().getValue()\r
&& project.shouldBuildStandalone().getValue() && target.type == Target::StandalonePlugIn)\r
embedAppExtension();\r
v->setProperty ("isa", target.type == Target::AggregateTarget ? "PBXAggregateTarget" : "PBXNativeTarget", nullptr);\r
v->setProperty ("buildConfigurationList", createID (String ("__configList") + targetName), nullptr);\r
\r
- if (target.type != Target::AggregateTarget)\r
- {\r
- v->setProperty ("buildPhases", indentParenthesisedList (target.buildPhaseIDs), nullptr);\r
- v->setProperty ("buildRules", "( )", nullptr);\r
- }\r
+ v->setProperty ("buildPhases", indentParenthesisedList (target.buildPhaseIDs), nullptr);\r
+ v->setProperty ("buildRules", "( )", nullptr);\r
\r
v->setProperty ("dependencies", indentParenthesisedList (getTargetDependencies (target)), nullptr);\r
v->setProperty (Ids::name, target.getXCodeSchemeName(), nullptr);\r
return refID;\r
}\r
\r
- String addRezFile (const RelativePath& path) const\r
+ String addRezFile (const Project::Item& projectItem, const RelativePath& path) const\r
{\r
const String pathAsString (path.toUnixStyle());\r
const String refID (addFileReference (path.toUnixStyle()));\r
\r
- Target* auTarget = getTargetOfType (Target::AudioUnitPlugIn);\r
-\r
- if (auTarget == nullptr)\r
- return String();\r
+ if (projectItem.isModuleCode())\r
+ {\r
+ if (Target* xcodeTarget = getTargetOfType (getTargetTypeFromFilePath (projectItem.getFile(), false)))\r
+ {\r
+ String rezFileID = addBuildFile (pathAsString, refID, false, false, xcodeTarget);\r
+ xcodeTarget->rezFileIDs.add (rezFileID);\r
\r
- String rezFileID = addBuildFile (pathAsString, refID, false, false, auTarget);\r
- auTarget->rezFileIDs.add (rezFileID);\r
+ return refID;\r
+ }\r
+ }\r
\r
- return refID;\r
+ return String();\r
}\r
\r
String getEntitlementsFileName() const\r
else\r
path = RelativePath (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);\r
\r
- if (path.hasFileExtension (".r") && LibraryModule::CompileUnit::hasSuffix (projectItem.getFile(), "_AU"))\r
- return addRezFile (path);\r
+ if (path.hasFileExtension (".r"))\r
+ return addRezFile (projectItem, path);\r
\r
Target* xcodeTarget = nullptr;\r
if (projectItem.isModuleCode() && projectItem.shouldBeCompiled())\r
- {\r
- const File& file = projectItem.getFile();\r
-\r
- Target::Type targetType = Target::unspecified;\r
- if (LibraryModule::CompileUnit::hasSuffix (file, "_AU")) targetType = Target::AudioUnitPlugIn;\r
- else if (LibraryModule::CompileUnit::hasSuffix (file, "_AUv3")) targetType = Target::AudioUnitv3PlugIn;\r
- else if (LibraryModule::CompileUnit::hasSuffix (file, "_AAX")) targetType = Target::AAXPlugIn;\r
- else if (LibraryModule::CompileUnit::hasSuffix (file, "_RTAS")) targetType = Target::RTASPlugIn;\r
- else if (LibraryModule::CompileUnit::hasSuffix (file, "_VST2")) targetType = Target::VSTPlugIn;\r
- else if (LibraryModule::CompileUnit::hasSuffix (file, "_VST3")) targetType = Target::VST3PlugIn;\r
- else if (LibraryModule::CompileUnit::hasSuffix (file, "_Standalone")) targetType = Target::StandalonePlugIn;\r
-\r
- xcodeTarget = getTargetOfType (targetType);\r
- }\r
+ xcodeTarget = getTargetOfType (getTargetTypeFromFilePath (projectItem.getFile(), false));\r
\r
return addFile (path, projectItem.shouldBeCompiled(),\r
projectItem.shouldBeAddedToBinaryResources(),\r
misc.add (v);\r
}\r
\r
+ static Target::Type getTargetTypeFromFilePath (const File& file, bool returnSharedTargetIfNoValidSuffic)\r
+ {\r
+ if (LibraryModule::CompileUnit::hasSuffix (file, "_AU")) return Target::AudioUnitPlugIn;\r
+ else if (LibraryModule::CompileUnit::hasSuffix (file, "_AUv3")) return Target::AudioUnitv3PlugIn;\r
+ else if (LibraryModule::CompileUnit::hasSuffix (file, "_AAX")) return Target::AAXPlugIn;\r
+ else if (LibraryModule::CompileUnit::hasSuffix (file, "_RTAS")) return Target::RTASPlugIn;\r
+ else if (LibraryModule::CompileUnit::hasSuffix (file, "_VST2")) return Target::VSTPlugIn;\r
+ else if (LibraryModule::CompileUnit::hasSuffix (file, "_VST3")) return Target::VST3PlugIn;\r
+ else if (LibraryModule::CompileUnit::hasSuffix (file, "_Standalone")) return Target::StandalonePlugIn;\r
+\r
+ return (returnSharedTargetIfNoValidSuffic ? Target::SharedCodeTarget : Target::unspecified);\r
+ }\r
+\r
//==============================================================================\r
void removeMismatchedXcuserdata() const\r
{\r
\r
inline String valueToCharLiteral (const var& v)\r
{\r
- return CppTokeniserFunctions::addEscapeChars (v.toString().trim().substring (0, 4)).quoted ('\'');\r
+ String fourCharCode = v.toString().trim().substring (0, 4);\r
+ uint32 hexRepresentation = 0;\r
+\r
+ for (int i = 0; i < 4; ++i)\r
+ hexRepresentation = (hexRepresentation << 8U)\r
+ | (static_cast<unsigned int> (fourCharCode[i]) & 0xffU);\r
+\r
+ return String ("0x") + String::toHexString (static_cast<int> (hexRepresentation))\r
+ + String (" // ")\r
+ + CppTokeniserFunctions::addEscapeChars (fourCharCode).quoted ('\'');\r
}\r
}\r
\r
void paintIcon (Graphics& g, Rectangle<int> area) override\r
{\r
g.setColour (Colours::black);\r
-\r
- g.drawImageWithin (icon, area.getX(), area.getY(),\r
- area.getWidth(), area.getHeight(),\r
- RectanglePlacement::centred, false);\r
+ g.drawImage (icon, area.toFloat(), RectanglePlacement::centred);\r
}\r
\r
void deleteItem() override\r
\r
if (ModuleDescription (f).isValid())\r
return f;\r
-\r
- f = moduleFolder.getChildFile ("modules")\r
- .getChildFile (moduleID);\r
-\r
- if (ModuleDescription (f).isValid())\r
- return f;\r
}\r
}\r
}\r
\r
if (s.isEmpty())\r
{\r
- if (getPluginIsSynth().getValue()) s = "kAudioUnitType_MusicDevice";\r
- else if (getPluginWantsMidiInput().getValue()) s = "kAudioUnitType_MusicEffect";\r
- else s = "kAudioUnitType_Effect";\r
+ // Unfortunately, Rez uses a header where kAudioUnitType_MIDIProcessor is undefined\r
+ // Use aumi instead.\r
+ if (getPluginIsMidiEffectPlugin().getValue()) s = "'aumi'";\r
+ else if (getPluginIsSynth().getValue()) s = "kAudioUnitType_MusicDevice";\r
+ else if (getPluginWantsMidiInput().getValue()) s = "kAudioUnitType_MusicEffect";\r
+ else s = "kAudioUnitType_Effect";\r
}\r
\r
return s;\r
//==============================================================================\r
Component* ProjectContentComponent::createBuildTab (CompileEngineChildProcess* child)\r
{\r
- #if JUCE_WINDOWS\r
- ignoreUnused (child);\r
- return new ProjucerDisabledComp ("Windows support is still under development - "\r
- "please check for updates at www.juce.com!", false, false);\r
- #elif JUCE_LINUX\r
+ #if JUCE_LINUX\r
ignoreUnused (child);\r
return new ProjucerDisabledComp ("Linux support is still under development - "\r
"please check for updates at www.juce.com!", false, false);\r
\r
ReferenceCountedObjectPtr<CompileEngineChildProcess> ProjectContentComponent::getChildProcess()\r
{\r
- #if JUCE_MAC\r
if (childProcess == nullptr && isBuildEnabled())\r
{\r
childProcess = ProjucerApplication::getApp().childProcessCache->getOrCreate (*project);\r
if (childProcess != nullptr)\r
childProcess->setContinuousRebuild (isContinuousRebuildEnabled());\r
}\r
- #endif\r
\r
return childProcess;\r
}\r
if (value.isNotEmpty())\r
def << "=" << value;\r
\r
- if (! def.endsWithChar ('"'))\r
- def = def.quoted();\r
-\r
- s += " -D " + def;\r
+ s += " -D" + def;\r
}\r
\r
return s;\r
DECLARE_ID (generateManifest);\r
DECLARE_ID (useRuntimeLibDLL);\r
DECLARE_ID (wholeProgramOptimisation);\r
+ DECLARE_ID (enableIncrementalLinking);\r
DECLARE_ID (buildVST);\r
DECLARE_ID (bundleIdentifier);\r
DECLARE_ID (aaxIdentifier);\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
\r
<JUCERPROJECT id="Z2Xzcp" name="UnitTestRunner" projectType="consoleapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.UnitTestRunner" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.1" defines="JUCE_UNIT_TESTS=1">\r
+ jucerVersion="4.2.3" defines="JUCE_UNIT_TESTS=1">\r
<MAINGROUP id="GZdWCU" name="UnitTestRunner">\r
<GROUP id="{22894462-E1A9-036F-ED94-B51A50C87552}" name="Source">\r
<FILE id="ynaYaM" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="3t6YqETY1" name="BinaryBuilder" projectType="consoleapp"\r
- juceFolder="../../../juce" jucerVersion="4.2.1" bundleIdentifier="com.rawmaterialsoftware.binarybuilder"\r
+ juceFolder="../../../juce" jucerVersion="4.2.3" bundleIdentifier="com.rawmaterialsoftware.binarybuilder"\r
includeBinaryInAppConfig="1" version="1.0.0">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -ldl -lpthread -lrt \r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
+ CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
CXXFLAGS += $(CFLAGS) -std=c++11\r
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -ldl -lpthread -lrt \r
\r
<JUCERPROJECT id="IvabE4" name="juce_dll" projectType="library" version="1.0.0"\r
juceLinkage="none" bundleIdentifier="com.rawmaterialsoftware.juce"\r
- jucerVersion="4.2.1" defines="JUCE_DLL_BUILD=1" includeBinaryInAppConfig="1">\r
+ jucerVersion="4.2.3" defines="JUCE_DLL_BUILD=1" includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<VS2010 targetFolder="Builds/VisualStudio2010">\r
<CONFIGURATIONS>\r
typedef float Type;\r
typedef float32x4_t ParallelType;\r
typedef uint32x4_t IntegerType;\r
+ union signMaskUnion { ParallelType f; IntegerType i; };\r
enum { numParallel = 4 };\r
\r
- static forcedinline IntegerType toint (ParallelType v) noexcept { union { ParallelType f; IntegerType i; } u; u.f = v; return u.i; }\r
- static forcedinline ParallelType toflt (IntegerType v) noexcept { union { ParallelType f; IntegerType i; } u; u.i = v; return u.f; }\r
+ static forcedinline IntegerType toint (ParallelType v) noexcept { signMaskUnion u; u.f = v; return u.i; }\r
+ static forcedinline ParallelType toflt (IntegerType v) noexcept { signMaskUnion u; u.i = v; return u.f; }\r
\r
static forcedinline ParallelType load1 (Type v) noexcept { return vld1q_dup_f32 (&v); }\r
static forcedinline ParallelType loadA (const Type* v) noexcept { return vld1q_f32 (v); }\r
typedef double Type;\r
typedef double ParallelType;\r
typedef uint64 IntegerType;\r
+ union signMaskUnion { ParallelType f; IntegerType i; };\r
enum { numParallel = 1 };\r
\r
- static forcedinline IntegerType toint (ParallelType v) noexcept { union { ParallelType f; IntegerType i; } u; u.f = v; return u.i; }\r
- static forcedinline ParallelType toflt (IntegerType v) noexcept { union { ParallelType f; IntegerType i; } u; u.i = v; return u.f; }\r
+ static forcedinline IntegerType toint (ParallelType v) noexcept { signMaskUnion u; u.f = v; return u.i; }\r
+ static forcedinline ParallelType toflt (IntegerType v) noexcept { signMaskUnion u; u.i = v; return u.f; }\r
\r
static forcedinline ParallelType load1 (Type v) noexcept { return v; }\r
static forcedinline ParallelType loadA (const Type* v) noexcept { return *v; }\r
#define JUCE_LOAD_SRC1_SRC2_DEST(src1Load, src2Load, dstLoad) const Mode::ParallelType d = dstLoad (dest), s1 = src1Load (src1), s2 = src2Load (src2);\r
#define JUCE_LOAD_SRC_DEST(srcLoad, dstLoad) const Mode::ParallelType d = dstLoad (dest), s = srcLoad (src);\r
\r
+ union signMask32 { float f; uint32 i; };\r
+ union signMask64 { double d; uint64 i; };\r
+\r
#if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON\r
template<int typeSize> struct ModeType { typedef BasicOps32 Mode; };\r
template<> struct ModeType<8> { typedef BasicOps64 Mode; };\r
#if JUCE_USE_VDSP_FRAMEWORK\r
vDSP_vabs ((float*) src, 1, dest, 1, (vDSP_Length) num);\r
#else\r
- union { float f; uint32 i; } signMask;\r
+ FloatVectorHelpers::signMask32 signMask;\r
signMask.i = 0x7fffffffUL;\r
JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = fabsf (src[i]), Mode::bit_and (s, mask),\r
JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST,\r
#if JUCE_USE_VDSP_FRAMEWORK\r
vDSP_vabsD ((double*) src, 1, dest, 1, (vDSP_Length) num);\r
#else\r
- union {double d; uint64 i;} signMask;\r
+ FloatVectorHelpers::signMask64 signMask;\r
signMask.i = 0x7fffffffffffffffULL;\r
\r
JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = fabs (src[i]), Mode::bit_and (s, mask),\r
\r
ID: juce_audio_basics\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE audio and MIDI data classes\r
description: Classes for audio buffer manipulation, midi message handling, synthesis, etc.\r
website: http://www.juce.com/juce\r
{\r
return (uint8) jlimit (0, 127, v);\r
}\r
+}\r
\r
- inline uint8 floatVelocityToByte (const float v) noexcept\r
- {\r
- return validVelocity (roundToInt (v * 127.0f));\r
- }\r
+//==============================================================================\r
+uint8 MidiMessage::floatValueToMidiByte (const float v) noexcept\r
+{\r
+ return MidiHelpers::validVelocity (roundToInt (v * 127.0f));\r
+}\r
+\r
+uint16 MidiMessage::pitchbendToPitchwheelPos (const float pitchbend,\r
+ const float pitchbendRange) noexcept\r
+{\r
+ // can't translate a pitchbend value that is outside of the given range!\r
+ jassert (std::abs (pitchbend) <= pitchbendRange);\r
+\r
+ return static_cast<uint16> (pitchbend > 0.0f\r
+ ? jmap (pitchbend, 0.0f, pitchbendRange, 8192.0f, 16383.0f)\r
+ : jmap (pitchbend, -pitchbendRange, 0.0f, 0.0f, 8192.0f));\r
}\r
\r
//==============================================================================\r
MidiMessage::MidiMessage() noexcept\r
: timeStamp (0), size (2)\r
{\r
- preallocatedData.asBytes[0] = 0xf0;\r
- preallocatedData.asBytes[1] = 0xf7;\r
+ packedData.asBytes[0] = 0xf0;\r
+ packedData.asBytes[1] = 0xf7;\r
}\r
\r
MidiMessage::MidiMessage (const void* const d, const int dataSize, const double t)\r
- : timeStamp (t),\r
- size (dataSize)\r
+ : timeStamp (t), size (dataSize)\r
{\r
jassert (dataSize > 0);\r
- memcpy (allocateSpace (dataSize), d, (size_t) dataSize);\r
+ // this checks that the length matches the data..\r
+ jassert (dataSize > 3 || *(uint8*)d >= 0xf0 || getMessageLengthFromFirstByte (*(uint8*)d) == size);\r
\r
- // check that the length matches the data..\r
- jassert (size > 3 || *(uint8*)d >= 0xf0 || getMessageLengthFromFirstByte (*(uint8*)d) == size);\r
+ memcpy (allocateSpace (dataSize), d, (size_t) dataSize);\r
}\r
\r
MidiMessage::MidiMessage (const int byte1, const double t) noexcept\r
: timeStamp (t), size (1)\r
{\r
- preallocatedData.asBytes[0] = (uint8) byte1;\r
+ packedData.asBytes[0] = (uint8) byte1;\r
\r
// check that the length matches the data..\r
jassert (byte1 >= 0xf0 || getMessageLengthFromFirstByte ((uint8) byte1) == 1);\r
MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) noexcept\r
: timeStamp (t), size (2)\r
{\r
- preallocatedData.asBytes[0] = (uint8) byte1;\r
- preallocatedData.asBytes[1] = (uint8) byte2;\r
+ packedData.asBytes[0] = (uint8) byte1;\r
+ packedData.asBytes[1] = (uint8) byte2;\r
\r
// check that the length matches the data..\r
jassert (byte1 >= 0xf0 || getMessageLengthFromFirstByte ((uint8) byte1) == 2);\r
MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, const double t) noexcept\r
: timeStamp (t), size (3)\r
{\r
- preallocatedData.asBytes[0] = (uint8) byte1;\r
- preallocatedData.asBytes[1] = (uint8) byte2;\r
- preallocatedData.asBytes[2] = (uint8) byte3;\r
+ packedData.asBytes[0] = (uint8) byte1;\r
+ packedData.asBytes[1] = (uint8) byte2;\r
+ packedData.asBytes[2] = (uint8) byte3;\r
\r
// check that the length matches the data..\r
jassert (byte1 >= 0xf0 || getMessageLengthFromFirstByte ((uint8) byte1) == 3);\r
MidiMessage::MidiMessage (const MidiMessage& other)\r
: timeStamp (other.timeStamp), size (other.size)\r
{\r
- if (other.allocatedData != nullptr)\r
- {\r
- allocatedData.malloc ((size_t) size);\r
- memcpy (allocatedData, other.allocatedData, (size_t) size);\r
- }\r
+ if (isHeapAllocated())\r
+ memcpy (allocateSpace (size), other.getData(), (size_t) size);\r
else\r
- {\r
- preallocatedData.asInt32 = other.preallocatedData.asInt32;\r
- }\r
+ packedData.allocatedData = other.packedData.allocatedData;\r
}\r
\r
MidiMessage::MidiMessage (const MidiMessage& other, const double newTimeStamp)\r
: timeStamp (newTimeStamp), size (other.size)\r
{\r
- if (other.allocatedData != nullptr)\r
- {\r
- allocatedData.malloc ((size_t) size);\r
- memcpy (allocatedData, other.allocatedData, (size_t) size);\r
- }\r
+ if (isHeapAllocated())\r
+ memcpy (allocateSpace (size), other.getData(), (size_t) size);\r
else\r
- {\r
- preallocatedData.asInt32 = other.preallocatedData.asInt32;\r
- }\r
+ packedData.allocatedData = other.packedData.allocatedData;\r
}\r
\r
MidiMessage::MidiMessage (const void* srcData, int sz, int& numBytesUsed, const uint8 lastStatusByte,\r
}\r
else\r
{\r
- preallocatedData.asInt32 = 0;\r
size = getMessageLengthFromFirstByte ((uint8) byte);\r
- preallocatedData.asBytes[0] = (uint8) byte;\r
+ packedData.asBytes[0] = (uint8) byte;\r
\r
if (size > 1)\r
{\r
- preallocatedData.asBytes[1] = src[0];\r
+ packedData.asBytes[1] = src[0];\r
\r
if (size > 2)\r
- preallocatedData.asBytes[2] = src[1];\r
+ packedData.asBytes[2] = src[1];\r
}\r
}\r
\r
}\r
else\r
{\r
- preallocatedData.asInt32 = 0;\r
+ packedData.allocatedData = nullptr;\r
size = 0;\r
}\r
}\r
{\r
if (this != &other)\r
{\r
- timeStamp = other.timeStamp;\r
- size = other.size;\r
-\r
- if (other.allocatedData != nullptr)\r
+ if (other.isHeapAllocated())\r
{\r
- allocatedData.malloc ((size_t) size);\r
- memcpy (allocatedData, other.allocatedData, (size_t) size);\r
+ if (isHeapAllocated())\r
+ packedData.allocatedData = static_cast<uint8*> (std::realloc (packedData.allocatedData, (size_t) other.size));\r
+ else\r
+ packedData.allocatedData = static_cast<uint8*> (std::malloc ((size_t) other.size));\r
+\r
+ memcpy (packedData.allocatedData, other.packedData.allocatedData, (size_t) other.size);\r
}\r
else\r
{\r
- allocatedData.free();\r
- preallocatedData.asInt32 = other.preallocatedData.asInt32;\r
+ if (isHeapAllocated())\r
+ std::free (packedData.allocatedData);\r
+\r
+ packedData.allocatedData = other.packedData.allocatedData;\r
}\r
+\r
+ timeStamp = other.timeStamp;\r
+ size = other.size;\r
}\r
\r
return *this;\r
MidiMessage::MidiMessage (MidiMessage&& other) noexcept\r
: timeStamp (other.timeStamp), size (other.size)\r
{\r
- if (other.allocatedData != nullptr)\r
- allocatedData.swapWith (other.allocatedData);\r
- else\r
- preallocatedData.asInt32 = other.preallocatedData.asInt32;\r
+ packedData.allocatedData = other.packedData.allocatedData;\r
+ other.size = 0;\r
}\r
\r
MidiMessage& MidiMessage::operator= (MidiMessage&& other) noexcept\r
{\r
- jassert (this != &other); // shouldn't be possible\r
-\r
+ packedData.allocatedData = other.packedData.allocatedData;\r
timeStamp = other.timeStamp;\r
size = other.size;\r
- allocatedData.swapWith (other.allocatedData);\r
- preallocatedData.asInt32 = other.preallocatedData.asInt32;\r
-\r
+ other.size = 0;\r
return *this;\r
}\r
#endif\r
\r
-MidiMessage::~MidiMessage() {}\r
+MidiMessage::~MidiMessage() noexcept\r
+{\r
+ if (isHeapAllocated())\r
+ std::free (packedData.allocatedData);\r
+}\r
\r
uint8* MidiMessage::allocateSpace (int bytes)\r
{\r
- if (bytes > 4)\r
+ if (bytes > (int) sizeof (packedData))\r
{\r
- allocatedData.malloc ((size_t) bytes);\r
- return allocatedData;\r
+ uint8* d = static_cast<uint8*> (std::malloc ((size_t) bytes));\r
+ packedData.allocatedData = d;\r
+ return d;\r
}\r
\r
- return preallocatedData.asBytes;\r
+ return packedData.asBytes;\r
}\r
\r
String MidiMessage::getDescription() const\r
void MidiMessage::setVelocity (const float newVelocity) noexcept\r
{\r
if (isNoteOnOrOff())\r
- getData()[2] = MidiHelpers::floatVelocityToByte (newVelocity);\r
+ getData()[2] = floatValueToMidiByte (newVelocity);\r
}\r
\r
void MidiMessage::multiplyVelocity (const float scaleFactor) noexcept\r
\r
MidiMessage MidiMessage::noteOn (const int channel, const int noteNumber, const float velocity) noexcept\r
{\r
- return noteOn (channel, noteNumber, MidiHelpers::floatVelocityToByte (velocity));\r
+ return noteOn (channel, noteNumber, floatValueToMidiByte (velocity));\r
}\r
\r
MidiMessage MidiMessage::noteOff (const int channel, const int noteNumber, uint8 velocity) noexcept\r
\r
MidiMessage MidiMessage::noteOff (const int channel, const int noteNumber, float velocity) noexcept\r
{\r
- return noteOff (channel, noteNumber, MidiHelpers::floatVelocityToByte (velocity));\r
+ return noteOff (channel, noteNumber, floatValueToMidiByte (velocity));\r
}\r
\r
MidiMessage MidiMessage::noteOff (const int channel, const int noteNumber) noexcept\r
header[--n] = 0xff;\r
\r
const size_t headerLen = sizeof (header) - n;\r
+ const int totalSize = (int) (headerLen + textSize);\r
\r
- uint8* const dest = result.allocateSpace ((int) (headerLen + textSize));\r
- result.size = (int) (headerLen + textSize);\r
+ uint8* const dest = result.allocateSpace (totalSize);\r
+ result.size = totalSize;\r
\r
memcpy (dest, header + n, headerLen);\r
memcpy (dest + headerLen, text.text.getAddress(), textSize);\r
return String();\r
}\r
\r
-double MidiMessage::getMidiNoteInHertz (int noteNumber, const double frequencyOfA) noexcept\r
+double MidiMessage::getMidiNoteInHertz (const int noteNumber, const double frequencyOfA) noexcept\r
{\r
return frequencyOfA * pow (2.0, (noteNumber - 69) / 12.0);\r
}\r
MidiMessage (const MidiMessage&, double newTimeStamp);\r
\r
/** Destructor. */\r
- ~MidiMessage();\r
+ ~MidiMessage() noexcept;\r
\r
/** Copies this message from another one. */\r
MidiMessage& operator= (const MidiMessage& other);\r
/** Returns a pointer to the raw midi data.\r
@see getRawDataSize\r
*/\r
- const uint8* getRawData() const noexcept { return allocatedData != nullptr ? allocatedData.getData() : preallocatedData.asBytes; }\r
+ const uint8* getRawData() const noexcept { return getData(); }\r
\r
/** Returns the number of bytes of data in the message.\r
@see getRawData\r
\r
The value passed in must be 0x80 or higher.\r
*/\r
- static int getMessageLengthFromFirstByte (const uint8 firstByte) noexcept;\r
+ static int getMessageLengthFromFirstByte (uint8 firstByte) noexcept;\r
\r
//==============================================================================\r
/** Returns the name of a midi note number.\r
The frequencyOfA parameter is an optional frequency for 'A', normally 440-444Hz for concert pitch.\r
@see getMidiNoteName\r
*/\r
- static double getMidiNoteInHertz (int noteNumber, const double frequencyOfA = 440.0) noexcept;\r
+ static double getMidiNoteInHertz (int noteNumber, double frequencyOfA = 440.0) noexcept;\r
\r
/** Returns true if the given midi note number is a black key. */\r
static bool isMidiNoteBlack (int noteNumber) noexcept;\r
*/\r
static const char* getControllerName (int controllerNumber);\r
\r
+ /** Converts a floating-point value between 0 and 1 to a MIDI 7-bit value between 0 and 127. */\r
+ static uint8 floatValueToMidiByte (float valueBetween0and1) noexcept;\r
+\r
+ /** Converts a pitchbend value in semitones to a MIDI 14-bit pitchwheel position value. */\r
+ static uint16 pitchbendToPitchwheelPos (float pitchbendInSemitones,\r
+ float pitchbendRangeInSemitones) noexcept;\r
+\r
private:\r
//==============================================================================\r
- double timeStamp;\r
- HeapBlock<uint8> allocatedData;\r
- int size;\r
-\r
#ifndef DOXYGEN\r
- union\r
+ union PackedData\r
{\r
- uint8 asBytes[4];\r
- uint32 asInt32;\r
- } preallocatedData;\r
+ uint8* allocatedData;\r
+ uint8 asBytes[sizeof (uint8*)];\r
+ };\r
+\r
+ PackedData packedData;\r
+ double timeStamp;\r
+ int size;\r
#endif\r
\r
- inline uint8* getData() noexcept { return allocatedData != nullptr ? allocatedData.getData() : preallocatedData.asBytes; }\r
+ inline bool isHeapAllocated() const noexcept { return size > (int) sizeof (packedData); }\r
+ inline uint8* getData() const noexcept { return isHeapAllocated() ? packedData.allocatedData : (uint8*) packedData.asBytes; }\r
uint8* allocateSpace (int);\r
};\r
\r
/** Replaces this sequence with another one. */\r
MidiMessageSequence& operator= (const MidiMessageSequence&);\r
\r
+ #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS\r
+ MidiMessageSequence (MidiMessageSequence&& other) noexcept\r
+ : list (static_cast<OwnedArray<MidiEventHolder>&&> (other.list))\r
+ {}\r
+\r
+ MidiMessageSequence& operator= (MidiMessageSequence&& other) noexcept\r
+ {\r
+ list = static_cast<OwnedArray<MidiEventHolder>&&> (other.list);\r
+ return *this;\r
+ }\r
+ #endif\r
+\r
/** Destructor. */\r
~MidiMessageSequence();\r
\r
int perNotePitchbendRange = 48,\r
int masterPitchbendRange = 2) noexcept;\r
\r
- /* Returns the MIDI master channel of this zone. */\r
+ /* Returns the MIDI master channel number (in the range 1-16) of this zone. */\r
int getMasterChannel() const noexcept;\r
\r
/** Returns the number of note channels occupied by this zone. */\r
int getNumNoteChannels() const noexcept;\r
\r
- /* Returns the MIDI channel number of the lowest-numbered note channel of this zone. */\r
+ /* Returns the MIDI channel number (in the range 1-16) of the\r
+ lowest-numbered note channel of this zone.\r
+ */\r
int getFirstNoteChannel() const noexcept;\r
\r
- /* Returns the MIDI channel number of the highest-numbered note channel of this zone. */\r
+ /* Returns the MIDI channel number (in the range 1-16) of the\r
+ highest-numbered note channel of this zone.\r
+ */\r
int getLastNoteChannel() const noexcept;\r
\r
- /** Returns the MIDI channel numbers of the note channels of this zone as a Range. */\r
+ /** Returns the MIDI channel numbers (in the range 1-16) of the\r
+ note channels of this zone as a Range.\r
+ */\r
Range<int> getNoteChannelRange() const noexcept;\r
\r
/** Returns true if the MIDI channel (in the range 1-16) is used by this zone\r
- either as a note channel or as the master channel; false otherwise. */\r
+ either as a note channel or as the master channel; false otherwise.\r
+ */\r
bool isUsingChannel (int channel) const noexcept;\r
\r
/** Returns true if the MIDI channel (in the range 1-16) is used by this zone\r
- as a note channel; false otherwise. */\r
+ as a note channel; false otherwise.\r
+ */\r
bool isUsingChannelAsNoteChannel (int channel) const noexcept;\r
\r
/** Returns the per-note pitchbend range in semitones set for this zone. */\r
currentDeviceType = availableDeviceTypes.getUnchecked(0)->getTypeName();\r
}\r
\r
- setup.bufferSize = xml.getIntAttribute ("audioDeviceBufferSize");\r
- setup.sampleRate = xml.getDoubleAttribute ("audioDeviceRate");\r
+ setup.bufferSize = xml.getIntAttribute ("audioDeviceBufferSize", setup.bufferSize);\r
+ setup.sampleRate = xml.getDoubleAttribute ("audioDeviceRate", setup.sampleRate);\r
\r
setup.inputChannels .parseString (xml.getStringAttribute ("audioDeviceInChans", "11"), 2);\r
setup.outputChannels.parseString (xml.getStringAttribute ("audioDeviceOutChans", "11"), 2);\r
\r
ID: juce_audio_devices\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE audio and MIDI I/O device classes\r
description: Classes to play and record from audio and MIDI I/O devices\r
website: http://www.juce.com/juce\r
// the normal message, handle it now..\r
if (*d >= 0xf8 && *d <= 0xfe)\r
{\r
- const MidiMessage m (*d++, time);\r
- callback.handleIncomingMidiMessage (input, m);\r
+ callback.handleIncomingMidiMessage (input, MidiMessage (*d++, time));\r
--numBytes;\r
}\r
else\r
data[len++] = *d++;\r
--numBytes;\r
\r
- if (len >= MidiMessage::getMessageLengthFromFirstByte (data[0]))\r
+ const uint8 firstByte = data[0];\r
+\r
+ if (firstByte < 0x80 || firstByte == 0xf7)\r
+ {\r
+ len = 0;\r
+ break; // ignore this malformed MIDI message..\r
+ }\r
+\r
+ if (len >= MidiMessage::getMessageLengthFromFirstByte (firstByte))\r
break;\r
}\r
}\r
return r;\r
}\r
\r
- int getDefaultBufferSize() override { return 256; }\r
+ int getDefaultBufferSize() override\r
+ {\r
+ #if TARGET_IPHONE_SIMULATOR\r
+ return 512;\r
+ #else\r
+ return 256;\r
+ #endif\r
+ }\r
\r
String open (const BigInteger& inputChannelsWanted,\r
const BigInteger& outputChannelsWanted,\r
UInt32 framesPerSlice;\r
UInt32 dataSize = sizeof (framesPerSlice);\r
\r
- if (AudioUnitGetProperty (audioUnit, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global, 0, &framesPerSlice, &dataSize) == noErr\r
- && dataSize == sizeof (framesPerSlice) && framesPerSlice != actualBufferSize)\r
+ AudioUnitInitialize (audioUnit);\r
+\r
+ AudioUnitSetProperty (audioUnit, kAudioUnitProperty_MaximumFramesPerSlice,\r
+ kAudioUnitScope_Global, 0, &actualBufferSize, sizeof (actualBufferSize));\r
+\r
+\r
+ if (AudioUnitGetProperty (audioUnit, kAudioUnitProperty_MaximumFramesPerSlice,\r
+ kAudioUnitScope_Global, 0, &framesPerSlice, &dataSize) == noErr\r
+ && dataSize == sizeof (framesPerSlice) && static_cast<int> (framesPerSlice) != actualBufferSize)\r
{\r
- actualBufferSize = framesPerSlice;\r
+ actualBufferSize = static_cast<int> (framesPerSlice);\r
prepareFloatBuffers (actualBufferSize);\r
}\r
\r
- AudioUnitInitialize (audioUnit);\r
return true;\r
}\r
\r
}\r
}\r
\r
+ updateActivePorts();\r
+\r
return lastError;\r
}\r
\r
AudioCDReader::AudioCDReader (const File& volume)\r
: AudioFormatReader (0, "CD Audio"),\r
volumeDir (volume),\r
- currentReaderTrack (-1),\r
- reader (0)\r
+ currentReaderTrack (-1)\r
{\r
sampleRate = 44100.0;\r
bitsPerSample = 16;\r
void updateSampleRates()\r
{\r
// find a list of sample rates..\r
- const int possibleSampleRates[] = { 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 };\r
Array<double> newRates;\r
\r
if (asioObject != nullptr)\r
{\r
+ const int possibleSampleRates[] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 };\r
+\r
for (int index = 0; index < numElementsInArray (possibleSampleRates); ++index)\r
if (asioObject->canSampleRate ((double) possibleSampleRates[index]) == 0)\r
newRates.add ((double) possibleSampleRates[index]);\r
}\r
\r
- if (newRates.size() == 0)\r
+ if (newRates.isEmpty())\r
{\r
double cr = getSampleRate();\r
JUCE_ASIO_LOG ("No sample rates supported - current rate: " + String ((int) cr));\r
\r
#if JUCE_USE_FLAC\r
\r
+}\r
+\r
+#if defined _WIN32 && !defined __CYGWIN__\r
+ #include <io.h>\r
+#else\r
+ #include <unistd.h>\r
+#endif\r
+\r
+#if defined _MSC_VER || defined __BORLANDC__ || defined __MINGW32__\r
+ #include <sys/types.h> /* for off_t */\r
+#endif\r
+\r
+#if HAVE_INTTYPES_H\r
+ #define __STDC_FORMAT_MACROS\r
+ #include <inttypes.h>\r
+#endif\r
+\r
+#if defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ || defined __EMX__\r
+ #include <io.h> /* for _setmode(), chmod() */\r
+ #include <fcntl.h> /* for _O_BINARY */\r
+#else\r
+ #include <unistd.h> /* for chown(), unlink() */\r
+#endif\r
+\r
+#if defined _MSC_VER || defined __BORLANDC__ || defined __MINGW32__\r
+ #if defined __BORLANDC__\r
+ #include <utime.h> /* for utime() */\r
+ #else\r
+ #include <sys/utime.h> /* for utime() */\r
+ #endif\r
+#else\r
+ #include <sys/types.h> /* some flavors of BSD (like OS X) require this to get time_t */\r
+ #include <utime.h> /* for utime() */\r
+#endif\r
+\r
+#if defined _MSC_VER\r
+ #if _MSC_VER >= 1600\r
+ #include <stdint.h>\r
+ #else\r
+ #include <limits.h>\r
+ #endif\r
+#endif\r
+\r
+#ifdef _WIN32\r
+ #include <stdio.h>\r
+ #include <sys/stat.h>\r
+ #include <stdarg.h>\r
+ #include <windows.h>\r
+#endif\r
+\r
+#ifdef DEBUG\r
+ #include <assert.h>\r
+#endif\r
+\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+\r
+namespace juce\r
+{\r
+\r
namespace FlacNamespace\r
{\r
#if JUCE_INCLUDE_FLAC_CODE || ! defined (JUCE_INCLUDE_FLAC_CODE)\r
#define FLAC__HAS_X86INTRIN 1\r
#endif\r
\r
- #undef __STDC_LIMIT_MACROS\r
+#undef __STDC_LIMIT_MACROS\r
#define __STDC_LIMIT_MACROS 1\r
#define flac_max jmax\r
#define flac_min jmin\r
\r
if (infoLength > 0)\r
{\r
- infoLength = jlimit ((int64) 0, infoLength, (int64) input.readInt());\r
+ infoLength = jmin (infoLength, (int64) input.readInt());\r
+\r
+ if (infoLength <= 0)\r
+ return;\r
\r
for (int i = 0; i < numElementsInArray (types); ++i)\r
{\r
\r
ID: juce_audio_formats\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE audio file format codecs\r
description: Classes for reading and writing various audio file formats.\r
website: http://www.juce.com/juce\r
--- /dev/null
+/*\r
+ ==============================================================================\r
+\r
+ This file is part of the JUCE library.\r
+ Copyright (c) 2016 - ROLI Ltd.\r
+\r
+ Permission is granted to use this software under the terms of either:\r
+ a) the GPL v2 (or any later version)\r
+ b) the Affero GPL v3\r
+\r
+ Details of these licenses can be found at: www.gnu.org/licenses\r
+\r
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r
+\r
+ ------------------------------------------------------------------------------\r
+\r
+ To release a closed-source product which uses JUCE, commercial licenses are\r
+ available: visit www.juce.com for more information.\r
+\r
+ ==============================================================================\r
+*/\r
+\r
+#ifndef JUCE_AAX_MODIFIER_INJECTOR_H_INCLUDED\r
+#define JUCE_AAX_MODIFIER_INJECTOR_H_INCLUDED\r
+\r
+struct ModifierKeyProvider\r
+{\r
+ virtual ~ModifierKeyProvider() {}\r
+ virtual int getWin32Modifiers() const = 0;\r
+};\r
+\r
+struct ModifierKeyReceiver\r
+{\r
+ virtual ~ModifierKeyReceiver() {}\r
+ virtual void setModifierKeyProvider (ModifierKeyProvider* provider) = 0;\r
+ virtual void removeModifierKeyProvider () = 0;\r
+};\r
+\r
+#endif
\ No newline at end of file
\r
#undef check\r
\r
+namespace juce\r
+{\r
+ #include "juce_AAX_Modifier_Injector.h"\r
+}\r
+\r
const int32_t juceChunkType = 'juce';\r
const int maxAAXChannels = 8;\r
\r
-JUCE_DEFINE_WRAPPER_TYPE (wrapperType_AAX);\r
-\r
//==============================================================================\r
struct AAXClasses\r
{\r
- static void check (AAX_Result result)\r
+ static int32 getAAXParamHash (AAX_CParamID paramID) noexcept\r
{\r
- jassert (result == AAX_SUCCESS); ignoreUnused (result);\r
+ int32 result = 0;\r
+\r
+ while (*paramID != 0)\r
+ result = (31 * result) + (*paramID++);\r
+\r
+ return result;\r
}\r
\r
- static int getParamIndexFromID (AAX_CParamID paramID) noexcept\r
+ static void check (AAX_Result result)\r
{\r
- return atoi (paramID);\r
+ jassert (result == AAX_SUCCESS); ignoreUnused (result);\r
}\r
\r
static bool isBypassParam (AAX_CParamID paramID) noexcept\r
#endif\r
\r
//==============================================================================\r
- class JuceAAX_GUI : public AAX_CEffectGUI\r
+ class JuceAAX_GUI : public AAX_CEffectGUI, public ModifierKeyProvider\r
{\r
public:\r
JuceAAX_GUI() {}\r
{\r
component->setVisible (true);\r
component->addToDesktop (0, nativeViewToAttachTo);\r
+\r
+ if (ModifierKeyReceiver* modReceiver = dynamic_cast<ModifierKeyReceiver*> (component->getPeer()))\r
+ modReceiver->setModifierKeyProvider (this);\r
}\r
}\r
}\r
{\r
JUCE_AUTORELEASEPOOL\r
{\r
+ if (ModifierKeyReceiver* modReceiver = dynamic_cast<ModifierKeyReceiver*> (component->getPeer()))\r
+ modReceiver->removeModifierKeyProvider();\r
+\r
component->removeFromDesktop();\r
component = nullptr;\r
}\r
return AAX_ERROR_NULL_OBJECT;\r
}\r
\r
+ int getWin32Modifiers() const override\r
+ {\r
+ int modifierFlags = 0;\r
+\r
+ if (const AAX_IViewContainer* viewContainer = GetViewContainer())\r
+ {\r
+ uint32 aaxViewMods = 0;\r
+ const_cast<AAX_IViewContainer*>(viewContainer)->GetModifiers (&aaxViewMods);\r
+\r
+ if ((aaxViewMods & AAX_eModifiers_Shift) != 0) modifierFlags |= ModifierKeys::shiftModifier;\r
+ if ((aaxViewMods & AAX_eModifiers_Alt ) != 0) modifierFlags |= ModifierKeys::altModifier;\r
+ }\r
+\r
+ return modifierFlags;\r
+ }\r
+\r
private:\r
+ //==============================================================================\r
+ inline int getParamIndexFromID (AAX_CParamID paramID) const noexcept\r
+ {\r
+ if (const JuceAAX_Processor* params = dynamic_cast<const JuceAAX_Processor*> (GetEffectParameters()))\r
+ return params->getParamIndexFromID (paramID);\r
+\r
+ return -1;\r
+ }\r
+\r
+ inline AAX_CParamID getAAXParamIDFromJuceIndex (int index) const noexcept\r
+ {\r
+ if (const JuceAAX_Processor* params = dynamic_cast<const JuceAAX_Processor*> (GetEffectParameters()))\r
+ return params->getAAXParamIDFromJuceIndex (index);\r
+\r
+ return nullptr;\r
+ }\r
+\r
+ //==============================================================================\r
struct ContentWrapperComponent : public Component\r
{\r
ContentWrapperComponent (JuceAAX_GUI& gui, AudioProcessor& plugin)\r
{\r
const int parameterIndex = pluginEditor->getControlParameterIndex (*e.eventComponent);\r
\r
- if (parameterIndex >= 0)\r
+ if (AAX_CParamID aaxParamID = owner.getAAXParamIDFromJuceIndex (parameterIndex))\r
{\r
uint32_t mods = 0;\r
vc->GetModifiers (&mods);\r
- (vc->*method) (IndexAsParamID (parameterIndex), mods);\r
+\r
+ (vc->*method) (aaxParamID, mods);\r
}\r
}\r
}\r
{\r
public:\r
JuceAAX_Processor() : pluginInstance (createPluginFilterOfType (AudioProcessor::wrapperType_AAX)),\r
- busUtils (*pluginInstance, false, maxAAXChannels),\r
+ isPrepared (false), busUtils (*pluginInstance, false, maxAAXChannels),\r
sampleRate (0), lastBufferSize (1024), maxBufferSize (1024),\r
hasSidechain (false)\r
{\r
\r
static AAX_CEffectParameters* AAX_CALLBACK Create()\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AAX);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AAX;\r
return new JuceAAX_Processor();\r
}\r
\r
+ AAX_Result Uninitialize() override\r
+ {\r
+ if (isPrepared && pluginInstance != nullptr)\r
+ {\r
+ isPrepared = false;\r
+ pluginInstance->releaseResources();\r
+ }\r
+\r
+ return AAX_CEffectParameters::Uninitialize();\r
+ }\r
+\r
AAX_Result EffectInit() override\r
{\r
AAX_Result err;\r
const int numParameters = pluginInstance->getNumParameters();\r
\r
for (int i = 0; i < numParameters; ++i)\r
- SetParameterNormalizedValue (IndexAsParamID (i), (double) pluginInstance->getParameter(i));\r
+ SetParameterNormalizedValue (getAAXParamIDFromJuceIndex (i), (double) pluginInstance->getParameter(i));\r
\r
return AAX_SUCCESS;\r
}\r
\r
void audioProcessorParameterChanged (AudioProcessor* /*processor*/, int parameterIndex, float newValue) override\r
{\r
- SetParameterNormalizedValue (IndexAsParamID (parameterIndex), (double) newValue);\r
+ SetParameterNormalizedValue (getAAXParamIDFromJuceIndex (parameterIndex), (double) newValue);\r
}\r
\r
void audioProcessorChanged (AudioProcessor* processor) override\r
\r
void audioProcessorParameterChangeGestureBegin (AudioProcessor* /*processor*/, int parameterIndex) override\r
{\r
- TouchParameter (IndexAsParamID (parameterIndex));\r
+ TouchParameter (getAAXParamIDFromJuceIndex (parameterIndex));\r
}\r
\r
void audioProcessorParameterChangeGestureEnd (AudioProcessor* /*processor*/, int parameterIndex) override\r
{\r
- ReleaseParameter (IndexAsParamID (parameterIndex));\r
+ ReleaseParameter (getAAXParamIDFromJuceIndex (parameterIndex));\r
}\r
\r
AAX_Result NotificationReceived (AAX_CTypeID type, const void* data, uint32_t size) override\r
bool supportsSidechain() const noexcept { return hasSidechain; };\r
\r
private:\r
+ friend class JuceAAX_GUI;\r
+\r
void process (float* const* channels, const int numChans, const int bufferSize,\r
const bool bypass, AAX_IMIDINode* midiNodeIn, AAX_IMIDINode* midiNodesOut)\r
{\r
void addAudioProcessorParameters()\r
{\r
AudioProcessor& audioProcessor = getPluginInstance();\r
+\r
const int numParameters = audioProcessor.getNumParameters();\r
\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ const bool usingManagedParameters = false;\r
+ #else\r
+ const bool usingManagedParameters = (audioProcessor.getParameters().size() == numParameters);\r
+ #endif\r
+\r
for (int parameterIndex = 0; parameterIndex < numParameters; ++parameterIndex)\r
{\r
+ aaxParamIDs.add (usingManagedParameters ? audioProcessor.getParameterID (parameterIndex)\r
+ : String (parameterIndex));\r
+\r
AAX_CString paramName (audioProcessor.getParameterName (parameterIndex, 31).toRawUTF8());\r
+ AAX_CParamID paramID = aaxParamIDs.getReference (parameterIndex).getCharPointer();\r
+\r
+ paramMap.set (AAXClasses::getAAXParamHash (paramID), parameterIndex);\r
\r
AAX_IParameter* parameter\r
- = new AAX_CParameter<float> (IndexAsParamID (parameterIndex),\r
+ = new AAX_CParameter<float> (paramID,\r
paramName,\r
audioProcessor.getParameterDefaultValue (parameterIndex),\r
AAX_CLinearTaperDelegate<float, 0>(),\r
AAX_Result preparePlugin()\r
{\r
AudioProcessor& audioProcessor = getPluginInstance();\r
+ bool hasSomethingChanged = false;\r
\r
#if JucePlugin_IsMidiEffect\r
// MIDI effect plug-ins do not support any audio channels\r
\r
if ( (inputSet == AudioChannelSet::disabled() && inputStemFormat != AAX_eStemFormat_None)\r
|| (outputSet == AudioChannelSet::disabled() && outputStemFormat != AAX_eStemFormat_None))\r
+ {\r
+ if (isPrepared)\r
+ {\r
+ isPrepared = false;\r
+ audioProcessor.releaseResources();\r
+ }\r
+\r
return AAX_ERROR_UNIMPLEMENTED;\r
+ }\r
+\r
\r
bool success = true;\r
\r
if (busUtils.getBusCount (true) > 0)\r
- success = audioProcessor.setPreferredBusArrangement (true, 0, inputSet);\r
+ success = setPreferredBusArrangement (busUtils, true, 0, inputSet, hasSomethingChanged);\r
\r
if (success && busUtils.getBusCount (false) > 0)\r
- success = audioProcessor.setPreferredBusArrangement (false, 0, outputSet);\r
+ success = setPreferredBusArrangement (busUtils, false, 0, outputSet, hasSomethingChanged);\r
\r
// This should never happen as the plugin reported that this layout is supported\r
jassert (success);\r
\r
- hasSidechain = enableAuxBusesForCurrentFormat (busUtils, inputSet, outputSet);\r
- if (hasSidechain)\r
+ hasSidechain = enableAuxBusesForCurrentFormat (busUtils, inputSet, outputSet, hasSomethingChanged);\r
+ if (hasSidechain && hasSomethingChanged)\r
sideChainBuffer.realloc (static_cast<size_t> (maxBufferSize));\r
\r
// recheck the format\r
if ( (busUtils.getBusCount (true) > 0 && busUtils.getChannelSet (true, 0) != inputSet)\r
|| (busUtils.getBusCount (false) > 0 && busUtils.getChannelSet (false, 0) != outputSet)\r
|| (hasSidechain && busUtils.getNumChannels(true, 1) != 1))\r
+ {\r
+ if (isPrepared)\r
+ {\r
+ isPrepared = false;\r
+ audioProcessor.releaseResources();\r
+ }\r
+\r
return AAX_ERROR_UNIMPLEMENTED;\r
+ }\r
\r
- rebuildChannelMapArrays (true);\r
- rebuildChannelMapArrays (false);\r
+ if (hasSomethingChanged)\r
+ {\r
+ rebuildChannelMapArrays (true);\r
+ rebuildChannelMapArrays (false);\r
+ }\r
#endif\r
\r
- audioProcessor.setRateAndBufferSizeDetails (sampleRate, maxBufferSize);\r
- audioProcessor.prepareToPlay (sampleRate, lastBufferSize);\r
- maxBufferSize = lastBufferSize;\r
+ hasSomethingChanged = (sampleRate != audioProcessor.getSampleRate()\r
+ || maxBufferSize != lastBufferSize\r
+ || hasSomethingChanged);\r
+\r
+ if (hasSomethingChanged || (! isPrepared))\r
+ {\r
+ if (isPrepared)\r
+ {\r
+ isPrepared = false;\r
+ audioProcessor.releaseResources();\r
+ }\r
+\r
+ audioProcessor.setRateAndBufferSizeDetails (sampleRate, lastBufferSize);\r
+ audioProcessor.prepareToPlay (sampleRate, lastBufferSize);\r
+ maxBufferSize = lastBufferSize;\r
+ }\r
\r
check (Controller()->SetSignalLatency (audioProcessor.getLatencySamples()));\r
\r
+ isPrepared = true;\r
+\r
return AAX_SUCCESS;\r
}\r
\r
}\r
}\r
\r
+ //==============================================================================\r
+ inline int getParamIndexFromID (AAX_CParamID paramID) const noexcept\r
+ {\r
+ return paramMap [AAXClasses::getAAXParamHash (paramID)];\r
+ }\r
+\r
+ inline AAX_CParamID getAAXParamIDFromJuceIndex (int index) const noexcept\r
+ {\r
+ if (! isPositiveAndBelow (index, aaxParamIDs.size())) return nullptr;\r
+\r
+ return aaxParamIDs.getReference (index).getCharPointer();\r
+ }\r
+\r
+ //==============================================================================\r
ScopedJuceInitialiser_GUI libraryInitialiser;\r
\r
ScopedPointer<AudioProcessor> pluginInstance;\r
+ bool isPrepared;\r
PluginBusUtilities busUtils;\r
MidiBuffer midiBuffer;\r
Array<float*> channelList;\r
HeapBlock<float> sideChainBuffer;\r
Array<int> inputLayoutMap, outputLayoutMap;\r
\r
+ Array<String> aaxParamIDs;\r
+ HashMap<int32, int> paramMap;\r
+\r
struct ChunkMemoryBlock : public ReferenceCountedObject\r
{\r
juce::MemoryBlock data;\r
JUCE_DECLARE_NON_COPYABLE (JuceAAX_Processor)\r
};\r
\r
- //==============================================================================\r
- struct IndexAsParamID\r
- {\r
- inline explicit IndexAsParamID (int i) noexcept : index (i) {}\r
-\r
- operator AAX_CParamID() noexcept\r
- {\r
- jassert (index >= 0);\r
-\r
- char* t = name + sizeof (name);\r
- *--t = 0;\r
- int v = index;\r
-\r
- do\r
- {\r
- *--t = (char) ('0' + (v % 10));\r
- v /= 10;\r
-\r
- } while (v > 0);\r
-\r
- return static_cast<AAX_CParamID> (t);\r
- }\r
-\r
- private:\r
- int index;\r
- char name[32];\r
-\r
- JUCE_DECLARE_NON_COPYABLE (IndexAsParamID)\r
- };\r
-\r
//==============================================================================\r
struct AAXFormatConfiguration\r
{\r
}\r
\r
static bool enableAuxBusesForCurrentFormat (PluginBusUtilities& busUtils, const AudioChannelSet& inputLayout,\r
- const AudioChannelSet& outputLayout)\r
+ const AudioChannelSet& outputLayout,\r
+ bool& hasSomethingChanged)\r
{\r
const int numOutBuses = busUtils.getBusCount (false);\r
const int numInputBuses = busUtils.getBusCount(true);\r
if (layout == AudioChannelSet::disabled())\r
{\r
layout = busUtils.getDefaultLayoutForBus (false, busIdx);\r
- busUtils.processor.setPreferredBusArrangement (false, busIdx, layout);\r
+ setPreferredBusArrangement (busUtils, false, busIdx, layout, hasSomethingChanged);\r
}\r
}\r
\r
bool success = true;\r
\r
if (numInputBuses > 0)\r
- success = busUtils.processor.setPreferredBusArrangement (true, 0, inputLayout);\r
+ success = setPreferredBusArrangement (busUtils, true, 0, inputLayout, hasSomethingChanged);\r
\r
if (success)\r
- success = busUtils.processor.setPreferredBusArrangement (false, 0, outputLayout);\r
+ success = setPreferredBusArrangement (busUtils, false, 0, outputLayout, hasSomethingChanged);\r
\r
// was the above successful\r
if (success && (numInputBuses == 0 || busUtils.getChannelSet (true, 0) == inputLayout)\r
&& busUtils.getChannelSet (false, 0) == outputLayout)\r
layoutRestorer.release();\r
+ else\r
+ hasSomethingChanged = true;\r
}\r
\r
// does the plug-in have side-chain support? Check the following:\r
\r
const AudioChannelSet set = busUtils.getDefaultLayoutForChannelNumAndBus (true, 1, 1);\r
if (! set.isDisabled())\r
- hasSidechain = busUtils.processor.setPreferredBusArrangement (true, 1, set);\r
+ hasSidechain = setPreferredBusArrangement (busUtils, true, 1, set, hasSomethingChanged);\r
\r
if (! hasSidechain)\r
- success = busUtils.processor.setPreferredBusArrangement (true, 1, AudioChannelSet::disabled());\r
+ success = setPreferredBusArrangement (busUtils, true, 1,\r
+ AudioChannelSet::disabled(),\r
+ hasSomethingChanged);\r
\r
// AAX requires your processor's first sidechain to be either mono or that\r
// it can be disabled\r
// disable all other input buses\r
for (int busIdx = 2; busIdx < numInputBuses; ++busIdx)\r
{\r
- success = busUtils.processor.setPreferredBusArrangement (true, busIdx, AudioChannelSet::disabled());\r
+ success = setPreferredBusArrangement (busUtils, true, busIdx,\r
+ AudioChannelSet::disabled(),\r
+ hasSomethingChanged);\r
\r
// AAX can only have a single side-chain input. Therefore, your processor must either\r
// only have a single side-chain input or allow disabling all other side-chains\r
if (hasSidechain)\r
{\r
if (busUtils.getBusCount (false) == 0 || busUtils.getBusCount (true) == 0 ||\r
- (busUtils.getChannelSet (true, 0) == inputLayout && busUtils.getChannelSet (false, 0) == outputLayout))\r
+ (busUtils.getChannelSet (true, 0) == inputLayout && busUtils.getChannelSet (false, 0) == outputLayout))\r
return true;\r
\r
// restore the old layout\r
if (busUtils.getBusCount(true) > 0)\r
- busUtils.processor.setPreferredBusArrangement (true, 0, inputLayout);\r
+ setPreferredBusArrangement (busUtils, true, 0, inputLayout, hasSomethingChanged);\r
\r
if (busUtils.getBusCount (false) > 0)\r
- busUtils.processor.setPreferredBusArrangement (false, 0, outputLayout);\r
+ setPreferredBusArrangement (busUtils, false, 0, outputLayout, hasSomethingChanged);\r
}\r
}\r
\r
return false;\r
}\r
\r
+ // wrap setPreferredBusArrangement calls with this to prevent excessive calls to the plug-in\r
+ static bool setPreferredBusArrangement (PluginBusUtilities& busUtils, bool isInput, int busIdx,\r
+ const AudioChannelSet& layout,\r
+ bool& didChangePlugin)\r
+ {\r
+ // no need to do anything\r
+ if (busUtils.getChannelSet (isInput, busIdx) == layout)\r
+ return true;\r
+\r
+ didChangePlugin = true;\r
+ return busUtils.processor.setPreferredBusArrangement (isInput, busIdx, layout);\r
+ }\r
+\r
//==============================================================================\r
static void createDescriptor (AAX_IComponentDescriptor& desc, int configIndex, PluginBusUtilities& busUtils,\r
const AudioChannelSet& inputLayout, const AudioChannelSet& outputLayout,\r
properties->AddProperty (AAX_eProperty_SupportsSaveRestore, false);\r
#endif\r
\r
- if (enableAuxBusesForCurrentFormat (busUtils, inputLayout, outputLayout))\r
+ bool ignore;\r
+ if (enableAuxBusesForCurrentFormat (busUtils, inputLayout, outputLayout, ignore))\r
{\r
check (desc.AddSideChainIn (JUCEAlgorithmIDs::sideChainBuffers));\r
properties->AddProperty (AAX_eProperty_SupportsSideChainInput, true);\r
\r
static void getPlugInDescription (AAX_IEffectDescriptor& descriptor)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AAX);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AAX;\r
\r
ScopedPointer<AudioProcessor> plugin = createPluginFilterOfType (AudioProcessor::wrapperType_AAX);\r
PluginBusUtilities busUtils (*plugin, false, maxAAXChannels);\r
\r
#if JucePlugin_IsMidiEffect\r
// MIDI effect plug-ins do not support any audio channels\r
- jassert (getBusCount (true) == 0 && getBusCount (false) == 0);\r
+ jassert (busUtils.getBusCount (true) == 0 && busUtils.getBusCount (false) == 0);\r
\r
if (AAX_IComponentDescriptor* const desc = descriptor.NewComponentDescriptor())\r
{\r
#pragma clang diagnostic ignored "-Wcomment"\r
#endif\r
\r
-JUCE_DEFINE_WRAPPER_TYPE (wrapperType_RTAS);\r
-\r
/* Note about include paths\r
------------------------\r
\r
AddControl (new CPluginControl_OnOff ('bypa', "Master Bypass\nMastrByp\nMByp\nByp", false, true));\r
DefineMasterBypassControlIndex (bypassControlIndex);\r
\r
- for (int i = 0; i < juceFilter->getNumParameters(); ++i)\r
- AddControl (new JucePluginControl (*juceFilter, i));\r
+ const int numParameters = juceFilter->getNumParameters();\r
+\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ const bool usingManagedParameters = false;\r
+ #else\r
+ const bool usingManagedParameters = (juceFilter->getParameters().size() == numParameters);\r
+ #endif\r
+\r
+ for (int i = 0; i < numParameters; ++i)\r
+ {\r
+ OSType rtasParamID = static_cast<OSType> (usingManagedParameters ? juceFilter->getParameterID (i).hashCode() : i);\r
+ AddControl (new JucePluginControl (*juceFilter, i, rtasParamID));\r
+ }\r
\r
// we need to do this midi log-in to get timecode, regardless of whether\r
// the plugin actually uses midi...\r
{\r
public:\r
//==============================================================================\r
- JucePluginControl (AudioProcessor& p, const int i)\r
- : processor (p), index (i)\r
+ JucePluginControl (AudioProcessor& p, const int i, OSType rtasParamID)\r
+ : processor (p), index (i), paramID (rtasParamID)\r
{\r
CPluginControl::SetValue (GetDefaultValue());\r
}\r
\r
//==============================================================================\r
- OSType GetID() const { return index + 1; }\r
+ OSType GetID() const { return paramID; }\r
long GetDefaultValue() const { return floatToLong (processor.getParameterDefaultValue (index)); }\r
void SetDefaultValue (long) {}\r
long GetNumSteps() const { return processor.getParameterNumSteps (index); }\r
//==============================================================================\r
AudioProcessor& processor;\r
const int index;\r
+ const OSType paramID;\r
\r
JUCE_DECLARE_NON_COPYABLE (JucePluginControl)\r
};\r
#if JUCE_WINDOWS\r
Process::setCurrentModuleInstanceHandle (gThisModule);\r
#endif\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_RTAS);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_RTAS;\r
initialiseJuce_GUI();\r
\r
return new JucePlugInProcess();\r
#include <juce_gui_extra/juce_gui_extra.h>\r
#include <juce_audio_utils/juce_audio_utils.h>\r
\r
-JUCE_DEFINE_WRAPPER_TYPE (wrapperType_Standalone);\r
-\r
// You can set this flag in your build if you need to specify a different\r
// standalone JUCEApplication class for your app to use. If you don't\r
// set it then by default we'll just create a simple one as below.\r
public:\r
StandaloneFilterApp()\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_Standalone);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_Standalone;\r
}\r
\r
const String getApplicationName() override { return JucePlugin_Name; }\r
quit();\r
}\r
\r
-private:\r
+protected:\r
ScopedPointer<StandaloneFilterWindow> mainWindow;\r
};\r
\r
-START_JUCE_APPLICATION (StandaloneFilterApp);\r
-\r
#endif\r
jassert (processor != nullptr); // Your createPluginFilter() function must return a valid object!\r
\r
// try to disable sidechain and aux buses\r
- const int numInBuses = processor->busArrangement.inputBuses.size();\r
- const int numOutBuses = processor->busArrangement.inputBuses.size();\r
+ const int numInBuses = processor->busArrangement.inputBuses. size();\r
+ const int numOutBuses = processor->busArrangement.outputBuses.size();\r
\r
for (int busIdx = 1; busIdx < numInBuses; ++busIdx)\r
processor->setPreferredBusArrangement (true, busIdx, AudioChannelSet::disabled());\r
class JuceVSTWrapper;\r
static bool recursionCheck = false;\r
\r
-JUCE_DEFINE_WRAPPER_TYPE (wrapperType_VST);\r
-\r
namespace juce\r
{\r
#if JUCE_MAC\r
firstProcessCallback (true),\r
shouldDeleteEditor (false),\r
#if JUCE_64BIT\r
- useNSView (true),\r
+ useNSView (true)\r
#else\r
- useNSView (false),\r
+ useNSView (false)\r
+ #endif\r
+ #if ! JUCE_IOS\r
+ , hostWindow (0)\r
#endif\r
- hostWindow (0)\r
{\r
busUtils.init();\r
\r
delete filter;\r
filter = nullptr;\r
\r
+ #if ! JUCE_IOS\r
jassert (editorComp == 0);\r
+ #endif\r
\r
deleteTempChannels();\r
\r
//==============================================================================\r
bool getEffectName (char* name) override\r
{\r
- String (JucePlugin_Name).copyToUTF8 (name, 64);\r
+ String (JucePlugin_Name).copyToUTF8 (name, 64 + 1);\r
return true;\r
}\r
\r
bool getVendorString (char* text) override\r
{\r
- String (JucePlugin_Manufacturer).copyToUTF8 (text, 64);\r
+ String (JucePlugin_Manufacturer).copyToUTF8 (text, 64 + 1);\r
return true;\r
}\r
\r
void getProgramName (char* name) override\r
{\r
if (filter != nullptr)\r
- filter->getProgramName (filter->getCurrentProgram()).copyToUTF8 (name, 24);\r
+ filter->getProgramName (filter->getCurrentProgram()).copyToUTF8 (name, 24 + 1);\r
}\r
\r
bool getProgramNameIndexed (VstInt32 /*category*/, VstInt32 index, char* text) override\r
{\r
if (filter != nullptr && isPositiveAndBelow (index, filter->getNumPrograms()))\r
{\r
- filter->getProgramName (index).copyToUTF8 (text, 24);\r
+ filter->getProgramName (index).copyToUTF8 (text, 24 + 1);\r
return true;\r
}\r
\r
if (filter != nullptr)\r
{\r
jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->getParameterText (index, 24).copyToUTF8 (text, 24); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->getParameterText (index, 24).copyToUTF8 (text, 24 + 1); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
}\r
}\r
\r
if (filter != nullptr)\r
{\r
jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->getParameterName (index, 16).copyToUTF8 (text, 16); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->getParameterName (index, 16).copyToUTF8 (text, 16 + 1); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
}\r
}\r
\r
if (filter != nullptr)\r
{\r
jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->getParameterLabel (index).copyToUTF8 (text, 24); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->getParameterLabel (index).copyToUTF8 (text, 24 + 1); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
}\r
}\r
\r
\r
String channelName = busInfo.name + String (" ") + abbvChannelName;\r
\r
- channelName.copyToUTF8 (properties.label, (size_t) (kVstMaxLabelLen - 1));\r
- channelName.copyToUTF8 (properties.shortLabel, (size_t) (kVstMaxShortLabelLen - 1));\r
+ channelName.copyToUTF8 (properties.label, (size_t) (kVstMaxLabelLen + 1));\r
+ channelName.copyToUTF8 (properties.shortLabel, (size_t) (kVstMaxShortLabelLen + 1));\r
\r
properties.flags = kVstPinUseSpeaker | kVstPinIsActive;\r
properties.arrangementType = SpeakerMappings::channelSetToVstArrangementType (busInfo.channels);\r
\r
void createEditorComp()\r
{\r
+ #if ! JUCE_IOS\r
if (hasShutdown || filter == nullptr)\r
return;\r
\r
cEffect.flags &= ~effFlagsHasEditor;\r
}\r
}\r
+ #endif\r
\r
shouldDeleteEditor = false;\r
}\r
\r
void deleteEditor (bool canDeleteLaterIfModal)\r
{\r
+ #if JUCE_IOS\r
+ ignoreUnused (canDeleteLaterIfModal);\r
+ #else\r
JUCE_AUTORELEASEPOOL\r
{\r
PopupMenu::dismissAllActiveMenus();\r
hostWindow = 0;\r
#endif\r
}\r
+ #endif\r
}\r
\r
VstIntPtr dispatcher (VstInt32 opCode, VstInt32 index, VstIntPtr value, void* ptr, float opt) override\r
if (hasShutdown)\r
return 0;\r
\r
+ #if ! JUCE_IOS\r
if (opCode == effEditIdle)\r
{\r
doIdleCallback();\r
hostWindow = (Window) ptr;\r
Window editorWnd = (Window) editorComp->getWindowHandle();\r
XReparentWindow (display, editorWnd, hostWindow, 0, 0);\r
- #else\r
+ #elif JUCE_MAC\r
hostWindow = attachComponentToWindowRefVST (editorComp, ptr, useNSView);\r
#endif\r
editorComp->setVisible (true);\r
\r
return 0;\r
}\r
-\r
+ #endif\r
return AudioEffectX::dispatcher (opCode, index, value, ptr, opt);\r
}\r
\r
+ #if ! JUCE_IOS\r
void resizeHostWindow (int newWidth, int newHeight)\r
{\r
if (editorComp != nullptr)\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EditorCompWrapper)\r
};\r
+ #endif\r
\r
//==============================================================================\r
private:\r
PluginBusUtilities busUtils;\r
juce::MemoryBlock chunkMemory;\r
juce::uint32 chunkMemoryTime;\r
+ #if ! JUCE_IOS\r
ScopedPointer<EditorCompWrapper> editorComp;\r
ERect editorSize;\r
+ #endif\r
MidiBuffer midiEvents;\r
VSTMidiEventList outgoingEvents;\r
bool isProcessing, isBypassed, hasShutdown, isInSizeWindow, firstProcessCallback;\r
void* hostWindow;\r
#elif JUCE_LINUX\r
Window hostWindow;\r
- #else\r
+ #elif JUCE_WINDOWS\r
HWND hostWindow;\r
#endif\r
\r
\r
//==============================================================================\r
// Mac startup code..\r
-#if JUCE_MAC\r
+#if JUCE_MAC || JUCE_IOS\r
\r
JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster);\r
JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
+ #if JUCE_MAC\r
initialiseMacVST();\r
+ #endif\r
+\r
return pluginEntryPoint (audioMaster);\r
}\r
\r
JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster);\r
JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
+ #if JUCE_MAC\r
initialiseMacVST();\r
+ #endif\r
+\r
return pluginEntryPoint (audioMaster);\r
}\r
\r
JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster);\r
JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
SharedMessageThread::getInstance();\r
return pluginEntryPoint (audioMaster);\r
JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster) asm ("main");\r
JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
return VSTPluginMain (audioMaster);\r
}\r
\r
extern "C" __declspec (dllexport) AEffect* VSTPluginMain (audioMasterCallback audioMaster)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
return pluginEntryPoint (audioMaster);\r
}\r
#ifndef JUCE_64BIT // (can't compile this on win64, but it's not needed anyway with VST2.4)\r
extern "C" __declspec (dllexport) int main (audioMasterCallback audioMaster)\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
return (int) pluginEntryPoint (audioMaster);\r
}\r
*/\r
\r
#include "../../juce_core/system/juce_TargetPlatform.h"\r
+\r
+#if JUCE_MAC\r
+\r
#include "../utility/juce_CheckSettingMacros.h"\r
\r
#if JucePlugin_Build_VST || JucePlugin_Build_VST3\r
} // (juce namespace)\r
\r
#endif\r
+#endif\r
//==============================================================================\r
#if JucePlugin_Build_VST3 && (__APPLE_CPP__ || __APPLE_CC__ || _WIN32 || _WIN64)\r
\r
+#if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS)\r
+ #undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY\r
+ #define JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY 1\r
+#endif\r
+\r
#include "../../juce_audio_processors/format_types/juce_VST3Headers.h"\r
+\r
+#undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY\r
+\r
#include "../utility/juce_CheckSettingMacros.h"\r
#include "../utility/juce_IncludeModuleHeaders.h"\r
#include "../utility/juce_WindowsHooks.h"\r
#endif\r
#endif\r
\r
-JUCE_DEFINE_WRAPPER_TYPE (wrapperType_VST3);\r
-\r
namespace juce\r
{\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceAudioProcessor)\r
};\r
\r
+class JuceVST3Component;\r
+\r
//==============================================================================\r
class JuceVST3EditController : public Vst::EditController,\r
public Vst::IMidiMapping,\r
{\r
public:\r
JuceVST3EditController (Vst::IHostApplication* host)\r
+ #if ! JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ : usingManagedParameter (false)\r
+ #endif\r
{\r
if (host != nullptr)\r
host->queryInterface (FUnknown::iid, (void**) &hostContext);\r
}\r
\r
//==============================================================================\r
+ enum InternalParameters\r
+ {\r
+ paramPreset = 0x70727374, // 'prst'\r
+ paramBypass = 0x62797073, // 'byps'\r
+ paramMidiControllerOffset = 0x6d636d00 // 'mdm*'\r
+ };\r
+\r
struct Param : public Vst::Parameter\r
{\r
- Param (AudioProcessor& p, int index) : owner (p), paramIndex (index)\r
+ Param (AudioProcessor& p, int index, Vst::ParamID paramID) : owner (p), paramIndex (index)\r
{\r
- info.id = (Vst::ParamID) index;\r
+ info.id = paramID;\r
toString128 (info.title, p.getParameterName (index));\r
toString128 (info.shortTitle, p.getParameterName (index, 8));\r
toString128 (info.units, p.getParameterLabel (index));\r
//==============================================================================\r
struct BypassParam : public Vst::Parameter\r
{\r
- BypassParam (AudioProcessor& p, int index) : owner (p), paramIndex (index)\r
+ BypassParam (AudioProcessor& p, Vst::ParamID vstParamID) : owner (p)\r
{\r
- info.id = (Vst::ParamID) index;\r
+ info.id = vstParamID;\r
toString128 (info.title, "Bypass");\r
toString128 (info.shortTitle, "Bypass");\r
toString128 (info.units, "");\r
\r
private:\r
AudioProcessor& owner;\r
- int paramIndex;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BypassParam)\r
};\r
\r
+ //==============================================================================\r
+ struct ProgramChangeParameter : public Vst::Parameter\r
+ {\r
+ ProgramChangeParameter (AudioProcessor& p) : owner (p)\r
+ {\r
+ jassert (owner.getNumPrograms() > 1);\r
+\r
+ info.id = paramPreset;\r
+ toString128 (info.title, "Program");\r
+ toString128 (info.shortTitle, "Program");\r
+ toString128 (info.units, "");\r
+ info.stepCount = owner.getNumPrograms() - 1;\r
+ info.defaultNormalizedValue = static_cast<Vst::ParamValue> (owner.getCurrentProgram()) / static_cast<Vst::ParamValue> (info.stepCount);\r
+ info.unitId = Vst::kRootUnitId;\r
+ info.flags = Vst::ParameterInfo::kIsProgramChange | Vst::ParameterInfo::kCanAutomate;\r
+ }\r
+\r
+ virtual ~ProgramChangeParameter() {}\r
+\r
+ bool setNormalized (Vst::ParamValue v) override\r
+ {\r
+ Vst::ParamValue program = v * info.stepCount;\r
+\r
+ if (! isPositiveAndBelow ((int) program, owner.getNumPrograms()))\r
+ return false;\r
+\r
+ if (valueNormalized != v)\r
+ {\r
+ valueNormalized = v;\r
+ changed();\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+ }\r
+\r
+ void toString (Vst::ParamValue value, Vst::String128 result) const override\r
+ {\r
+ Vst::ParamValue program = value * info.stepCount;\r
+ toString128 (result, owner.getProgramName ((int) program));\r
+ }\r
+\r
+ bool fromString (const Vst::TChar* text, Vst::ParamValue& outValueNormalized) const override\r
+ {\r
+ const String paramValueString (getStringFromVstTChars (text));\r
+\r
+ const int n = owner.getNumPrograms();\r
+ for (int i = 0; i < n; ++i)\r
+ {\r
+ if (paramValueString == owner.getProgramName (i))\r
+ {\r
+ outValueNormalized = static_cast<Vst::ParamValue> (i) / info.stepCount;\r
+ return true;\r
+ }\r
+ }\r
+\r
+ return false;\r
+ }\r
+\r
+ static String getStringFromVstTChars (const Vst::TChar* text)\r
+ {\r
+ return juce::String (juce::CharPointer_UTF16 (reinterpret_cast<const juce::CharPointer_UTF16::CharType*> (text)));\r
+ }\r
+\r
+ Vst::ParamValue toPlain (Vst::ParamValue v) const override { return v * info.stepCount; }\r
+ Vst::ParamValue toNormalized (Vst::ParamValue v) const override { return v / info.stepCount; }\r
+\r
+ private:\r
+ AudioProcessor& owner;\r
+\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProgramChangeParameter)\r
+ };\r
+\r
//==============================================================================\r
tresult PLUGIN_API setComponentState (IBStream* stream) override\r
{\r
const int numParameters = pluginInstance->getNumParameters();\r
\r
for (int i = 0; i < numParameters; ++i)\r
- setParamNormalized ((Vst::ParamID) i, (double) pluginInstance->getParameter (i));\r
+ setParamNormalized (getVSTParamIDForIndex (i), (double) pluginInstance->getParameter (i));\r
\r
- setParamNormalized ((Vst::ParamID) numParameters, audioProcessor->isBypassed ? 1.0f : 0.0f);\r
+ setParamNormalized (bypassParamID, audioProcessor->isBypassed ? 1.0f : 0.0f);\r
+\r
+ const int numPrograms = pluginInstance->getNumPrograms();\r
+ if (numPrograms > 1)\r
+ setParamNormalized (paramPreset, static_cast<Vst::ParamValue> (pluginInstance->getCurrentProgram()) / static_cast<Vst::ParamValue> (numPrograms - 1));\r
}\r
\r
return Vst::EditController::setComponentState (stream);\r
tresult PLUGIN_API getMidiControllerAssignment (Steinberg::int32 /*busIndex*/, Steinberg::int16 channel,\r
Vst::CtrlNumber midiControllerNumber, Vst::ParamID& resultID) override\r
{\r
- resultID = (Vst::ParamID) midiControllerToParameter[channel][midiControllerNumber];\r
+ resultID = midiControllerToParameter[channel][midiControllerNumber];\r
\r
return kResultTrue; // Returning false makes some hosts stop asking for further MIDI Controller Assignments\r
}\r
\r
// Converts an incoming parameter index to a MIDI controller:\r
- bool getMidiControllerForParameter (int index, int& channel, int& ctrlNumber)\r
+ bool getMidiControllerForParameter (Vst::ParamID index, int& channel, int& ctrlNumber)\r
{\r
- const int mappedIndex = index - parameterToMidiControllerOffset;\r
+ const int mappedIndex = static_cast<int> (index - parameterToMidiControllerOffset);\r
\r
if (isPositiveAndBelow (mappedIndex, numElementsInArray (parameterToMidiController)))\r
{\r
return false;\r
}\r
\r
+ inline bool isMidiControllerParamID (Vst::ParamID paramID) const noexcept\r
+ {\r
+ return (paramID >= parameterToMidiControllerOffset\r
+ && isPositiveAndBelow (paramID - parameterToMidiControllerOffset,\r
+ static_cast<Vst::ParamID> (numElementsInArray (parameterToMidiController))));\r
+ }\r
+\r
//==============================================================================\r
IPlugView* PLUGIN_API createView (const char* name) override\r
{\r
}\r
\r
//==============================================================================\r
- void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) override { beginEdit ((Vst::ParamID) index); }\r
+ void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) override { beginEdit (getVSTParamIDForIndex (index)); }\r
\r
void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) override\r
{\r
// NB: Cubase has problems if performEdit is called without setParamNormalized\r
- EditController::setParamNormalized ((Vst::ParamID) index, (double) newValue);\r
- performEdit ((Vst::ParamID) index, (double) newValue);\r
+ EditController::setParamNormalized (getVSTParamIDForIndex (index), (double) newValue);\r
+ performEdit (getVSTParamIDForIndex (index), (double) newValue);\r
}\r
\r
- void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) override { endEdit ((Vst::ParamID) index); }\r
+ void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) override { endEdit (getVSTParamIDForIndex (index)); }\r
\r
void audioProcessorChanged (AudioProcessor*) override\r
{\r
+ if (AudioProcessor* pluginInstance = getPluginInstance())\r
+ {\r
+ if (pluginInstance->getNumPrograms() > 1)\r
+ EditController::setParamNormalized (paramPreset, static_cast<Vst::ParamValue> (pluginInstance->getCurrentProgram())\r
+ / static_cast<Vst::ParamValue> (pluginInstance->getNumPrograms() - 1));\r
+ }\r
+\r
if (componentHandler != nullptr)\r
componentHandler->restartComponent (Vst::kLatencyChanged | Vst::kParamValuesChanged);\r
}\r
}\r
\r
private:\r
+\r
+ friend class JuceVST3Component;\r
+\r
//==============================================================================\r
ComSmartPtr<JuceAudioProcessor> audioProcessor;\r
ScopedJuceInitialiser_GUI libraryInitialiser;\r
};\r
\r
enum { numMIDIChannels = 16 };\r
- int parameterToMidiControllerOffset;\r
+ Vst::ParamID parameterToMidiControllerOffset;\r
MidiController parameterToMidiController[numMIDIChannels * Vst::kCountCtrlNumber];\r
- int midiControllerToParameter[numMIDIChannels][Vst::kCountCtrlNumber];\r
+ Vst::ParamID midiControllerToParameter[numMIDIChannels][Vst::kCountCtrlNumber];\r
+\r
+ //==============================================================================\r
+ #if ! JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ bool usingManagedParameter;\r
+ Array<Vst::ParamID> vstParamIDs;\r
+ #endif\r
+ Vst::ParamID bypassParamID;\r
+\r
\r
//==============================================================================\r
void setupParameters()\r
{\r
pluginInstance->addListener (this);\r
\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ const bool usingManagedParameter = false;\r
+ #endif\r
+\r
if (parameters.getParameterCount() <= 0)\r
{\r
const int numParameters = pluginInstance->getNumParameters();\r
\r
+ #if ! JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ usingManagedParameter = (pluginInstance->getParameters().size() == numParameters);\r
+ #endif\r
+\r
for (int i = 0; i < numParameters; ++i)\r
- parameters.addParameter (new Param (*pluginInstance, i));\r
+ {\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ const Vst::ParamID vstParamID = static_cast<Vst::ParamID> (i);\r
+ #else\r
+ const Vst::ParamID vstParamID = generateVSTParamIDForIndex (pluginInstance, i);\r
+ vstParamIDs.add (vstParamID);\r
+ #endif\r
+\r
+ parameters.addParameter (new Param (*pluginInstance, i, vstParamID));\r
+ }\r
\r
- parameters.addParameter (new BypassParam (*pluginInstance, numParameters));\r
+ bypassParamID = static_cast<Vst::ParamID> (usingManagedParameter ? paramBypass : numParameters);\r
+ parameters.addParameter (new BypassParam (*pluginInstance, bypassParamID));\r
+\r
+ if (pluginInstance->getNumPrograms() > 1)\r
+ parameters.addParameter (new ProgramChangeParameter (*pluginInstance));\r
}\r
\r
#if JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS\r
- // (NB: the +1 is to account for the bypass parameter)\r
- initialiseMidiControllerMappings (pluginInstance->getNumParameters() + 1);\r
+ parameterToMidiControllerOffset = static_cast<Vst::ParamID> (usingManagedParameter ? paramMidiControllerOffset\r
+ : parameters.getParameterCount());\r
+\r
+ initialiseMidiControllerMappings ();\r
#endif\r
\r
audioProcessorChanged (pluginInstance);\r
}\r
}\r
\r
- void initialiseMidiControllerMappings (const int numVstParameters)\r
+ void initialiseMidiControllerMappings ()\r
{\r
- parameterToMidiControllerOffset = numVstParameters;\r
-\r
for (int c = 0, p = 0; c < numMIDIChannels; ++c)\r
{\r
for (int i = 0; i < Vst::kCountCtrlNumber; ++i, ++p)\r
{\r
- midiControllerToParameter[c][i] = p + parameterToMidiControllerOffset;\r
+ midiControllerToParameter[c][i] = static_cast<Vst::ParamID> (p) + parameterToMidiControllerOffset;\r
parameterToMidiController[p].channel = c;\r
parameterToMidiController[p].ctrlNumber = i;\r
\r
parameters.addParameter (new Vst::Parameter (toString ("MIDI CC " + String (c) + "|" + String (i)),\r
- (Vst::ParamID) (p + parameterToMidiControllerOffset), 0, 0, 0,\r
- Vst::ParameterInfo::kCanAutomate, Vst::kRootUnitId));\r
+ static_cast<Vst::ParamID> (p) + parameterToMidiControllerOffset, 0, 0, 0,\r
+ Vst::ParameterInfo::kCanAutomate, Vst::kRootUnitId));\r
}\r
}\r
}\r
}\r
}\r
\r
+ //==============================================================================\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ inline Vst::ParamID getVSTParamIDForIndex (int paramIndex) const noexcept { return static_cast<Vst::ParamID> (paramIndex); }\r
+ #else\r
+ static Vst::ParamID generateVSTParamIDForIndex (AudioProcessor* const pluginFilter, int paramIndex)\r
+ {\r
+ jassert (pluginFilter != nullptr);\r
+\r
+ const int n = pluginFilter->getNumParameters();\r
+ const bool managedParameter = (pluginFilter->getParameters().size() == n);\r
+\r
+ if (isPositiveAndBelow (paramIndex, n))\r
+ {\r
+ const String& juceParamID = pluginFilter->getParameterID (paramIndex);\r
+ return managedParameter ? static_cast<Vst::ParamID> (juceParamID.hashCode())\r
+ : static_cast<Vst::ParamID> (juceParamID.getIntValue());\r
+ }\r
+\r
+ return static_cast<Vst::ParamID> (-1);\r
+ }\r
+\r
+ inline Vst::ParamID getVSTParamIDForIndex (int paramIndex) const noexcept\r
+ {\r
+ return usingManagedParameter ? vstParamIDs.getReference (paramIndex)\r
+ : static_cast<Vst::ParamID> (paramIndex);\r
+ }\r
+ #endif\r
+\r
//==============================================================================\r
class JuceVST3Editor : public Vst::EditorView\r
{\r
return kResultFalse;\r
}\r
\r
- tresult PLUGIN_API canResize() override { return kResultTrue; }\r
+ tresult PLUGIN_API canResize() override\r
+ {\r
+ if (component != nullptr)\r
+ if (AudioProcessorEditor* editor = component->pluginEditor)\r
+ return editor->isResizable() ? kResultTrue : kResultFalse;\r
+\r
+ return kResultFalse;\r
+ }\r
\r
tresult PLUGIN_API checkSizeConstraint (ViewRect* rectToCheck) override\r
{\r
if (rectToCheck != nullptr && component != nullptr)\r
{\r
- rectToCheck->right = rectToCheck->left + component->getWidth();\r
- rectToCheck->bottom = rectToCheck->top + component->getHeight();\r
+ // checkSizeConstraint\r
+ Rectangle<int> juceRect = Rectangle<int>::leftTopRightBottom (rectToCheck->left, rectToCheck->top,\r
+ rectToCheck->right, rectToCheck->bottom);\r
+ if (AudioProcessorEditor* editor = component->pluginEditor)\r
+ if (ComponentBoundsConstrainer* constrainer = editor->getConstrainer())\r
+ juceRect.setSize (jlimit (constrainer->getMinimumWidth(), constrainer->getMaximumWidth(), juceRect.getWidth()),\r
+ jlimit (constrainer->getMinimumHeight(), constrainer->getMaximumHeight(), juceRect.getHeight()));\r
+\r
+ rectToCheck->right = rectToCheck->left + juceRect.getWidth();\r
+ rectToCheck->bottom = rectToCheck->top + juceRect.getHeight();\r
+\r
return kResultTrue;\r
}\r
\r
{\r
public:\r
ContentWrapperComponent (JuceVST3Editor& editor, AudioProcessor& plugin)\r
- : owner (editor),\r
- pluginEditor (plugin.createEditorIfNeeded())\r
+ : pluginEditor (plugin.createEditorIfNeeded()),\r
+ owner (editor)\r
{\r
setOpaque (true);\r
setBroughtToFrontOnMouseClick (true);\r
}\r
}\r
\r
+ ScopedPointer<AudioProcessorEditor> pluginEditor;\r
+\r
private:\r
JuceVST3Editor& owner;\r
- ScopedPointer<AudioProcessorEditor> pluginEditor;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ContentWrapperComponent)\r
};\r
processSetup.sampleRate = 44100.0;\r
processSetup.symbolicSampleSize = Vst::kSample32;\r
\r
- vstBypassParameterId = pluginInstance->getNumParameters();\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ vstBypassParameterId = static_cast<Vst::ParamID> (pluginInstance->getNumParameters());\r
+ #else\r
+ cacheParameterIDs();\r
+ #endif\r
\r
pluginInstance->setPlayHead (this);\r
}\r
{\r
if (listIndex == 0)\r
{\r
- info.id = paramPreset;\r
+ info.id = JuceVST3EditController::paramPreset;\r
info.programCount = (Steinberg::int32) getPluginInstance().getNumPrograms();\r
\r
toString128 (info.name, TRANS("Factory Presets"));\r
\r
tresult PLUGIN_API getProgramName (Vst::ProgramListID listId, Steinberg::int32 programIndex, Vst::String128 name) override\r
{\r
- if (listId == paramPreset\r
+ if (listId == JuceVST3EditController::paramPreset\r
&& isPositiveAndBelow ((int) programIndex, getPluginInstance().getNumPrograms()))\r
{\r
toString128 (name, getPluginInstance().getProgramName ((int) programIndex));\r
info.flags = Vst::BusInfo::kDefaultActive;\r
\r
#if JucePlugin_WantsMidiInput\r
- if (dir == Vst::kInput)\r
+ if (dir == Vst::kInput && index == 0)\r
{\r
info.mediaType = Vst::kEvent;\r
info.direction = dir;\r
#endif\r
\r
#if JucePlugin_ProducesMidiOutput\r
- if (dir == Vst::kOutput)\r
+ if (dir == Vst::kOutput && index == 0)\r
{\r
info.mediaType = Vst::kEvent;\r
info.direction = dir;\r
\r
if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue)\r
{\r
- const int id = (int) paramQueue->getParameterId();\r
+ const Vst::ParamID vstParamID = paramQueue->getParameterId();\r
\r
- if (isPositiveAndBelow (id, pluginInstance->getNumParameters()))\r
- pluginInstance->setParameter (id, static_cast<float> (value));\r
- else if (id == vstBypassParameterId)\r
+ if (vstParamID == vstBypassParameterId)\r
setBypassed (static_cast<float> (value) != 0.0f);\r
#if JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS\r
- else\r
- addParameterChangeToMidiBuffer (offsetSamples, id, value);\r
+ else if (juceVST3EditController->isMidiControllerParamID (vstParamID))\r
+ addParameterChangeToMidiBuffer (offsetSamples, vstParamID, value);\r
#endif\r
+ else if (vstParamID == JuceVST3EditController::paramPreset)\r
+ {\r
+ const int numPrograms = pluginInstance->getNumPrograms();\r
+ const int programValue = roundToInt (value * numPrograms);\r
+\r
+ if (numPrograms > 1 && isPositiveAndBelow (programValue, numPrograms)\r
+ && programValue != pluginInstance->getCurrentProgram())\r
+ pluginInstance->setCurrentProgram (programValue);\r
+ }\r
+ else\r
+ {\r
+ const int index = getJuceIndexForVSTParamID (vstParamID);\r
+ if (isPositiveAndBelow (index, pluginInstance->getNumParameters()))\r
+ pluginInstance->setParameter (index, static_cast<float> (value));\r
+ }\r
}\r
}\r
}\r
}\r
\r
- void addParameterChangeToMidiBuffer (const Steinberg::int32 offsetSamples, const int id, const double value)\r
+ void addParameterChangeToMidiBuffer (const Steinberg::int32 offsetSamples, const Vst::ParamID id, const double value)\r
{\r
// If the parameter is mapped to a MIDI CC message then insert it into the midiBuffer.\r
int channel, ctrlNumber;\r
\r
ScopedJuceInitialiser_GUI libraryInitialiser;\r
\r
- int vstBypassParameterId;\r
+ #if ! JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ bool usingManagedParameter;\r
+ Array<Vst::ParamID> vstParamIDs;\r
+ HashMap<int32, int> paramMap;\r
+ #endif\r
+ Vst::ParamID vstBypassParameterId;\r
\r
static const char* kJucePrivateDataIdentifier;\r
\r
return AudioBusPointerHelper<FloatType>::impl (data);\r
}\r
\r
- //==============================================================================\r
- enum InternalParameters\r
- {\r
- paramPreset = 'prst'\r
- };\r
-\r
void preparePlugin (double sampleRate, int bufferSize)\r
{\r
AudioProcessor& p = getPluginInstance();\r
p.prepareToPlay (sampleRate, bufferSize);\r
}\r
\r
+ //==============================================================================\r
+ #if JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ inline Vst::ParamID getVSTParamIDForIndex (int paramIndex) const noexcept { return static_cast<Vst::ParamID> (paramIndex); }\r
+ inline int getJuceIndexForVSTParamID (Vst::ParamID paramID) const noexcept { return static_cast<int> (paramID); }\r
+ #else\r
+ void cacheParameterIDs()\r
+ {\r
+ const int numParameters = pluginInstance->getNumParameters();\r
+ usingManagedParameter = (pluginInstance->getParameters().size() == numParameters);\r
+\r
+ vstBypassParameterId = static_cast<Vst::ParamID> (usingManagedParameter ? JuceVST3EditController::paramBypass : numParameters);\r
+\r
+ for (int i = 0; i < numParameters; ++i)\r
+ {\r
+ const Vst::ParamID paramID = JuceVST3EditController::generateVSTParamIDForIndex (pluginInstance, i);\r
+\r
+ vstParamIDs.add (paramID);\r
+ paramMap.set (static_cast<int32> (paramID), i);\r
+ }\r
+ }\r
+\r
+ inline Vst::ParamID getVSTParamIDForIndex (int paramIndex) const noexcept\r
+ {\r
+ return usingManagedParameter ? vstParamIDs.getReference (paramIndex)\r
+ : static_cast<Vst::ParamID> (paramIndex);\r
+ }\r
+\r
+ inline int getJuceIndexForVSTParamID (Vst::ParamID paramID) const noexcept\r
+ {\r
+ return usingManagedParameter ? paramMap[static_cast<int32> (paramID)]\r
+ : static_cast<int> (paramID);\r
+ }\r
+ #endif\r
+\r
//==============================================================================\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceVST3Component)\r
};\r
// The VST3 plugin entry point.\r
JUCE_EXPORTED_FUNCTION IPluginFactory* PLUGIN_API GetPluginFactory()\r
{\r
- JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST3);\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST3;\r
\r
#if JUCE_WINDOWS\r
// Cunning trick to force this function to be exported. Life's too short to\r
\r
ID: juce_audio_plugin_client\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE audio plugin wrapper classes\r
description: Classes for building VST, VST3, AudioUnit, AAX and RTAS plugins.\r
website: http://www.juce.com/juce\r
#include <juce_audio_basics/juce_audio_basics.h>\r
#include <juce_audio_processors/juce_audio_processors.h>\r
\r
+/** Config: JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+\r
+ Enable this if you want to force JUCE to use a continuous parameter\r
+ index to identify a parameter in a DAW (this was the default in old\r
+ versions of JUCE). This is index is usually used by the DAW to save\r
+ automation data and enabling this may mess up user's DAW projects.\r
+*/\r
+#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS\r
+ #define JUCE_FORCE_USE_LEGACY_PARAM_IDS 0\r
+#endif\r
+\r
namespace juce\r
{\r
#include "utility/juce_PluginHostType.h"\r
--- /dev/null
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2015 - ROLI Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found at: www.gnu.org/licenses
+
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ ------------------------------------------------------------------------------
+
+ To release a closed-source product which uses JUCE, commercial licenses are
+ available: visit www.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#define UseExtendedThingResource 1
+#include <AudioUnit/AudioUnit.r>
+
+//==============================================================================
+/* The AppConfig.h file should be a file in your project, containing info to describe the
+ plugin's name, type, etc. The introjucer will generate this file automatically for you.
+
+ You may need to adjust the include path of your project to make sure it can be
+ found by this include statement. (Don't hack this file to change the include path)
+*/
+#include "AppConfig.h"
+
+
+//==============================================================================
+// component resources for Audio Unit
+#define RES_ID 1000
+#define COMP_TYPE JucePlugin_AUMainType
+#define COMP_SUBTYPE JucePlugin_AUSubType
+#define COMP_MANUF JucePlugin_AUManufacturerCode
+#define VERSION JucePlugin_VersionCode
+#define NAME JucePlugin_Manufacturer ": " JucePlugin_Name
+#define DESCRIPTION JucePlugin_Desc
+#define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry"
+
+#include "AUResources.r"
+
+//==============================================================================
+// component resources for Audio Unit Carbon View
+
+#ifndef BUILD_AU_CARBON_UI
+ #define BUILD_AU_CARBON_UI 1
+#endif
+
+#if BUILD_AU_CARBON_UI
+ #define RES_ID 2000
+ #define COMP_TYPE kAudioUnitCarbonViewComponentType
+ #define COMP_SUBTYPE JucePlugin_AUSubType
+ #define COMP_MANUF JucePlugin_AUManufacturerCode
+ #define VERSION JucePlugin_VersionCode
+ #define NAME JucePlugin_Manufacturer ": " JucePlugin_Name " View"
+ #define DESCRIPTION NAME
+ #define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "ViewEntry"
+
+ #include "AUResources.r"
+#endif
--- /dev/null
+
+/*
+ This dummy file is added to the resources section of the project to
+ force XCode to create some resources for the dpm. If there aren't any
+ resources, PT will refuse to load the plugin..
+*/
#endif\r
\r
#include "Standalone/juce_StandaloneFilterApp.cpp"\r
+\r
+#if ! JUCE_USE_CUSTOM_AU3_STANDALONE_APP\r
+ START_JUCE_APPLICATION (StandaloneFilterApp);\r
+#endif\r
AudioBusArray& getFilterBus (bool inputBus) noexcept { return inputBus ? processor.busArrangement.inputBuses : processor.busArrangement.outputBuses; }\r
const AudioBusArray& getFilterBus (bool inputBus) const noexcept { return inputBus ? processor.busArrangement.inputBuses : processor.busArrangement.outputBuses; }\r
int getBusCount (bool inputBus) const noexcept { return getFilterBus (inputBus).size(); }\r
- AudioChannelSet getChannelSet (bool inputBus, int bus) noexcept { return getFilterBus (inputBus).getReference (bus).channels; }\r
+ AudioChannelSet getChannelSet (bool inp, int bus) noexcept { return isPositiveAndBelow (bus, getBusCount (inp)) ? getFilterBus (inp).getReference (bus).channels : AudioChannelSet(); }\r
int getNumChannels (bool inp, int bus) const noexcept { return isPositiveAndBelow (bus, getBusCount (inp)) ? getFilterBus (inp).getReference (bus).channels.size() : 0; }\r
bool isBusEnabled (bool inputBus, int bus) const noexcept { return (getNumChannels (inputBus, bus) > 0); }\r
bool hasInputs (int bus) const noexcept { return isBusEnabled (true, bus); }\r
==============================================================================\r
*/\r
\r
-#ifndef DOXYGEN\r
- // @internal\r
- extern JUCE_API int* jucePlugInClientCurrentWrapperType;\r
-\r
- // this is ugly hack is needed by juce_getExecutableFile to have a wrapper\r
- // dependent symbol\r
- #define JUCE_DEFINE_WRAPPER_TYPE(x) JUCE_API int jucePlugInClientCurrentWrapperType_ ## x = static_cast<int> (AudioProcessor::x);\r
- #define JUCE_DECLARE_WRAPPER_TYPE(x) jucePlugInClientCurrentWrapperType = &jucePlugInClientCurrentWrapperType_ ## x;\r
-\r
-#endif\r
-\r
-\r
//==============================================================================\r
class PluginHostType\r
{\r
\r
@see AudioProcessor::wrapperType\r
*/\r
- static AudioProcessor::WrapperType getPluginLoadedAs() noexcept\r
- {\r
- if (jucePlugInClientCurrentWrapperType != nullptr)\r
- return static_cast<AudioProcessor::WrapperType> (*jucePlugInClientCurrentWrapperType);\r
-\r
- return AudioProcessor::wrapperType_Undefined;\r
- }\r
+ static AudioProcessor::WrapperType getPluginLoadedAs() noexcept { return jucePlugInClientCurrentWrapperType; }\r
\r
//==============================================================================\r
+\r
+ #ifndef DOXYGEN\r
+ // @internal\r
+ static AudioProcessor::WrapperType jucePlugInClientCurrentWrapperType;\r
+ #endif\r
+\r
private:\r
static HostType getHostType()\r
{\r
\r
namespace juce\r
{\r
- int* jucePlugInClientCurrentWrapperType = nullptr;\r
+ AudioProcessor::WrapperType PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_Undefined;\r
}\r
\r
#if _MSC_VER || JUCE_MINGW\r
// you should only call this method once!\r
for (int i = formats.size(); --i >= 0;)\r
{\r
- #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WIN || JUCE_LINUX)\r
+ #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_IOS)\r
jassert (dynamic_cast<VSTPluginFormat*> (formats[i]) == nullptr);\r
#endif\r
\r
- #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WIN)\r
+ #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS)\r
jassert (dynamic_cast<VST3PluginFormat*> (formats[i]) == nullptr);\r
#endif\r
\r
formats.add (new AudioUnitPluginFormat());\r
#endif\r
\r
- #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WIN || JUCE_LINUX)\r
+ #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_IOS)\r
formats.add (new VSTPluginFormat());\r
#endif\r
\r
- #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WIN)\r
+ #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS)\r
formats.add (new VST3PluginFormat());\r
#endif\r
\r
#endif\r
\r
#ifndef JUCE_SUPPORTS_AUv3\r
- #if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES && defined (MAC_OS_X_VERSION_MIN_REQUIRED) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8) && __OBJC2__\r
+ #if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES && __OBJC2__ \\r
+ && ((defined (MAC_OS_X_VERSION_MIN_REQUIRED) && defined (MAC_OS_X_VERSION_10_11) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11)) \\r
+ || (defined (__IPHONE_OS_VERSION_MIN_REQUIRED) && defined (__IPHONE_9_0) && (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0)))\r
#define JUCE_SUPPORTS_AUv3 1\r
#else\r
#define JUCE_SUPPORTS_AUv3 0\r
jassert (AudioUnitFormatHelpers::insideCallback.get() == 0);\r
#endif\r
\r
- #if JUCE_MAC\r
- if (eventListenerRef != 0)\r
- {\r
- AUListenerDispose (eventListenerRef);\r
- eventListenerRef = 0;\r
- }\r
- #endif\r
-\r
if (audioUnit != nullptr)\r
{\r
- if (prepared)\r
- releaseResources();\r
-\r
struct AUDeleter : public CallbackMessage\r
{\r
- AUDeleter (AudioComponentInstance& inInstance, WaitableEvent& inEvent)\r
+ AUDeleter (AudioUnitPluginInstance& inInstance, WaitableEvent& inEvent)\r
: auInstance (inInstance), completionSignal (inEvent)\r
{}\r
\r
void messageCallback() override\r
{\r
- AudioComponentInstanceDispose (auInstance);\r
- auInstance = nullptr;\r
+ auInstance.cleanup();\r
completionSignal.signal();\r
}\r
\r
- AudioComponentInstance& auInstance;\r
+ AudioUnitPluginInstance& auInstance;\r
WaitableEvent& completionSignal;\r
};\r
\r
if (MessageManager::getInstance()->isThisTheMessageThread())\r
{\r
- AudioComponentInstanceDispose (audioUnit);\r
- audioUnit = nullptr;\r
+ cleanup();\r
}\r
else\r
{\r
WaitableEvent completionEvent;\r
- (new AUDeleter (audioUnit, completionEvent))->post();\r
+ (new AUDeleter (*this, completionEvent))->post();\r
completionEvent.wait();\r
}\r
}\r
}\r
\r
+ // called from the destructer above\r
+ void cleanup()\r
+ {\r
+ #if JUCE_MAC\r
+ if (eventListenerRef != 0)\r
+ {\r
+ AUListenerDispose (eventListenerRef);\r
+ eventListenerRef = 0;\r
+ }\r
+ #endif\r
+\r
+ if (prepared)\r
+ releaseResources();\r
+\r
+ AudioComponentInstanceDispose (audioUnit);\r
+ audioUnit = nullptr;\r
+ }\r
+\r
bool initialise (double rate, int blockSize)\r
{\r
updateNumChannels();\r
case AudioChannelSet::surround: return kSpeakerS;\r
case AudioChannelSet::leftRearSurround: return kSpeakerSl;\r
case AudioChannelSet::rightRearSurround: return kSpeakerSr;\r
- case AudioChannelSet::topMiddle: return kSpeakerTm;\r
+ case AudioChannelSet::topMiddle: return (1 << 11); /* kSpeakerTm */\r
case AudioChannelSet::topFrontLeft: return kSpeakerTfl;\r
case AudioChannelSet::topFrontCentre: return kSpeakerTfc;\r
case AudioChannelSet::topFrontRight: return kSpeakerTfr;\r
case kSpeakerS: return AudioChannelSet::surround;\r
case kSpeakerSl: return AudioChannelSet::leftRearSurround;\r
case kSpeakerSr: return AudioChannelSet::rightRearSurround;\r
- case kSpeakerTm: return AudioChannelSet::topMiddle;\r
+ case (1 << 11): return AudioChannelSet::topMiddle; /* kSpeakerTm */\r
case kSpeakerTfl: return AudioChannelSet::topFrontLeft;\r
case kSpeakerTfc: return AudioChannelSet::topFrontCentre;\r
case kSpeakerTfr: return AudioChannelSet::topFrontRight;\r
#include <pluginterfaces/vst/ivstunits.h>\r
#include <pluginterfaces/vst/ivstmidicontrollers.h>\r
#include <public.sdk/source/common/memorystream.h>\r
+ #include <public.sdk/source/vst/vsteditcontroller.h>\r
#else\r
#include <base/source/baseiids.cpp>\r
#include <base/source/fatomic.cpp>\r
#pragma clang diagnostic pop\r
#endif\r
\r
+#if JUCE_WINDOWS\r
+ #include <windows.h>\r
+#endif\r
+\r
//==============================================================================\r
#undef ASSERT\r
#undef WARNING\r
==============================================================================\r
*/\r
\r
-#if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WIN)\r
+#if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS)\r
\r
} // namespace juce\r
\r
-#if JucePlugin_Build_VST3\r
- #undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY\r
- #define JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY 1\r
-#endif\r
-\r
#include <map>\r
#include "juce_VST3Headers.h"\r
\r
-#undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY\r
-\r
namespace juce\r
{\r
\r
return kResultFalse;\r
\r
owner->sendParamChangeMessageToListeners (index, (float) valueNormalized);\r
- return owner->editController->setParamNormalized (paramID, valueNormalized);\r
+\r
+ {\r
+ Steinberg::int32 eventIndex;\r
+ owner->inputParameterChanges->addParameterData (paramID, eventIndex)->addPoint (0, valueNormalized, eventIndex);\r
+ }\r
+\r
+ // did the plug-in already update the parameter internally\r
+ if (owner->editController->getParamNormalized (paramID) != (float) valueNormalized)\r
+ return owner->editController->setParamNormalized (paramID, valueNormalized);\r
+\r
+ return kResultTrue;\r
}\r
\r
tresult PLUGIN_API endEdit (Vst::ParamID paramID) override\r
\r
tresult PLUGIN_API notifyProgramListChange (Vst::ProgramListID, Steinberg::int32) override\r
{\r
- jassertfalse;\r
- return kResultFalse;\r
+ owner->syncProgramNames();\r
+ return kResultTrue;\r
}\r
\r
//==============================================================================\r
if (GetFactoryProc proc = (GetFactoryProc) getFunction ("GetPluginFactory"))\r
factory = proc();\r
\r
- jassert (factory != nullptr); // The plugin NEEDS to provide a factory to be able to be called a VST3!\r
+ // The plugin NEEDS to provide a factory to be able to be called a VST3!\r
+ // Most likely you are trying to load a 32-bit VST3 from a 64-bit host\r
+ // or vice versa.\r
+ jassert (factory != nullptr);\r
return factory;\r
}\r
\r
: module (handle),\r
numInputAudioBusses (0),\r
numOutputAudioBusses (0),\r
+ programParameterID ((Vst::ParamID) -1),\r
inputParameterChanges (new ParamValueQueueList()),\r
outputParameterChanges (new ParamValueQueueList()),\r
midiInputs (new MidiEventList()),\r
grabInformationObjects();\r
synchroniseStates();\r
interconnectComponentAndController();\r
+ syncProgramNames();\r
setupIO();\r
return true;\r
}\r
}\r
\r
//==============================================================================\r
- int getNumPrograms() override { return getProgramListInfo (0).programCount; }\r
- int getCurrentProgram() override { return 0; }\r
- void setCurrentProgram (int) override {}\r
+ int getNumPrograms() override { return programNames.size(); }\r
+ const String getProgramName (int index) override { return programNames[index]; }\r
+ int getCurrentProgram() override { return jmax (0, (int) editController->getParamNormalized (programParameterID) * (programNames.size() - 1)); }\r
void changeProgramName (int, const String&) override {}\r
\r
- const String getProgramName (int index) override\r
+ void setCurrentProgram (int program) override\r
{\r
- Vst::String128 result;\r
- unitInfo->getProgramName (getProgramListInfo (0).id, index, result);\r
- return toString (result);\r
+ if (programNames.size() > 0 && editController != nullptr)\r
+ {\r
+ Vst::ParamValue value =\r
+ static_cast<Vst::ParamValue> (program) / static_cast<Vst::ParamValue> (programNames.size());\r
+\r
+ editController->setParamNormalized (programParameterID, value);\r
+ Steinberg::int32 index;\r
+ inputParameterChanges->addParameterData (programParameterID, index)->addPoint (0, value, index);\r
+ }\r
}\r
\r
//==============================================================================\r
void reset() override\r
{\r
- if (component != nullptr)\r
+ if (component != nullptr && processor != nullptr)\r
{\r
+ processor->setProcessing (false);\r
component->setActive (false);\r
+\r
component->setActive (true);\r
+ processor->setProcessing (true);\r
}\r
}\r
\r
class ParamValueQueueList : public Vst::IParameterChanges\r
{\r
public:\r
- ParamValueQueueList() {}\r
+ ParamValueQueueList() : numQueuesUsed (0) {}\r
virtual ~ParamValueQueueList() {}\r
\r
JUCE_DECLARE_VST3_COM_REF_METHODS\r
JUCE_DECLARE_VST3_COM_QUERY_METHODS\r
\r
- Steinberg::int32 PLUGIN_API getParameterCount() override { return (Steinberg::int32) queues.size(); }\r
- Vst::IParamValueQueue* PLUGIN_API getParameterData (Steinberg::int32 index) override { return queues[(int) index]; }\r
+ Steinberg::int32 PLUGIN_API getParameterCount() override { return numQueuesUsed; }\r
+ Vst::IParamValueQueue* PLUGIN_API getParameterData (Steinberg::int32 index) override { return isPositiveAndBelow (static_cast<int> (index), numQueuesUsed) ? queues[(int) index] : nullptr; }\r
\r
Vst::IParamValueQueue* PLUGIN_API addParameterData (const Vst::ParamID& id, Steinberg::int32& index) override\r
{\r
- for (int i = queues.size(); --i >= 0;)\r
+ for (int i = numQueuesUsed; --i >= 0;)\r
{\r
if (queues.getUnchecked (i)->getParameterId() == id)\r
{\r
}\r
}\r
\r
- index = getParameterCount();\r
- return queues.add (new ParamValueQueue (id));\r
+ index = numQueuesUsed++;\r
+ ParamValueQueue* valueQueue = (index < queues.size() ? queues[index]\r
+ : queues.add (new ParamValueQueue));\r
+\r
+ valueQueue->clear();\r
+ valueQueue->setParamID (id);\r
+\r
+ return valueQueue;\r
}\r
\r
void clearAllQueues() noexcept\r
{\r
- for (int i = queues.size(); --i >= 0;)\r
- queues.getUnchecked (i)->clear();\r
+ numQueuesUsed = 0;\r
}\r
\r
struct ParamValueQueue : public Vst::IParamValueQueue\r
{\r
- ParamValueQueue (Vst::ParamID parameterID) : paramID (parameterID)\r
+ ParamValueQueue () : paramID (static_cast<Vst::ParamID> (-1))\r
{\r
points.ensureStorageAllocated (1024);\r
}\r
\r
virtual ~ParamValueQueue() {}\r
\r
+ void setParamID (Vst::ParamID pID) noexcept { paramID = pID; }\r
+\r
JUCE_DECLARE_VST3_COM_REF_METHODS\r
JUCE_DECLARE_VST3_COM_QUERY_METHODS\r
\r
};\r
\r
Atomic<int> refCount;\r
- const Vst::ParamID paramID;\r
+ Vst::ParamID paramID;\r
Array<ParamPoint> points;\r
CriticalSection pointLock;\r
\r
\r
Atomic<int> refCount;\r
OwnedArray<ParamValueQueue> queues;\r
+ int numQueuesUsed;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ParamValueQueueList)\r
};\r
VST3FloatAndDoubleBusMapComposite inputBusMap, outputBusMap;\r
Array<Vst::AudioBusBuffers> inputBusses, outputBusses;\r
\r
+ StringArray programNames;\r
+ Vst::ParamID programParameterID;\r
+\r
//==============================================================================\r
template <typename Type>\r
static void appendStateFrom (XmlElement& head, ComSmartPtr<Type>& object, const String& identifier)\r
\r
if (componentConnection != nullptr && editControllerConnection != nullptr)\r
{\r
- warnOnFailure (editControllerConnection->connect (componentConnection));\r
warnOnFailure (componentConnection->connect (editControllerConnection));\r
+ warnOnFailure (editControllerConnection->connect (componentConnection));\r
}\r
}\r
\r
Vst::BusInfo busInfo;\r
busInfo.mediaType = forAudio ? Vst::kAudio : Vst::kEvent;\r
busInfo.direction = forInput ? Vst::kInput : Vst::kOutput;\r
+ busInfo.channelCount = 0;\r
\r
component->getBusInfo (busInfo.mediaType, busInfo.direction,\r
(Steinberg::int32) index, busInfo);\r
return paramInfo;\r
}\r
\r
+ void syncProgramNames ()\r
+ {\r
+ programNames.clear();\r
+\r
+ if (processor == nullptr || editController == nullptr)\r
+ return;\r
+\r
+ Vst::UnitID programUnitID;\r
+ Vst::ParameterInfo paramInfo = { 0 };\r
+\r
+ {\r
+ int idx, num = editController->getParameterCount();\r
+ for (idx = 0; idx < num; ++idx)\r
+ if (editController->getParameterInfo (idx, paramInfo) == kResultOk\r
+ && (paramInfo.flags & Steinberg::Vst::ParameterInfo::kIsProgramChange) != 0)\r
+ break;\r
+\r
+ if (idx >= num) return;\r
+\r
+ programParameterID = paramInfo.id;\r
+ programUnitID = paramInfo.unitId;\r
+ }\r
+\r
+ if (unitInfo != nullptr)\r
+ {\r
+ Vst::UnitInfo uInfo = { 0 };\r
+ const int unitCount = unitInfo->getUnitCount();\r
+\r
+ for (int idx = 0; idx < unitCount; ++idx)\r
+ {\r
+ if (unitInfo->getUnitInfo(idx, uInfo) == kResultOk\r
+ && uInfo.id == programUnitID)\r
+ {\r
+ const int programListCount = unitInfo->getProgramListCount();\r
+\r
+ for (int j = 0; j < programListCount; ++j)\r
+ {\r
+ Vst::ProgramListInfo programListInfo = { 0 };\r
+\r
+ if (unitInfo->getProgramListInfo (j, programListInfo) == kResultOk\r
+ && programListInfo.id == uInfo.programListId)\r
+ {\r
+ Vst::String128 name;\r
+\r
+ for (int k = 0; k < programListInfo.programCount; ++k)\r
+ if (unitInfo->getProgramName (programListInfo.id, k, name) == kResultOk)\r
+ programNames.add (toString (name));\r
+\r
+ return;\r
+ }\r
+ }\r
+\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (editController != nullptr\r
+ && paramInfo.stepCount > 0)\r
+ {\r
+ const int numPrograms = paramInfo.stepCount + 1;\r
+ for (int i = 0; i < numPrograms; ++i)\r
+ {\r
+ Vst::String128 programName;\r
+ Vst::ParamValue valueNormalized = static_cast<Vst::ParamValue> (i) / static_cast<Vst::ParamValue> (paramInfo.stepCount);\r
+ if (editController->getParamStringByValue (paramInfo.id, valueNormalized, programName) == kResultOk)\r
+ programNames.add (toString (programName));\r
+ }\r
+ }\r
+ }\r
+\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VST3PluginInstance)\r
};\r
\r
#ifndef JUCE_VST3PLUGINFORMAT_H_INCLUDED\r
#define JUCE_VST3PLUGINFORMAT_H_INCLUDED\r
\r
-#if (JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WIN)) || DOXYGEN\r
+#if (JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS)) || DOXYGEN\r
\r
/**\r
Implements a plugin format for VST3s.\r
==============================================================================\r
*/\r
\r
-#if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WIN || JUCE_LINUX)\r
+#if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_IOS)\r
\r
//==============================================================================\r
#if JUCE_MAC && JUCE_SUPPORT_CARBON\r
{\r
#if JUCE_WINDOWS\r
return timeGetTime() * 1000000.0;\r
- #elif JUCE_LINUX\r
+ #elif JUCE_LINUX || JUCE_IOS\r
timeval micro;\r
gettimeofday (µ, 0);\r
return micro.tv_usec * 1000.0;\r
}\r
\r
//==============================================================================\r
- static ModuleHandle* findOrCreateModule (const File& file)\r
+ static Ptr findOrCreateModule (const File& file)\r
{\r
for (int i = getActiveModules().size(); --i >= 0;)\r
{\r
return module;\r
}\r
\r
- _fpreset(); // (doesn't do any harm)\r
-\r
const IdleCallRecursionPreventer icrp;\r
shellUIDToCreate = 0;\r
+ _fpreset();\r
\r
JUCE_VST_LOG ("Attempting to load VST: " + file.getFullPathName());\r
\r
- ScopedPointer<ModuleHandle> m (new ModuleHandle (file));\r
-\r
- if (! m->open())\r
- m = nullptr;\r
+ Ptr m = new ModuleHandle (file, nullptr);\r
\r
- _fpreset(); // (doesn't do any harm)\r
+ if (m->open())\r
+ {\r
+ _fpreset();\r
+ return m;\r
+ }\r
\r
- return m.release();\r
+ return nullptr;\r
}\r
\r
//==============================================================================\r
- ModuleHandle (const File& f)\r
- : file (f), moduleMain (nullptr), customMain (nullptr)\r
+ ModuleHandle (const File& f, MainCall customMainCall)\r
+ : file (f), moduleMain (customMainCall), customMain (nullptr)\r
#if JUCE_MAC\r
, resHandle (0), bundleRef (0), resFileId (0)\r
#endif\r
{\r
getActiveModules().add (this);\r
\r
- #if JUCE_WINDOWS || JUCE_LINUX\r
+ #if JUCE_WINDOWS || JUCE_LINUX || JUCE_IOS\r
fullParentDirectoryPathName = f.getParentDirectory().getFullPathName();\r
#elif JUCE_MAC\r
FSRef ref;\r
}\r
\r
//==============================================================================\r
-#if JUCE_WINDOWS || JUCE_LINUX\r
- DynamicLibrary module;\r
+ #if ! JUCE_MAC\r
String fullParentDirectoryPathName;\r
+ #endif\r
+\r
+ #if JUCE_WINDOWS || JUCE_LINUX\r
+ DynamicLibrary module;\r
\r
bool open()\r
{\r
+ if (moduleMain != nullptr)\r
+ return true;\r
+\r
pluginName = file.getFileNameWithoutExtension();\r
\r
module.open (file.getFullPathName());\r
return String();\r
}\r
#endif\r
-#else\r
+ #else\r
Handle resHandle;\r
CFBundleRef bundleRef;\r
+\r
+ #if JUCE_MAC\r
+ CFBundleRefNum resFileId;\r
FSSpec parentDirFSSpec;\r
- ResFileRefNum resFileId;\r
+ #endif\r
\r
bool open()\r
{\r
+ if (moduleMain != nullptr)\r
+ return true;\r
+\r
bool ok = false;\r
\r
if (file.hasFileExtension (".vst"))\r
if (pluginName.isEmpty())\r
pluginName = file.getFileNameWithoutExtension();\r
\r
+ #if JUCE_MAC\r
resFileId = CFBundleOpenBundleResourceMap (bundleRef);\r
+ #endif\r
\r
ok = true;\r
\r
Array<File> vstXmlFiles;\r
- file.getChildFile ("Contents")\r
+ file\r
+ #if JUCE_MAC\r
+ .getChildFile ("Contents")\r
.getChildFile ("Resources")\r
+ #endif\r
.findChildFiles (vstXmlFiles, File::findFiles, false, "*.vstxml");\r
\r
if (vstXmlFiles.size() > 0)\r
{\r
if (bundleRef != 0)\r
{\r
+ #if JUCE_MAC\r
CFBundleCloseBundleResourceMap (bundleRef, resFileId);\r
+ #endif\r
\r
if (CFGetRetainCount (bundleRef) == 1)\r
CFBundleUnloadExecutable (bundleRef);\r
eff->dispatcher (eff, effClose, 0, 0, 0, 0);\r
}\r
\r
-#endif\r
+ #endif\r
\r
private:\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModuleHandle)\r
~VSTPluginInstance()\r
{\r
const ScopedLock sl (lock);\r
+ stopTimer();\r
\r
if (effect != nullptr && effect->magic == kEffectMagic)\r
{\r
desc.isInstrument = (effect != nullptr && (effect->flags & effFlagsIsSynth) != 0);\r
}\r
\r
+ bool initialiseEffect (double initialSampleRate, int initialBlockSize)\r
+ {\r
+ if (effect != nullptr)\r
+ {\r
+ effect->resvd2 = (VstIntPtr) (pointer_sized_int) this;\r
+ initialise (initialSampleRate, initialBlockSize);\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+ }\r
+\r
void initialise (double initialSampleRate, int initialBlockSize)\r
{\r
if (initialised || effect == nullptr)\r
wantsMidiMessages = pluginCanDo ("receiveVstMidiEvent") > 0;\r
\r
#if JUCE_MAC && JUCE_SUPPORT_CARBON\r
- usesCocoaNSView = (pluginCanDo ("hasCockosViewAsConfig") & (int) 0xffff0000) == 0xbeef0000;\r
+ usesCocoaNSView = ((unsigned int) pluginCanDo ("hasCockosViewAsConfig") & 0xffff0000ul) == 0xbeef0000ul;\r
#endif\r
\r
setLatencySamples (effect->initialDelay);\r
}\r
\r
//==============================================================================\r
+ #if JUCE_IOS\r
+ bool hasEditor() const override { return false; }\r
+ #else\r
bool hasEditor() const override { return effect != nullptr && (effect->flags & effFlagsHasEditor) != 0; }\r
+ #endif\r
+\r
AudioProcessorEditor* createEditor() override;\r
\r
//==============================================================================\r
};\r
\r
//==============================================================================\r
+#if ! JUCE_IOS\r
class VSTPluginWindow;\r
static Array<VSTPluginWindow*> activeVSTWindows;\r
\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VSTPluginWindow)\r
};\r
-\r
+#endif\r
#if JUCE_MSVC\r
#pragma warning (pop)\r
#endif\r
//==============================================================================\r
AudioProcessorEditor* VSTPluginInstance::createEditor()\r
{\r
+ #if JUCE_IOS\r
+ return nullptr;\r
+ #else\r
return hasEditor() ? new VSTPluginWindow (*this)\r
: nullptr;\r
+ #endif\r
}\r
\r
//==============================================================================\r
\r
result = new VSTPluginInstance (module);\r
\r
- if (result->effect != nullptr)\r
- {\r
- result->effect->resvd2 = (VstIntPtr) (pointer_sized_int) (VSTPluginInstance*) result;\r
- result->initialise (sampleRate, blockSize);\r
- }\r
- else\r
+ if (! result->initialiseEffect (sampleRate, blockSize))\r
result = nullptr;\r
}\r
\r
{\r
const File f (File::createFileWithoutCheckingPath (fileOrIdentifier));\r
\r
- #if JUCE_MAC\r
+ #if JUCE_MAC || JUCE_IOS\r
return f.isDirectory() && f.hasFileExtension (".vst");\r
#elif JUCE_WINDOWS\r
return f.existsAsFile() && f.hasFileExtension (".dll");\r
paths.add (WindowsRegistry::getValue ("HKEY_LOCAL_MACHINE\\Software\\VST\\VSTPluginsPath",\r
programFiles + "\\VstPlugins"));\r
return paths;\r
+ #elif JUCE_IOS\r
+ // on iOS you can only load plug-ins inside the hosts bundle folder\r
+ CFURLRef relativePluginDir = CFBundleCopyBuiltInPlugInsURL (CFBundleGetMainBundle());\r
+ CFURLRef pluginDir = CFURLCopyAbsoluteURL (relativePluginDir);\r
+ CFRelease (relativePluginDir);\r
+\r
+ CFStringRef path = CFURLCopyFileSystemPath (pluginDir, kCFURLPOSIXPathStyle);\r
+ CFRelease (pluginDir);\r
+\r
+ FileSearchPath retval (String (CFStringGetCStringPtr (path, kCFStringEncodingUTF8)));\r
+ CFRelease (path);\r
+\r
+ return retval;\r
#endif\r
}\r
\r
return false;\r
}\r
\r
+AudioPluginInstance* VSTPluginFormat::createCustomVSTFromMainCall (void* entryPointFunction,\r
+ double initialSampleRate, int initialBufferSize)\r
+{\r
+ ModuleHandle::Ptr module = new ModuleHandle (File(), (MainCall) entryPointFunction);\r
+\r
+ if (module->open())\r
+ {\r
+ ScopedPointer<VSTPluginInstance> result (new VSTPluginInstance (module));\r
+\r
+ if (result->initialiseEffect (initialSampleRate, initialBufferSize))\r
+ return result.release();\r
+ }\r
+\r
+ return nullptr;\r
+}\r
+\r
void VSTPluginFormat::setExtraFunctions (AudioPluginInstance* plugin, ExtraFunctions* functions)\r
{\r
ScopedPointer<ExtraFunctions> f (functions);\r
==============================================================================\r
*/\r
\r
-#if (JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WIN || JUCE_LINUX)) || DOXYGEN\r
+#if (JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_IOS)) || DOXYGEN\r
\r
//==============================================================================\r
/**\r
/** Attempts to set a VST's state from a chunk of memory. */\r
static bool setChunkData (AudioPluginInstance* plugin, const void* data, int size, bool isPreset);\r
\r
+ /** Given a suitable function pointer to a VSTPluginMain function, this will attempt to\r
+ instantiate and return a plugin for it.\r
+ */\r
+ static AudioPluginInstance* createCustomVSTFromMainCall (void* entryPointFunction,\r
+ double initialSampleRate,\r
+ int initialBufferSize);\r
+\r
//==============================================================================\r
/** Base class for some extra functions that can be attached to a VST plugin instance. */\r
class ExtraFunctions\r
\r
ID: juce_audio_processors\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE audio processor classes\r
description: Classes for loading and playing VST, AU, or internally-generated audio processors.\r
website: http://www.juce.com/juce\r
channels.setBit (bit);\r
}\r
\r
+void AudioChannelSet::removeChannel (ChannelType newChannel)\r
+{\r
+ const int bit = static_cast<int> (newChannel);\r
+ jassert (bit >= 0 && bit < 1024);\r
+ channels.clearBit (bit);\r
+}\r
+\r
AudioChannelSet AudioChannelSet::disabled() { return AudioChannelSet(); }\r
AudioChannelSet AudioChannelSet::mono() { return AudioChannelSet (1u << centre); }\r
AudioChannelSet AudioChannelSet::stereo() { return AudioChannelSet ((1u << left) | (1u << right)); }\r
/** Adds a channel to the set. */\r
void addChannel (ChannelType newChannelType);\r
\r
+ /** Removes a channel from the set. */\r
+ void removeChannel (ChannelType newChannelType);\r
+\r
/** Returns the number of channels in the set. */\r
int size() const noexcept;\r
\r
- /** Returns the number of channels in the set. */\r
+ /** Returns true if there are no channels in the set. */\r
bool isDisabled() const noexcept { return size() == 0; }\r
\r
/** Returns an array of all the types in this channel set. */\r
/** Returns if this is a channel layout made-up of discrete channels. */\r
bool isDiscreteLayout() const noexcept;\r
\r
+ /** Intersect two channel layouts. */\r
+ void intersect (const AudioChannelSet& other) { channels &= other.channels; }\r
+\r
//==============================================================================\r
bool operator== (const AudioChannelSet&) const noexcept;\r
bool operator!= (const AudioChannelSet&) const noexcept;\r
return String();\r
}\r
\r
+String AudioProcessor::getParameterID (int index)\r
+{\r
+ // Don't use getParamChecked here, as this must also work for legacy plug-ins\r
+ if (AudioProcessorParameterWithID* p = dynamic_cast<AudioProcessorParameterWithID*> (managedParameters[index]))\r
+ return p->paramID;\r
+\r
+ return String (index);\r
+}\r
+\r
String AudioProcessor::getParameterName (int index, int maximumStringLength)\r
{\r
if (AudioProcessorParameter* p = managedParameters[index])\r
}\r
\r
void AudioProcessor::reset() {}\r
-void AudioProcessor::processBlockBypassed (AudioBuffer<float>&, MidiBuffer&) {}\r
-void AudioProcessor::processBlockBypassed (AudioBuffer<double>&, MidiBuffer&) {}\r
+\r
+template <typename floatType>\r
+void AudioProcessor::processBypassed (AudioBuffer<floatType>& buffer, MidiBuffer&)\r
+{\r
+ for (int ch = getMainBusNumInputChannels(); ch < getTotalNumOutputChannels(); ++ch)\r
+ buffer.clear (ch, 0, buffer.getNumSamples());\r
+}\r
+\r
+void AudioProcessor::processBlockBypassed (AudioBuffer<float>& buffer, MidiBuffer& midi) { processBypassed (buffer, midi); }\r
+void AudioProcessor::processBlockBypassed (AudioBuffer<double>& buffer, MidiBuffer& midi) { processBypassed (buffer, midi); }\r
\r
void AudioProcessor::processBlock (AudioBuffer<double>& buffer, MidiBuffer& midiMessages)\r
{\r
*/\r
virtual const String getParameterName (int parameterIndex);\r
\r
+ /** Returns the ID of a particular parameter.\r
+\r
+ The ID is used to communicate the value or mapping of a particular parameter with\r
+ the host. By default this method will simply return a string representation of\r
+ index.\r
+\r
+ NOTE! This method will eventually be deprecated! It's recommended that you use the\r
+ AudioProcessorParameterWithID class instead to manage your parameters.\r
+ */\r
+ virtual String getParameterID (int index);\r
+\r
/** Called by the host to find out the value of one of the filter's parameters.\r
\r
The host will expect the value returned to be between 0 and 1.0.\r
If you want to provide customised short versions of your parameter names that\r
will look better in constrained spaces (e.g. the displays on hardware controller\r
devices or mixing desks) then you should implement this method.\r
- If you don't override it, the default implementation will call getParameterText(int),\r
+ If you don't override it, the default implementation will call getParameterName(int),\r
and truncate the result.\r
\r
NOTE! This method will eventually be deprecated! It's recommended that you use\r
void disableNonMainBuses (bool isInput);\r
void updateSpeakerFormatStrings();\r
\r
+ template <typename floatType>\r
+ void processBypassed (AudioBuffer<floatType>&, MidiBuffer&);\r
+\r
// This method is no longer used - you can delete it from your AudioProcessor classes.\r
JUCE_DEPRECATED_WITH_BODY (virtual bool silenceInProducesSilenceOut() const, { return false; });\r
\r
==============================================================================\r
*/\r
\r
-AudioProcessorEditor::AudioProcessorEditor (AudioProcessor& p) noexcept : processor (p)\r
+AudioProcessorEditor::AudioProcessorEditor (AudioProcessor& p) noexcept : processor (p), constrainer (nullptr)\r
{\r
+ initialise();\r
}\r
\r
-AudioProcessorEditor::AudioProcessorEditor (AudioProcessor* p) noexcept : processor (*p)\r
+AudioProcessorEditor::AudioProcessorEditor (AudioProcessor* p) noexcept : processor (*p), constrainer (nullptr)\r
{\r
// the filter must be valid..\r
jassert (p != nullptr);\r
+ initialise();\r
}\r
\r
AudioProcessorEditor::~AudioProcessorEditor()\r
// if this fails, then the wrapper hasn't called editorBeingDeleted() on the\r
// filter for some reason..\r
jassert (processor.getActiveEditor() != this);\r
+ removeComponentListener (resizeListener);\r
}\r
\r
void AudioProcessorEditor::setControlHighlight (ParameterControlHighlightInfo) {}\r
int AudioProcessorEditor::getControlParameterIndex (Component&) { return -1; }\r
+\r
+void AudioProcessorEditor::initialise()\r
+{\r
+ resizable = false;\r
+\r
+ attachConstrainer (&defaultConstrainer);\r
+ addComponentListener (resizeListener = new AudioProcessorEditorListener (this));\r
+}\r
+\r
+//==============================================================================\r
+void AudioProcessorEditor::setResizable (const bool shouldBeResizable, const bool useBottomRightCornerResizer)\r
+{\r
+ if (shouldBeResizable != resizable)\r
+ {\r
+ resizable = shouldBeResizable;\r
+\r
+ if (! resizable)\r
+ {\r
+ setConstrainer (&defaultConstrainer);\r
+\r
+ if (getWidth() > 0 && getHeight() > 0)\r
+ {\r
+ defaultConstrainer.setSizeLimits (getWidth(), getHeight(), getWidth(), getHeight());\r
+ resized();\r
+ }\r
+ }\r
+ }\r
+\r
+ const bool shouldHaveCornerResizer = (useBottomRightCornerResizer && shouldBeResizable);\r
+ if (shouldHaveCornerResizer != (resizableCorner != nullptr))\r
+ {\r
+ if (shouldHaveCornerResizer)\r
+ {\r
+ Component::addChildComponent (resizableCorner = new ResizableCornerComponent (this, constrainer));\r
+ resizableCorner->setAlwaysOnTop (true);\r
+ }\r
+ else\r
+ resizableCorner = nullptr;\r
+ }\r
+}\r
+\r
+void AudioProcessorEditor::setResizeLimits (const int newMinimumWidth,\r
+ const int newMinimumHeight,\r
+ const int newMaximumWidth,\r
+ const int newMaximumHeight) noexcept\r
+{\r
+ // if you've set up a custom constrainer then these settings won't have any effect..\r
+ jassert (constrainer == &defaultConstrainer || constrainer == nullptr);\r
+\r
+ const bool shouldEnableResize = (newMinimumWidth != newMaximumWidth || newMinimumHeight != newMaximumHeight);\r
+ const bool shouldHaveCornerResizer = (shouldEnableResize != resizable || resizableCorner != nullptr);\r
+\r
+ setResizable (shouldEnableResize, shouldHaveCornerResizer);\r
+\r
+ if (constrainer == nullptr)\r
+ setConstrainer (&defaultConstrainer);\r
+\r
+ defaultConstrainer.setSizeLimits (newMinimumWidth, newMinimumHeight,\r
+ newMaximumWidth, newMaximumHeight);\r
+\r
+ setBoundsConstrained (getBounds());\r
+}\r
+\r
+void AudioProcessorEditor::setConstrainer (ComponentBoundsConstrainer* newConstrainer)\r
+{\r
+ if (constrainer != newConstrainer)\r
+ {\r
+ resizable = true;\r
+ attachConstrainer (newConstrainer);\r
+ }\r
+}\r
+\r
+void AudioProcessorEditor::attachConstrainer (ComponentBoundsConstrainer* newConstrainer)\r
+{\r
+ if (constrainer != newConstrainer)\r
+ {\r
+ constrainer = newConstrainer;\r
+ updatePeer();\r
+ }\r
+}\r
+\r
+void AudioProcessorEditor::setBoundsConstrained (Rectangle<int> newBounds)\r
+{\r
+ if (constrainer != nullptr)\r
+ constrainer->setBoundsForComponent (this, newBounds, false, false, false, false);\r
+ else\r
+ setBounds (newBounds);\r
+}\r
+\r
+void AudioProcessorEditor::editorResized (bool wasResized)\r
+{\r
+ if (wasResized)\r
+ {\r
+ bool resizerHidden = false;\r
+\r
+ if (ComponentPeer* peer = getPeer())\r
+ resizerHidden = peer->isFullScreen() || peer->isKioskMode();\r
+\r
+ if (resizableCorner != nullptr)\r
+ {\r
+ resizableCorner->setVisible (! resizerHidden);\r
+\r
+ const int resizerSize = 18;\r
+ resizableCorner->setBounds (getWidth() - resizerSize,\r
+ getHeight() - resizerSize,\r
+ resizerSize, resizerSize);\r
+ }\r
+\r
+\r
+ if (! resizable)\r
+ {\r
+ if (getWidth() > 0 && getHeight() > 0)\r
+ defaultConstrainer.setSizeLimits (getWidth(), getHeight(),\r
+ getWidth(), getHeight());\r
+ }\r
+ }\r
+}\r
+\r
+void AudioProcessorEditor::updatePeer()\r
+{\r
+ if (isOnDesktop())\r
+ if (ComponentPeer* const peer = getPeer())\r
+ peer->setConstrainer (constrainer);\r
+}\r
#ifndef JUCE_AUDIOPROCESSOREDITOR_H_INCLUDED\r
#define JUCE_AUDIOPROCESSOREDITOR_H_INCLUDED\r
\r
-\r
+class AudioProcessorEditorListener;\r
//==============================================================================\r
/**\r
Base class for the component that acts as the GUI for an AudioProcessor.\r
*/\r
virtual int getControlParameterIndex (Component&);\r
\r
+ //==============================================================================\r
+ /** Make the editor resizable or fixed.\r
+\r
+ @param shouldBeResizable whether it's resizable at all\r
+ @see setResizeLimits, isResizable\r
+ */\r
+ void setResizable (bool shouldBeResizable, bool useBottomRightCornerResizer);\r
+\r
+ /** Returns true if resizing is enabled.\r
+\r
+ @see setResizable\r
+ */\r
+ bool isResizable() const noexcept { return resizable; }\r
+\r
+ /** This sets the maximum and minimum sizes for the window.\r
+\r
+ If the window's current size is outside these limits, it will be resized to\r
+ make sure it's within them.\r
+\r
+ A direct call to setBounds() will bypass any constraint checks, but when the\r
+ window is dragged by the user or resized by other indirect means, the constrainer\r
+ will limit the numbers involved.\r
+\r
+ @see setResizable\r
+ */\r
+ void setResizeLimits (int newMinimumWidth,\r
+ int newMinimumHeight,\r
+ int newMaximumWidth,\r
+ int newMaximumHeight) noexcept;\r
+\r
+\r
+ /** Returns the bounds constrainer object that this window is using.\r
+ You can access this to change its properties.\r
+ */\r
+ ComponentBoundsConstrainer* getConstrainer() noexcept { return constrainer; }\r
+\r
+ /** Sets the bounds-constrainer object to use for resizing and dragging this window.\r
+\r
+ A pointer to the object you pass in will be kept, but it won't be deleted\r
+ by this object, so it's the caller's responsibility to manage it.\r
+\r
+ If you pass a nullptr, then no contraints will be placed on the positioning of the window.\r
+ */\r
+ void setConstrainer (ComponentBoundsConstrainer* newConstrainer);\r
+\r
+ /** Calls the window's setBounds method, after first checking these bounds\r
+ with the current constrainer.\r
+\r
+ @see setConstrainer\r
+ */\r
+ void setBoundsConstrained (Rectangle<int> newBounds);\r
+\r
+ ScopedPointer<ResizableCornerComponent> resizableCorner;\r
+\r
private:\r
+ //==============================================================================\r
+ struct AudioProcessorEditorListener : ComponentListener\r
+ {\r
+ AudioProcessorEditorListener (AudioProcessorEditor* audioEditor) : e (audioEditor) {}\r
+\r
+ void componentMovedOrResized (Component&, bool, bool wasResized) override { e->editorResized (wasResized); }\r
+ void componentParentHierarchyChanged (Component&) override { e->updatePeer(); }\r
+ AudioProcessorEditor* e;\r
+ };\r
+\r
+ //==============================================================================\r
+ void initialise();\r
+ void editorResized (bool wasResized);\r
+ void updatePeer();\r
+ void attachConstrainer (ComponentBoundsConstrainer* newConstrainer);\r
+\r
+ //==============================================================================\r
+ ScopedPointer<AudioProcessorEditorListener> resizeListener;\r
+ bool resizable;\r
+ ComponentBoundsConstrainer defaultConstrainer;\r
+ ComponentBoundsConstrainer* constrainer;\r
+\r
JUCE_DECLARE_NON_COPYABLE (AudioProcessorEditor)\r
};\r
\r
}\r
}\r
\r
+ void startedDragging() override\r
+ {\r
+ owner.beginParameterChangeGesture(index);\r
+ }\r
+\r
+ void stoppedDragging() override\r
+ {\r
+ owner.endParameterChangeGesture(index);\r
+ }\r
+\r
String getTextFromValue (double /*value*/) override\r
{\r
return owner.getParameterText (index) + " " + owner.getParameterLabel (index).trimEnd();\r
\r
void KnownPluginList::clear()\r
{\r
+ ScopedLock lock (typesArrayLock);\r
+\r
if (types.size() > 0)\r
{\r
types.clear();\r
\r
PluginDescription* KnownPluginList::getTypeForFile (const String& fileOrIdentifier) const\r
{\r
+ ScopedLock lock (typesArrayLock);\r
+\r
for (int i = 0; i < types.size(); ++i)\r
if (types.getUnchecked(i)->fileOrIdentifier == fileOrIdentifier)\r
return types.getUnchecked(i);\r
\r
PluginDescription* KnownPluginList::getTypeForIdentifierString (const String& identifierString) const\r
{\r
+ ScopedLock lock (typesArrayLock);\r
+\r
for (int i = 0; i < types.size(); ++i)\r
if (types.getUnchecked(i)->matchesIdentifierString (identifierString))\r
return types.getUnchecked(i);\r
\r
bool KnownPluginList::addType (const PluginDescription& type)\r
{\r
- for (int i = types.size(); --i >= 0;)\r
{\r
- if (types.getUnchecked(i)->isDuplicateOf (type))\r
+ ScopedLock lock (typesArrayLock);\r
+\r
+ for (int i = types.size(); --i >= 0;)\r
{\r
- // strange - found a duplicate plugin with different info..\r
- jassert (types.getUnchecked(i)->name == type.name);\r
- jassert (types.getUnchecked(i)->isInstrument == type.isInstrument);\r
+ if (types.getUnchecked(i)->isDuplicateOf (type))\r
+ {\r
+ // strange - found a duplicate plugin with different info..\r
+ jassert (types.getUnchecked(i)->name == type.name);\r
+ jassert (types.getUnchecked(i)->isInstrument == type.isInstrument);\r
\r
- *types.getUnchecked(i) = type;\r
- return false;\r
+ *types.getUnchecked(i) = type;\r
+ return false;\r
+ }\r
}\r
+\r
+ types.insert (0, new PluginDescription (type));\r
}\r
\r
- types.insert (0, new PluginDescription (type));\r
sendChangeMessage();\r
return true;\r
}\r
\r
void KnownPluginList::removeType (const int index)\r
{\r
- types.remove (index);\r
+ {\r
+ ScopedLock lock (typesArrayLock);\r
+\r
+ types.remove (index);\r
+ }\r
+\r
sendChangeMessage();\r
}\r
\r
if (getTypeForFile (fileOrIdentifier) == nullptr)\r
return false;\r
\r
+ ScopedLock lock (typesArrayLock);\r
+\r
for (int i = types.size(); --i >= 0;)\r
{\r
const PluginDescription* const d = types.getUnchecked(i);\r
{\r
bool needsRescanning = false;\r
\r
+ ScopedLock lock (typesArrayLock);\r
+\r
for (int i = types.size(); --i >= 0;)\r
{\r
const PluginDescription* const d = types.getUnchecked(i);\r
if (method != defaultOrder)\r
{\r
Array<PluginDescription*> oldOrder, newOrder;\r
- oldOrder.addArray (types);\r
\r
- PluginSorter sorter (method, forwards);\r
- types.sort (sorter, true);\r
+ {\r
+ ScopedLock lock (typesArrayLock);\r
+\r
+ oldOrder.addArray (types);\r
+\r
+ PluginSorter sorter (method, forwards);\r
+ types.sort (sorter, true);\r
\r
- newOrder.addArray (types);\r
+ newOrder.addArray (types);\r
+ }\r
\r
if (oldOrder != newOrder)\r
sendChangeMessage();\r
{\r
XmlElement* const e = new XmlElement ("KNOWNPLUGINS");\r
\r
- for (int i = types.size(); --i >= 0;)\r
- e->prependChildElement (types.getUnchecked(i)->createXml());\r
+ {\r
+ ScopedLock lock (typesArrayLock);\r
+\r
+ for (int i = types.size(); --i >= 0;)\r
+ e->prependChildElement (types.getUnchecked(i)->createXml());\r
+ }\r
\r
for (int i = 0; i < blacklist.size(); ++i)\r
e->createNewChildElement ("BLACKLISTED")->setAttribute ("id", blacklist[i]);\r
Array<PluginDescription*> sorted;\r
\r
{\r
+ ScopedLock lock (typesArrayLock);\r
PluginSorter sorter (sortMethod, true);\r
\r
for (int i = 0; i < types.size(); ++i)\r
OwnedArray<PluginDescription> types;\r
StringArray blacklist;\r
ScopedPointer<CustomScanner> scanner;\r
- CriticalSection scanLock;\r
+ CriticalSection scanLock, typesArrayLock;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (KnownPluginList)\r
};\r
\r
if (path.getNumPaths() > 0) // if the path is empty, then paths aren't used for this format.\r
{\r
+ #if ! JUCE_IOS\r
if (propertiesToUse != nullptr)\r
path = getLastSearchPath (*propertiesToUse, formatToScan);\r
+ #endif\r
\r
pathList.setSize (500, 300);\r
pathList.setPath (path);\r
#if JUCE_COMPILER_SUPPORTS_LAMBDAS\r
\r
//==============================================================================\r
-struct AudioProcessorValueTreeState::Parameter : public AudioProcessorParameter,\r
+struct AudioProcessorValueTreeState::Parameter : public AudioProcessorParameterWithID,\r
private ValueTree::Listener\r
{\r
Parameter (AudioProcessorValueTreeState& s,\r
NormalisableRange<float> r, float defaultVal,\r
std::function<String (float)> valueToText,\r
std::function<float (const String&)> textToValue)\r
- : owner (s), paramID (parameterID), name (paramName), label (labelText),\r
+ : AudioProcessorParameterWithID (parameterID, paramName),\r
+ owner (s), label (labelText),\r
valueToTextFunction (valueToText),\r
textToValueFunction (textToValue),\r
range (r), value (defaultVal), defaultValue (defaultVal),\r
\r
float getValue() const override { return range.convertTo0to1 (value); }\r
float getDefaultValue() const override { return range.convertTo0to1 (defaultValue); }\r
- String getName (int maximumStringLength) const override { return name.substring (0, maximumStringLength); }\r
String getLabel() const override { return label; }\r
\r
float getValueForText (const String& text) const override\r
\r
AudioProcessorValueTreeState& owner;\r
ValueTree state;\r
- String paramID, name, label;\r
+ String label;\r
ListenerList<AudioProcessorValueTreeState::Listener> listeners;\r
std::function<String (float)> valueToTextFunction;\r
std::function<float (const String&)> textToValueFunction;\r
\r
ID: juce_audio_utils\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE extra audio utility classes\r
description: Classes for audio-related GUI and miscellaneous tasks.\r
website: http://www.juce.com/juce\r
}\r
else\r
{\r
- m_flags &= ~e_enabledFlag;\r
+ m_flags &= ~((unsigned int) e_enabledFlag);\r
}\r
}\r
\r
\r
ID: juce_box2d\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE wrapper for the Box2D physics engine\r
description: The Box2D physics engine and some utility classes.\r
website: http://www.juce.com/juce\r
will be done.\r
\r
@param newElement the new object to add to the array\r
+ @return true if the element was added to the array; false otherwise.\r
*/\r
- void addIfNotAlreadyThere (ParameterType newElement)\r
+ bool addIfNotAlreadyThere (ParameterType newElement)\r
{\r
const ScopedLockType lock (getLock());\r
\r
- if (! contains (newElement))\r
- add (newElement);\r
+ if (contains (newElement))\r
+ return false;\r
+\r
+ add (newElement);\r
+ return true;\r
}\r
\r
/** Replaces an element with a new value.\r
If the array already contains a matching object, nothing will be done.\r
\r
@param newObject the new object to add to the array\r
- @returns the new object that was added\r
+ @returns true if the new object was added, false otherwise\r
*/\r
- ObjectClass* addIfNotAlreadyThere (ObjectClass* newObject) noexcept\r
+ bool addIfNotAlreadyThere (ObjectClass* newObject) noexcept\r
{\r
const ScopedLockType lock (getLock());\r
\r
- if (! contains (newObject))\r
- add (newObject);\r
+ if (contains (newObject))\r
+ return false;\r
\r
- return newObject;\r
+ add (newObject);\r
+ return true;\r
}\r
\r
/** Replaces an object in the array with a different one.\r
If the array already contains a matching object, nothing will be done.\r
\r
@param newObject the new object to add to the array\r
+ @returns true if the object has been added, false otherwise\r
*/\r
- void addIfNotAlreadyThere (ObjectClass* const newObject) noexcept\r
+ bool addIfNotAlreadyThere (ObjectClass* const newObject) noexcept\r
{\r
const ScopedLockType lock (getLock());\r
- if (! contains (newObject))\r
- add (newObject);\r
+\r
+ if (contains (newObject))\r
+ return false;\r
+\r
+ add (newObject);\r
+ return true;\r
}\r
\r
/** Replaces an object in the array with a different one.\r
var& var::operator= (const char* const v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; }\r
var& var::operator= (const wchar_t* const v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; }\r
var& var::operator= (const String& v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; }\r
+var& var::operator= (const MemoryBlock& v) { type->cleanUp (value); type = &VariantType_Binary::instance; value.binaryValue = new MemoryBlock (v); return *this; }\r
var& var::operator= (const Array<var>& v) { var v2 (v); swapWith (v2); return *this; }\r
var& var::operator= (ReferenceCountedObject* v) { var v2 (v); swapWith (v2); return *this; }\r
var& var::operator= (NativeFunction v) { var v2 (v); swapWith (v2); return *this; }\r
var& operator= (const char* value);\r
var& operator= (const wchar_t* value);\r
var& operator= (const String& value);\r
+ var& operator= (const MemoryBlock& value);\r
var& operator= (const Array<var>& value);\r
var& operator= (ReferenceCountedObject* object);\r
var& operator= (NativeFunction method);\r
//==============================================================================\r
static String removeEllipsis (const String& path)\r
{\r
- StringArray toks;\r
- toks.addTokens (path, File::separatorString, StringRef());\r
-\r
- for (int i = 1; i < toks.size(); ++i)\r
+ // This will quickly find both /../ and /./ at the expense of a minor\r
+ // false-positive performance hit when path elements end in a dot.\r
+ #if JUCE_WINDOWS\r
+ if (path.contains (".\\"))\r
+ #else\r
+ if (path.contains ("./"))\r
+ #endif\r
{\r
- if (toks[i] == ".." && toks[i - 1] != "..")\r
+ StringArray toks;\r
+ toks.addTokens (path, File::separatorString, StringRef());\r
+ bool anythingChanged = false;\r
+\r
+ for (int i = 1; i < toks.size(); ++i)\r
{\r
- toks.removeRange (i - 1, 2);\r
- i = jmax (0, i - 2);\r
+ const String& t = toks[i];\r
+\r
+ if (t == ".." && toks[i - 1] != "..")\r
+ {\r
+ anythingChanged = true;\r
+ toks.removeRange (i - 1, 2);\r
+ i = jmax (0, i - 2);\r
+ }\r
+ else if (t == ".")\r
+ {\r
+ anythingChanged = true;\r
+ toks.remove (i--);\r
+ }\r
}\r
+\r
+ if (anythingChanged)\r
+ return toks.joinIntoString (File::separatorString);\r
}\r
\r
- return toks.joinIntoString (File::separatorString);\r
+ return path;\r
}\r
\r
String File::parseAbsolutePath (const String& p)\r
\r
#if JUCE_WINDOWS\r
// Windows..\r
- String path (p.replaceCharacter ('/', '\\'));\r
-\r
- if (path.contains ("\\..\\"))\r
- path = removeEllipsis (path);\r
+ String path (removeEllipsis (p.replaceCharacter ('/', '\\')));\r
\r
if (path.startsWithChar (separator))\r
{\r
// If that's why you've ended up here, use File::getChildFile() to build your paths instead.\r
jassert ((! p.containsChar ('\\')) || (p.indexOfChar ('/') >= 0 && p.indexOfChar ('/') < p.indexOfChar ('\\')));\r
\r
- String path (p);\r
-\r
- if (path.contains ("/../"))\r
- path = removeEllipsis (path);\r
+ String path (removeEllipsis (p));\r
\r
if (path.startsWithChar ('~'))\r
{\r
expect (home.getChildFile ("././xyz") == home.getChildFile ("xyz"));\r
expect (home.getChildFile ("../xyz") == home.getParentDirectory().getChildFile ("xyz"));\r
expect (home.getChildFile (".././xyz") == home.getParentDirectory().getChildFile ("xyz"));\r
+ expect (home.getChildFile (".././xyz/./abc") == home.getParentDirectory().getChildFile ("xyz/abc"));\r
expect (home.getChildFile ("./../xyz") == home.getParentDirectory().getChildFile ("xyz"));\r
+ expect (home.getChildFile ("a1/a2/a3/./../../a4") == home.getChildFile ("a1/a4"));\r
\r
{\r
FileOutputStream fo (tempFile);\r
directories.insert (insertIndex, dir.getFullPathName());\r
}\r
\r
-void FileSearchPath::addIfNotAlreadyThere (const File& dir)\r
+bool FileSearchPath::addIfNotAlreadyThere (const File& dir)\r
{\r
for (int i = 0; i < directories.size(); ++i)\r
if (File (directories[i]) == dir)\r
- return;\r
+ return false;\r
\r
add (dir);\r
+ return true;\r
}\r
\r
void FileSearchPath::remove (const int index)\r
void add (const File& directoryToAdd,\r
int insertIndex = -1);\r
\r
- /** Adds a new directory to the search path if it's not already in there. */\r
- void addIfNotAlreadyThere (const File& directoryToAdd);\r
+ /** Adds a new directory to the search path if it's not already in there.\r
+\r
+ @return true if the directory has been added, false otherwise.\r
+ */\r
+ bool addIfNotAlreadyThere (const File& directoryToAdd);\r
\r
/** Removes a directory from the search path. */\r
void remove (int indexToRemove);\r
return CharPointer_ASCII (buffer);\r
}\r
\r
+ // (creates a random double that can be easily stringified, to avoid\r
+ // false failures when decimal places are rounded or truncated slightly)\r
+ static var createRandomDouble (Random& r)\r
+ {\r
+ for (;;)\r
+ {\r
+ var v (String (r.nextDouble() * 1000.0, 20).getDoubleValue());\r
+\r
+ if (v.toString() == String (static_cast<double> (v), 20))\r
+ return v;\r
+ }\r
+ }\r
+\r
static var createRandomVar (Random& r, int depth)\r
{\r
switch (r.nextInt (depth > 3 ? 6 : 8))\r
case 1: return r.nextInt();\r
case 2: return r.nextInt64();\r
case 3: return r.nextBool();\r
- case 4: return String (r.nextDouble(), 8).getDoubleValue();\r
+ case 4: return createRandomDouble (r);\r
case 5: return createRandomWideCharString (r);\r
\r
case 6:\r
{\r
RootObject()\r
{\r
- setMethod ("exec", exec);\r
- setMethod ("eval", eval);\r
- setMethod ("trace", trace);\r
- setMethod ("charToInt", charToInt);\r
- setMethod ("parseInt", IntegerClass::parseInt);\r
- setMethod ("typeof", typeof_internal);\r
+ setMethod ("exec", exec);\r
+ setMethod ("eval", eval);\r
+ setMethod ("trace", trace);\r
+ setMethod ("charToInt", charToInt);\r
+ setMethod ("parseInt", IntegerClass::parseInt);\r
+ setMethod ("typeof", typeof_internal);\r
+ setMethod ("parseFloat", parseFloat);\r
}\r
\r
Time timeout;\r
setMethod ("remove", remove);\r
setMethod ("join", join);\r
setMethod ("push", push);\r
+ setMethod ("splice", splice);\r
+ setMethod ("indexOf", indexOf);\r
}\r
\r
static Identifier getClassName() { static const Identifier i ("Array"); return i; }\r
\r
return var::undefined();\r
}\r
+\r
+ static var splice (Args a)\r
+ {\r
+ if (Array<var>* array = a.thisObject.getArray())\r
+ {\r
+ const int arraySize = array->size();\r
+ int start = get (a, 0);\r
+\r
+ if (start < 0)\r
+ start = jmax (0, arraySize + start);\r
+ else if (start > arraySize)\r
+ start = arraySize;\r
+\r
+ const int num = a.numArguments > 1 ? jlimit (0, arraySize - start, getInt (a, 1))\r
+ : arraySize - start;\r
+\r
+ Array<var> itemsRemoved;\r
+ itemsRemoved.ensureStorageAllocated (num);\r
+\r
+ for (int i = 0; i < num; ++i)\r
+ itemsRemoved.add (array->getReference (start + i));\r
+\r
+ array->removeRange (start, num);\r
+\r
+ for (int i = 2; i < a.numArguments; ++i)\r
+ array->insert (start++, get (a, i));\r
+\r
+ return itemsRemoved;\r
+ }\r
+\r
+ return var::undefined();\r
+ }\r
+\r
+ static var indexOf (Args a)\r
+ {\r
+ if (const Array<var>* array = a.thisObject.getArray())\r
+ {\r
+ const var target (get (a, 0));\r
+\r
+ for (int i = (a.numArguments > 1 ? getInt (a, 1) : 0); i < array->size(); ++i)\r
+ if (array->getReference(i) == target)\r
+ return i;\r
+ }\r
+\r
+ return -1;\r
+ }\r
};\r
\r
//==============================================================================\r
//==============================================================================\r
static var trace (Args a) { Logger::outputDebugString (JSON::toString (a.thisObject)); return var::undefined(); }\r
static var charToInt (Args a) { return (int) (getString (a, 0)[0]); }\r
+ static var parseFloat (Args a) { return getDouble (a, 0); }\r
\r
static var typeof_internal (Args a)\r
{\r
#endif\r
\r
#if JUCE_LINUX\r
+ #include <stdio.h>\r
#include <langinfo.h>\r
#include <ifaddrs.h>\r
#include <sys/resource.h>\r
\r
ID: juce_core\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE core classes\r
description: The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.\r
website: http://www.juce.com/juce\r
BigInteger temp (*this);\r
temp.negate();\r
*this = other;\r
- operator-= (temp);\r
+ *this -= temp;\r
}\r
else\r
{\r
negate();\r
- operator-= (other);\r
+ *this -= other;\r
negate();\r
}\r
}\r
{\r
BigInteger temp (other);\r
swapWith (temp);\r
- operator-= (temp);\r
+ *this -= temp;\r
negate();\r
return *this;\r
}\r
else\r
{\r
negate();\r
- operator+= (other);\r
+ *this += other;\r
negate();\r
return *this;\r
}\r
\r
BigInteger& BigInteger::operator*= (const BigInteger& other)\r
{\r
- BigInteger total;\r
- highestBit = getHighestBit();\r
+ int n = getHighestBit();\r
+ int t = other.getHighestBit();\r
+\r
const bool wasNegative = isNegative();\r
setNegative (false);\r
\r
- for (int i = 0; i <= highestBit; ++i)\r
+ BigInteger total;\r
+ total.highestBit = n + t + 1;\r
+\r
+ n >>= 5;\r
+ t >>= 5;\r
+\r
+ total.ensureSize ((size_t) (n + t + 2));\r
+\r
+ BigInteger m (other);\r
+ m.setNegative (false);\r
+\r
+ for (int i = 0; i <= t; ++i)\r
{\r
- if (operator[](i))\r
+ uint32 c = 0;\r
+\r
+ for (int j = 0; j <= n; ++j)\r
{\r
- BigInteger n (other);\r
- n.setNegative (false);\r
- n <<= i;\r
- total += n;\r
+ uint64 uv = (uint64) total.values[i + j] + (uint64) values[j] * (uint64) m.values[i] + (uint64) c;\r
+ total.values[i + j] = (uint32) uv;\r
+ c = uv >> 32;\r
}\r
+\r
+ total.values[i + n + 1] = c;\r
}\r
\r
total.setNegative (wasNegative ^ other.isNegative());\r
swapWith (total);\r
+\r
return *this;\r
}\r
\r
if (startBit > 0)\r
{\r
for (int i = highestBit + 1; --i >= startBit;)\r
- setBit (i + bits, operator[] (i));\r
+ setBit (i + bits, (*this) [i]);\r
\r
while (--bits >= 0)\r
clearBit (bits + startBit);\r
if (startBit > 0)\r
{\r
for (int i = startBit; i <= highestBit; ++i)\r
- setBit (i, operator[] (i + bits));\r
+ setBit (i, (*this) [i + bits]);\r
\r
highestBit = getHighestBit();\r
}\r
\r
void BigInteger::exponentModulo (const BigInteger& exponent, const BigInteger& modulus)\r
{\r
+ *this %= modulus;\r
BigInteger exp (exponent);\r
exp %= modulus;\r
\r
- BigInteger value (1);\r
- swapWith (value);\r
- value %= modulus;\r
+ if (modulus.getHighestBit() <= 32 || modulus % 2 == 0)\r
+ {\r
+ BigInteger a (*this);\r
+\r
+ const int n = exp.getHighestBit();\r
+\r
+ for (int i = n; --i >= 0;)\r
+ {\r
+ *this *= *this;\r
\r
- while (! exp.isZero())\r
+ if (exp[i])\r
+ *this *= a;\r
+\r
+ if (compareAbsolute (modulus) >= 0)\r
+ *this %= modulus;\r
+ }\r
+ }\r
+ else\r
{\r
- if (exp [0])\r
+ const int Rfactor = modulus.getHighestBit() + 1;\r
+ BigInteger R (1);\r
+ R.shiftLeft (Rfactor, 0);\r
+\r
+ BigInteger R1, m1, g;\r
+ g.extendedEuclidean (modulus, R, m1, R1);\r
+\r
+ if (! g.isOne())\r
{\r
- operator*= (value);\r
- operator%= (modulus);\r
+ BigInteger a (*this);\r
+\r
+ for (int i = exp.getHighestBit(); --i >= 0;)\r
+ {\r
+ *this *= *this;\r
+\r
+ if (exp[i])\r
+ *this *= a;\r
+\r
+ if (compareAbsolute (modulus) >= 0)\r
+ *this %= modulus;\r
+ }\r
}\r
+ else\r
+ {\r
+ BigInteger am (((*this) * R) % modulus);\r
+ BigInteger xm (am);\r
+ BigInteger um (R % modulus);\r
\r
- value *= value;\r
- value %= modulus;\r
- exp >>= 1;\r
+ for (int i = exp.getHighestBit(); --i >= 0;)\r
+ {\r
+ xm.montgomeryMultiplication (xm, modulus, m1, Rfactor);\r
+\r
+ if (exp[i])\r
+ xm.montgomeryMultiplication (am, modulus, m1, Rfactor);\r
+ }\r
+\r
+ xm.montgomeryMultiplication (1, modulus, m1, Rfactor);\r
+ swapWith (xm);\r
+ }\r
+ }\r
+}\r
+\r
+void BigInteger::montgomeryMultiplication (const BigInteger& other, const BigInteger& modulus,\r
+ const BigInteger& modulusp, const int k)\r
+{\r
+ *this *= other;\r
+\r
+ BigInteger t (*this);\r
+\r
+ setRange (k, highestBit - k + 1, false);\r
+ *this *= modulusp;\r
+\r
+ setRange (k, highestBit - k + 1, false);\r
+ *this *= modulus;\r
+ *this += t;\r
+ shiftRight (k, 0);\r
+\r
+ if (compare (modulus) >= 0)\r
+ *this -= modulus;\r
+ else if (isNegative())\r
+ *this += modulus;\r
+}\r
+\r
+void BigInteger::extendedEuclidean (const BigInteger& a, const BigInteger& b,\r
+ BigInteger& x, BigInteger& y)\r
+{\r
+ BigInteger p(a), q(b), gcd(1);\r
+\r
+ Array<BigInteger> tempValues;\r
+\r
+ while (! q.isZero())\r
+ {\r
+ tempValues.add (p / q);\r
+ gcd = q;\r
+ q = p % q;\r
+ p = gcd;\r
+ }\r
+\r
+ x.clear();\r
+ y = 1;\r
+\r
+ for (int i = 1; i < tempValues.size(); ++i)\r
+ {\r
+ const BigInteger& v = tempValues.getReference (tempValues.size() - i - 1);\r
+\r
+ if ((i & 1) != 0)\r
+ x += y * v;\r
+ else\r
+ y += x * v;\r
}\r
+\r
+ if (gcd.compareAbsolute (y * b - x * a) != 0)\r
+ {\r
+ x.negate();\r
+ x.swapWith (y);\r
+ x.negate();\r
+ }\r
+\r
+ swapWith (gcd);\r
}\r
\r
void BigInteger::inverseModulo (const BigInteger& modulus)\r
}\r
\r
if (isNegative() || compareAbsolute (modulus) >= 0)\r
- operator%= (modulus);\r
+ *this %= modulus;\r
\r
if (isOne())\r
return;\r
\r
if (((uint32) digit) < (uint32) base)\r
{\r
- operator<<= (bits);\r
- operator+= (digit);\r
+ *this <<= bits;\r
+ *this += digit;\r
}\r
else if (c == 0)\r
{\r
\r
if (c >= '0' && c <= '9')\r
{\r
- operator*= (ten);\r
- operator+= ((int) (c - '0'));\r
+ *this *= ten;\r
+ *this += (int) (c - '0');\r
}\r
else if (c == 0)\r
{\r
*/\r
int getHighestBit() const noexcept;\r
\r
+ //==============================================================================\r
+ /** Returns true if the value is less than zero.\r
+ @see setNegative, negate\r
+ */\r
+ bool isNegative() const noexcept;\r
+\r
+ /** Changes the sign of the number to be positive or negative.\r
+ @see isNegative, negate\r
+ */\r
+ void setNegative (bool shouldBeNegative) noexcept;\r
+\r
+ /** Inverts the sign of the number.\r
+ @see isNegative, setNegative\r
+ */\r
+ void negate() noexcept;\r
+\r
//==============================================================================\r
// All the standard arithmetic ops...\r
\r
*/\r
int compareAbsolute (const BigInteger& other) const noexcept;\r
\r
+ //==============================================================================\r
/** Divides this value by another one and returns the remainder.\r
\r
This number is divided by other, leaving the quotient in this number,\r
*/\r
void divideBy (const BigInteger& divisor, BigInteger& remainder);\r
\r
- /** Returns the largest value that will divide both this value and the one passed-in. */\r
+ /** Returns the largest value that will divide both this value and the argument. */\r
BigInteger findGreatestCommonDivisor (BigInteger other) const;\r
\r
/** Performs a combined exponent and modulo operation.\r
*/\r
void inverseModulo (const BigInteger& modulus);\r
\r
- //==============================================================================\r
- /** Returns true if the value is less than zero.\r
- @see setNegative, negate\r
- */\r
- bool isNegative() const noexcept;\r
-\r
- /** Changes the sign of the number to be positive or negative.\r
- @see isNegative, negate\r
+ /** Performs the Montgomery Multiplication with modulo.\r
+ This object is left containing the result value: ((this * other) * R1) % modulus.\r
+ To get this result, we need modulus, modulusp and k such as R = 2^k, with\r
+ modulus * modulusp - R * R1 = GCD(modulus, R) = 1\r
*/\r
- void setNegative (bool shouldBeNegative) noexcept;\r
+ void montgomeryMultiplication (const BigInteger& other, const BigInteger& modulus,\r
+ const BigInteger& modulusp, int k);\r
\r
- /** Inverts the sign of the number.\r
- @see isNegative, setNegative\r
+ /** Performs the Extended Euclidean algorithm.\r
+ This method will set the xOut and yOut arguments such that (a * xOut) - (b * yOut) = GCD (a, b).\r
+ On return, this object is left containing the value of the GCD.\r
*/\r
- void negate() noexcept;\r
+ void extendedEuclidean (const BigInteger& a, const BigInteger& b,\r
+ BigInteger& xOut, BigInteger& yOut);\r
\r
//==============================================================================\r
/** Converts the number to a string.\r
incIfNotNull (refCountedObject);\r
}\r
\r
+ #if JUCE_COMPILER_SUPPORTS_NULLPTR\r
+ /** Creates a pointer to a null object. */\r
+ ReferenceCountedObjectPtr (decltype (nullptr)) noexcept\r
+ : referencedObject (nullptr)\r
+ {\r
+ }\r
+ #endif\r
+\r
/** Copies another pointer.\r
This will increment the object's reference-count.\r
*/\r
/** Copies another pointer.\r
This will increment the object's reference-count (if it is non-null).\r
*/\r
- template <class Convertible>\r
+ template <typename Convertible>\r
ReferenceCountedObjectPtr (const ReferenceCountedObjectPtr<Convertible>& other) noexcept\r
: referencedObject (static_cast<ReferencedType*> (other.get()))\r
{\r
The reference count of the old object is decremented, and it might be\r
deleted if it hits zero. The new object's count is incremented.\r
*/\r
- template <class Convertible>\r
+ template <typename Convertible>\r
ReferenceCountedObjectPtr& operator= (const ReferenceCountedObjectPtr<Convertible>& other)\r
{\r
return operator= (static_cast<ReferencedType*> (other.get()));\r
\r
//==============================================================================\r
/** Compares two ReferenceCountedObjectPtrs. */\r
-template <class ReferenceCountedObjectClass>\r
+template <typename ReferenceCountedObjectClass>\r
bool operator== (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, ReferenceCountedObjectClass* const object2) noexcept\r
{\r
return object1.get() == object2;\r
}\r
\r
/** Compares two ReferenceCountedObjectPtrs. */\r
-template <class ReferenceCountedObjectClass>\r
+template <typename ReferenceCountedObjectClass>\r
bool operator== (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept\r
{\r
return object1.get() == object2.get();\r
}\r
\r
/** Compares two ReferenceCountedObjectPtrs. */\r
-template <class ReferenceCountedObjectClass>\r
+template <typename ReferenceCountedObjectClass>\r
bool operator== (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept\r
{\r
return object1 == object2.get();\r
}\r
\r
/** Compares two ReferenceCountedObjectPtrs. */\r
-template <class ReferenceCountedObjectClass>\r
+template <typename ReferenceCountedObjectClass>\r
bool operator!= (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectClass* object2) noexcept\r
{\r
return object1.get() != object2;\r
}\r
\r
/** Compares two ReferenceCountedObjectPtrs. */\r
-template <class ReferenceCountedObjectClass>\r
+template <typename ReferenceCountedObjectClass>\r
bool operator!= (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept\r
{\r
return object1.get() != object2.get();\r
}\r
\r
/** Compares two ReferenceCountedObjectPtrs. */\r
-template <class ReferenceCountedObjectClass>\r
+template <typename ReferenceCountedObjectClass>\r
bool operator!= (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept\r
{\r
return object1 != object2.get();\r
{\r
}\r
\r
+ #if JUCE_COMPILER_SUPPORTS_NULLPTR\r
+ /** Creates a ScopedPointer containing a null pointer. */\r
+ inline ScopedPointer (decltype (nullptr)) noexcept : object (nullptr)\r
+ {\r
+ }\r
+ #endif\r
+\r
/** Creates a ScopedPointer that owns the specified object. */\r
inline ScopedPointer (ObjectType* const objectToTakePossessionOf) noexcept\r
: object (objectToTakePossessionOf)\r
writeValueIfNotPresent (header, userHeaders, "Connection:", "close");\r
\r
if (isPost)\r
- {\r
writeValueIfNotPresent (header, userHeaders, "Content-Length:", String ((int) postData.getSize()));\r
- header << userHeaders << "\r\n" << postData;\r
- }\r
- else\r
- {\r
- header << "\r\n" << userHeaders << "\r\n";\r
- }\r
+\r
+ if (userHeaders.isNotEmpty())\r
+ header << "\r\n" << userHeaders;\r
+\r
+ header << "\r\n";\r
+\r
+ if (isPost)\r
+ header << postData;\r
\r
return header.getMemoryBlock();\r
}\r
for (const ifaddrs* cursor = addrs; cursor != nullptr; cursor = cursor->ifa_next)\r
{\r
sockaddr_storage* sto = (sockaddr_storage*) cursor->ifa_addr;\r
+\r
if (sto->ss_family == AF_LINK)\r
{\r
const sockaddr_dl* const sadd = (const sockaddr_dl*) cursor->ifa_addr;\r
\r
if (sadd->sdl_type == IFT_ETHER)\r
{\r
- MACAddress ma (MACAddress (((const uint8*) sadd->sdl_data) + sadd->sdl_nlen));\r
+ MACAddress ma (((const uint8*) sadd->sdl_data) + sadd->sdl_nlen);\r
\r
if (! ma.isNull())\r
result.addIfNotAlreadyThere (ma);\r
#endif\r
}\r
\r
+//==============================================================================\r
+// Unfortunately, we need to have this ugly ifdef here as long as some older OS X versions do not support NSURLSession\r
+#if JUCE_IOS || (defined (__MAC_OS_X_VERSION_MIN_REQUIRED) && defined (__MAC_10_10) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10)\r
+\r
+//==============================================================================\r
+class URLConnectionState : private Thread\r
+{\r
+public:\r
+ URLConnectionState (NSURLRequest* req, const int maxRedirects)\r
+ : Thread ("http connection"),\r
+ request ([req retain]),\r
+ data ([[NSMutableData data] retain]),\r
+ numRedirectsToFollow (maxRedirects)\r
+ {\r
+ static DelegateClass cls;\r
+ delegate = [cls.createInstance() init];\r
+ DelegateClass::setState (delegate, this);\r
+ }\r
+\r
+ ~URLConnectionState()\r
+ {\r
+ stop();\r
+ [data release];\r
+ [request release];\r
+ [headers release];\r
+ [session release];\r
+ [delegate release];\r
+ }\r
+\r
+ bool start (URL::OpenStreamProgressCallback* callback, void* context)\r
+ {\r
+ startThread();\r
+\r
+ while (isThreadRunning() && ! initialised)\r
+ {\r
+ if (callback != nullptr)\r
+ callback (context, (int) latestTotalBytes, (int) [[request HTTPBody] length]);\r
+\r
+ Thread::sleep (1);\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ void stop()\r
+ {\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ [task cancel];\r
+ }\r
+\r
+ stopThread (10000);\r
+ [task release];\r
+ task = nil;\r
+ }\r
+\r
+ int read (char* dest, int numBytes)\r
+ {\r
+ int numDone = 0;\r
+\r
+ while (numBytes > 0)\r
+ {\r
+ const int available = jmin (numBytes, (int) [data length]);\r
+\r
+ if (available > 0)\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ [data getBytes: dest length: (NSUInteger) available];\r
+ [data replaceBytesInRange: NSMakeRange (0, (NSUInteger) available) withBytes: nil length: 0];\r
+\r
+ numDone += available;\r
+ numBytes -= available;\r
+ dest += available;\r
+ }\r
+ else\r
+ {\r
+ if (hasFailed || hasFinished)\r
+ break;\r
+\r
+ Thread::sleep (1);\r
+ }\r
+ }\r
+\r
+ return numDone;\r
+ }\r
+\r
+ void didReceiveResponse (NSURLResponse* response, id completionHandler)\r
+ {\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ [data setLength: 0];\r
+ }\r
+\r
+ contentLength = [response expectedContentLength];\r
+\r
+ [headers release];\r
+ headers = nil;\r
+\r
+ if ([response isKindOfClass: [NSHTTPURLResponse class]])\r
+ {\r
+ auto httpResponse = (NSHTTPURLResponse*) response;\r
+ headers = [[httpResponse allHeaderFields] retain];\r
+ statusCode = (int) [httpResponse statusCode];\r
+ }\r
+\r
+ initialised = true;\r
+\r
+ if (completionHandler != nil)\r
+ {\r
+ // Need to wrangle this parameter back into an obj-C block,\r
+ // and call it to allow the transfer to continue..\r
+ void (^callbackBlock)(NSURLSessionResponseDisposition) = completionHandler;\r
+ callbackBlock (NSURLSessionResponseAllow);\r
+ }\r
+ }\r
+\r
+ void didBecomeInvalidWithError (NSError* error)\r
+ {\r
+ DBG (nsStringToJuce ([error description])); ignoreUnused (error);\r
+ hasFailed = true;\r
+ initialised = true;\r
+ signalThreadShouldExit();\r
+ }\r
+\r
+ void didReceiveData (NSData* newData)\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ [data appendData: newData];\r
+ initialised = true;\r
+ }\r
+\r
+ void didSendBodyData (int64_t totalBytesWritten)\r
+ {\r
+ latestTotalBytes = static_cast<int> (totalBytesWritten);\r
+ }\r
+\r
+ void willPerformHTTPRedirection (NSURLRequest* aRequest, void (^completionHandler)(NSURLRequest *))\r
+ {\r
+ NSURLRequest* newRequest = (numRedirects++ < numRedirectsToFollow ? aRequest : nullptr);\r
+ completionHandler (newRequest);\r
+ }\r
+\r
+ void run() override\r
+ {\r
+ jassert (task == nil && session == nil);\r
+\r
+ session = [[NSURLSession sessionWithConfiguration: [NSURLSessionConfiguration defaultSessionConfiguration]\r
+ delegate: delegate\r
+ delegateQueue: [NSOperationQueue currentQueue]] retain];\r
+\r
+ task = [session dataTaskWithRequest: request];\r
+\r
+ if (task == nil)\r
+ return;\r
+\r
+ [task retain];\r
+ [task resume];\r
+\r
+ while (! threadShouldExit())\r
+ {\r
+ wait (5);\r
+\r
+ if (task.state != NSURLSessionTaskStateRunning)\r
+ break;\r
+ }\r
+\r
+ hasFinished = true;\r
+ initialised = true;\r
+ }\r
+\r
+ int64 contentLength = -1;\r
+ CriticalSection dataLock;\r
+ id delegate = nil;\r
+ NSURLRequest* request = nil;\r
+ NSURLSession* session = nil;\r
+ NSURLSessionTask* task = nil;\r
+ NSMutableData* data = nil;\r
+ NSDictionary* headers = nil;\r
+ int statusCode = 0;\r
+ bool initialised = false, hasFailed = false, hasFinished = false;\r
+ const int numRedirectsToFollow;\r
+ int numRedirects = 0;\r
+ int64 latestTotalBytes = 0;\r
+\r
+private:\r
+ //==============================================================================\r
+ struct DelegateClass : public ObjCClass<NSObject>\r
+ {\r
+ DelegateClass() : ObjCClass<NSObject> ("JUCE_URLDelegate_")\r
+ {\r
+ addIvar<URLConnectionState*> ("state");\r
+\r
+ addMethod (@selector (URLSession:dataTask:didReceiveResponse:completionHandler:),\r
+ didReceiveResponse, "v@:@@@@");\r
+ addMethod (@selector (URLSession:didBecomeInvalidWithError:), didBecomeInvalidWithError, "v@:@@");\r
+ addMethod (@selector (URLSession:dataTask:didReceiveData:), didReceiveData, "v@:@@@");\r
+ addMethod (@selector (URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:),\r
+ didSendBodyData, "v@:@@qqq");\r
+ addMethod (@selector (URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:),\r
+ willPerformHTTPRedirection, "v@:@@@@@");\r
+ registerClass();\r
+ }\r
+\r
+ static void setState (id self, URLConnectionState* state) { object_setInstanceVariable (self, "state", state); }\r
+ static URLConnectionState* getState (id self) { return getIvar<URLConnectionState*> (self, "state"); }\r
+\r
+ private:\r
+ static void didReceiveResponse (id self, SEL, NSURLSession*, NSURLSessionDataTask*, NSURLResponse* response, id completionHandler)\r
+ {\r
+ getState (self)->didReceiveResponse (response, completionHandler);\r
+ }\r
+\r
+ static void didBecomeInvalidWithError (id self, SEL, NSURLSession*, NSError* error)\r
+ {\r
+ getState (self)->didBecomeInvalidWithError (error);\r
+ }\r
+\r
+ static void didReceiveData (id self, SEL, NSURLSession*, NSURLSessionDataTask*, NSData* newData)\r
+ {\r
+ getState (self)->didReceiveData (newData);\r
+ }\r
+\r
+ static void didSendBodyData (id self, SEL, NSURLSession*, NSURLSessionTask*, int64_t, int64_t totalBytesWritten, int64_t)\r
+ {\r
+ getState (self)->didSendBodyData (totalBytesWritten);\r
+ }\r
+\r
+ static void willPerformHTTPRedirection (id self, SEL, NSURLSession*, NSURLSessionTask*, NSHTTPURLResponse*,\r
+ NSURLRequest* request, void (^completionHandler)(NSURLRequest *))\r
+ {\r
+ getState (self)->willPerformHTTPRedirection (request, completionHandler);\r
+ }\r
+ };\r
+\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (URLConnectionState)\r
+};\r
+\r
+//==============================================================================\r
+#else\r
+\r
+// This version is only used for backwards-compatibility with older OSX targets,\r
+// so we'll turn off deprecation warnings. This code will be removed at some point\r
+// in the future.\r
+\r
+#pragma clang diagnostic push\r
+#pragma clang diagnostic ignored "-Wdeprecated"\r
+\r
//==============================================================================\r
class URLConnectionState : public Thread\r
{\r
\r
void stop()\r
{\r
- [connection cancel];\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ [connection cancel];\r
+ }\r
+\r
stopThread (10000);\r
}\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (URLConnectionState)\r
};\r
\r
+#pragma clang diagnostic pop\r
+\r
+#endif\r
+\r
\r
//==============================================================================\r
class WebInputStream : public InputStream\r
}\r
}\r
\r
+ ~WebInputStream()\r
+ {\r
+ connection = nullptr;\r
+ }\r
+\r
//==============================================================================\r
- bool isError() const { return connection == nullptr; }\r
+ bool isError() const { return (connection == nullptr || connection->headers == nullptr); }\r
int64 getTotalLength() override { return connection == nullptr ? -1 : connection->contentLength; }\r
bool isExhausted() override { return finished; }\r
int64 getPosition() override { return position; }\r
{\r
jassert (connection == nullptr);\r
\r
- NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL: [NSURL URLWithString: juceStringToNS (address)]\r
- cachePolicy: NSURLRequestReloadIgnoringLocalCacheData\r
- timeoutInterval: timeOutMs <= 0 ? 60.0 : (timeOutMs / 1000.0)];\r
-\r
- if (req != nil)\r
+ if (NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL: [NSURL URLWithString: juceStringToNS (address)]\r
+ cachePolicy: NSURLRequestReloadIgnoringLocalCacheData\r
+ timeoutInterval: timeOutMs <= 0 ? 60.0 : (timeOutMs / 1000.0)])\r
{\r
[req setHTTPMethod: [NSString stringWithUTF8String: httpRequestCmd.toRawUTF8()]];\r
- //[req setCachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData];\r
\r
StringArray headerLines;\r
headerLines.addLines (headers);\r
\r
for (int i = 0; i < headerLines.size(); ++i)\r
{\r
- const String key (headerLines[i].upToFirstOccurrenceOf (":", false, false).trim());\r
- const String value (headerLines[i].fromFirstOccurrenceOf (":", false, false).trim());\r
+ String key = headerLines[i].upToFirstOccurrenceOf (":", false, false).trim();\r
+ String value = headerLines[i].fromFirstOccurrenceOf (":", false, false).trim();\r
\r
if (key.isNotEmpty() && value.isNotEmpty())\r
[req addValue: juceStringToNS (value) forHTTPHeaderField: juceStringToNS (key)];\r
==============================================================================\r
*/\r
\r
-#ifdef JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
- extern int* jucePlugInClientCurrentWrapperType;\r
-#endif\r
-\r
CriticalSection::CriticalSection() noexcept\r
{\r
pthread_mutexattr_t atts;\r
return juce_stat (fullPath, info) ? (uint64) info.st_ino : 0;\r
}\r
\r
+static bool hasEffectiveRootFilePermissions()\r
+{\r
+ #if JUCE_LINUX\r
+ return (geteuid() == 0);\r
+ #else\r
+ return false;\r
+ #endif\r
+}\r
+\r
//==============================================================================\r
bool File::hasWriteAccess() const\r
{\r
if (exists())\r
- return access (fullPath.toUTF8(), W_OK) == 0;\r
+ return (hasEffectiveRootFilePermissions()\r
+ || access (fullPath.toUTF8(), W_OK) == 0);\r
\r
if ((! isDirectory()) && fullPath.containsChar (separator))\r
return getParentDirectory().hasWriteAccess();\r
{\r
Dl_info exeInfo;\r
\r
- #ifdef JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
- void* localSymbol = jucePlugInClientCurrentWrapperType != nullptr ? (void*) jucePlugInClientCurrentWrapperType\r
- : (void*) juce_getExecutableFile;\r
- #else\r
void* localSymbol = (void*) juce_getExecutableFile;\r
- #endif\r
dladdr (localSymbol, &exeInfo);\r
return CharPointer_UTF8 (exeInfo.dli_fname);\r
}\r
close (pipeHandles[0]); // close the read handle\r
\r
if ((streamFlags & wantStdOut) != 0)\r
- dup2 (pipeHandles[1], 1); // turns the pipe into stdout\r
+ dup2 (pipeHandles[1], STDOUT_FILENO); // turns the pipe into stdout\r
else\r
- close (STDOUT_FILENO);\r
+ dup2 (open ("/dev/null", O_WRONLY), STDOUT_FILENO);\r
\r
if ((streamFlags & wantStdErr) != 0)\r
- dup2 (pipeHandles[1], 2);\r
+ dup2 (pipeHandles[1], STDERR_FILENO);\r
else\r
- close (STDERR_FILENO);\r
+ dup2 (open ("/dev/null", O_WRONLY), STDERR_FILENO);\r
\r
close (pipeHandles[1]);\r
\r
if (! isError())\r
{\r
DWORD bufferSizeBytes = 4096;\r
- StringPairArray dataHeaders (false);\r
+ StringPairArray dataHeaders;\r
\r
for (;;)\r
{\r
{\r
LARGE_INTEGER ticks;\r
QueryPerformanceCounter (&ticks);\r
-\r
- const int64 mainCounterAsHiResTicks = (juce_millisecondsSinceStartup() * hiResTicksPerSecond) / 1000;\r
- const int64 newOffset = mainCounterAsHiResTicks - ticks.QuadPart;\r
-\r
- // fix for a very obscure PCI hardware bug that can make the counter\r
- // sometimes jump forwards by a few seconds..\r
- const int64 offsetDrift = abs64 (newOffset - hiResTicksOffset);\r
-\r
- if (offsetDrift > (hiResTicksPerSecond >> 1))\r
- hiResTicksOffset = newOffset;\r
-\r
return ticks.QuadPart + hiResTicksOffset;\r
}\r
\r
|| url[i] == '+' || url[i] == '-' || url[i] == '.')\r
++i;\r
\r
- return url[i] == ':' ? i + 1 : 0;\r
+ return url.substring (i).startsWith ("://") ? i + 1 : 0;\r
}\r
\r
static int findStartOfNetLocation (const String& url)\r
#define JUCE_COMPILER_SUPPORTS_STATIC_ASSERT 1\r
#endif\r
\r
- #ifndef JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL\r
+ #if __has_feature (cxx_override_control) && (! defined (JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL))\r
#define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1\r
#endif\r
\r
*/\r
#define JUCE_MAJOR_VERSION 4\r
#define JUCE_MINOR_VERSION 2\r
-#define JUCE_BUILDNUMBER 1\r
+#define JUCE_BUILDNUMBER 3\r
\r
/** Current Juce version number.\r
\r
strings.insert (index, newString);\r
}\r
\r
-void StringArray::addIfNotAlreadyThere (const String& newString, const bool ignoreCase)\r
+bool StringArray::addIfNotAlreadyThere (const String& newString, const bool ignoreCase)\r
{\r
- if (! contains (newString, ignoreCase))\r
- add (newString);\r
+ if (contains (newString, ignoreCase))\r
+ return false;\r
+\r
+ add (newString);\r
+ return true;\r
}\r
\r
void StringArray::addArray (const StringArray& otherArray, int startIndex, int numElementsToAdd)\r
\r
/** Adds a string to the array as long as it's not already in there.\r
The search can optionally be case-insensitive.\r
+\r
+ @return true if the string has been added, false otherwise.\r
*/\r
- void addIfNotAlreadyThere (const String& stringToAdd, bool ignoreCase = false);\r
+ bool addIfNotAlreadyThere (const String& stringToAdd, bool ignoreCase = false);\r
\r
/** Replaces one of the strings in the array with another one.\r
\r
*/\r
void expect (bool testResult, const String& failureMessage = String());\r
\r
- /** Compares two values, and if they don't match, prints out a message containing the\r
- expected and actual result values.\r
+ //==============================================================================\r
+ /** Compares a value to an expected value.\r
+ If they are not equal, prints out a message containing the expected and actual values.\r
*/\r
template <class ValueType>\r
void expectEquals (ValueType actual, ValueType expected, String failureMessage = String())\r
{\r
- const bool result = (actual == expected);\r
+ bool result = actual == expected;\r
+ expectResultAndPrint (actual, expected, result, "", failureMessage);\r
+ }\r
\r
- if (! result)\r
- {\r
- if (failureMessage.isNotEmpty())\r
- failureMessage << " -- ";\r
+ /** Checks whether a value is not equal to a comparison value.\r
+ If this check fails, prints out a message containing the actual and comparison values.\r
+ */\r
+ template <class ValueType>\r
+ void expectNotEquals (ValueType value, ValueType valueToCompareTo, String failureMessage = String())\r
+ {\r
+ bool result = value != valueToCompareTo;\r
+ expectResultAndPrint (value, valueToCompareTo, result, "unequal to", failureMessage);\r
+ }\r
\r
- failureMessage << "Expected value: " << expected << ", Actual value: " << actual;\r
- }\r
+ /** Checks whether a value is greater than a comparison value.\r
+ If this check fails, prints out a message containing the actual and comparison values.\r
+ */\r
+ template <class ValueType>\r
+ void expectGreaterThan (ValueType value, ValueType valueToCompareTo, String failureMessage = String())\r
+ {\r
+ bool result = value > valueToCompareTo;\r
+ expectResultAndPrint (value, valueToCompareTo, result, "greater than", failureMessage);\r
+ }\r
\r
- expect (result, failureMessage);\r
+ /** Checks whether a value is less than a comparison value.\r
+ If this check fails, prints out a message containing the actual and comparison values.\r
+ */\r
+ template <class ValueType>\r
+ void expectLessThan (ValueType value, ValueType valueToCompareTo, String failureMessage = String())\r
+ {\r
+ bool result = value < valueToCompareTo;\r
+ expectResultAndPrint (value, valueToCompareTo, result, "less than", failureMessage);\r
+ }\r
+\r
+ /** Checks whether a value is greater or equal to a comparison value.\r
+ If this check fails, prints out a message containing the actual and comparison values.\r
+ */\r
+ template <class ValueType>\r
+ void expectGreaterOrEqual (ValueType value, ValueType valueToCompareTo, String failureMessage = String())\r
+ {\r
+ bool result = value >= valueToCompareTo;\r
+ expectResultAndPrint (value, valueToCompareTo, result, "greater or equal to", failureMessage);\r
+ }\r
+\r
+ /** Checks whether a value is less or equal to a comparison value.\r
+ If this check fails, prints out a message containing the actual and comparison values.\r
+ */\r
+ template <class ValueType>\r
+ void expectLessOrEqual (ValueType value, ValueType valueToCompareTo, String failureMessage = String())\r
+ {\r
+ bool result = value <= valueToCompareTo;\r
+ expectResultAndPrint (value, valueToCompareTo, result, "less or equal to", failureMessage);\r
+ }\r
+\r
+ /** Computes the difference between a value and a comparison value, and if it is larger than a\r
+ specified maximum value, prints out a message containing the actual and comparison values\r
+ and the maximum allowed error.\r
+ */\r
+ template <class ValueType>\r
+ void expectWithinAbsoluteError (ValueType actual, ValueType expected, ValueType maxAbsoluteError, String failureMessage = String())\r
+ {\r
+ const ValueType diff = std::abs (actual - expected);\r
+ const bool result = diff <= maxAbsoluteError;\r
+\r
+ expectResultAndPrint (actual, expected, result, " within " + String (maxAbsoluteError) + " of" , failureMessage);\r
}\r
\r
//==============================================================================\r
Random getRandom() const;\r
\r
private:\r
+ //==============================================================================\r
+ template <class ValueType>\r
+ void expectResultAndPrint (ValueType value, ValueType valueToCompareTo, bool result,\r
+ String compDescription, String failureMessage)\r
+ {\r
+ if (! result)\r
+ {\r
+ if (failureMessage.isNotEmpty())\r
+ failureMessage << " -- ";\r
+\r
+ failureMessage << "Expected value" << (compDescription.isEmpty() ? "" : " ")\r
+ << compDescription << ": " << valueToCompareTo\r
+ << ", Actual value: " << value;\r
+ }\r
+\r
+ expect (result, failureMessage);\r
+ }\r
+\r
//==============================================================================\r
const String name;\r
UnitTestRunner* runner;\r
}\r
else\r
{\r
- for (;;)\r
+ for (;; ++input)\r
{\r
- const juce_wchar nextChar = *input;\r
+ juce_wchar nextChar = *input;\r
+\r
+ if (nextChar == '\r')\r
+ {\r
+ nextChar = '\n';\r
+\r
+ if (input[1] == '\n')\r
+ continue;\r
+ }\r
\r
if (nextChar == '<' || nextChar == '&')\r
break;\r
\r
textElementContent.appendUTF8Char (nextChar);\r
contentShouldBeUsed = contentShouldBeUsed || ! CharacterFunctions::isWhitespace (nextChar);\r
- ++input;\r
}\r
}\r
}\r
\r
ID: juce_cryptography\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE cryptography classes\r
description: Classes for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc.\r
website: http://www.juce.com/juce\r
\r
ID: juce_data_structures\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE data model helper classes\r
description: Classes for undo/redo management, and smart data structures.\r
website: http://www.juce.com/juce\r
}\r
\r
//==============================================================================\r
-bool InterprocessConnectionServer::beginWaitingForSocket (const int portNumber)\r
+bool InterprocessConnectionServer::beginWaitingForSocket (const int portNumber, const String& bindAddress)\r
{\r
stop();\r
\r
socket = new StreamingSocket();\r
\r
- if (socket->createListener (portNumber))\r
+ if (socket->createListener (portNumber, bindAddress))\r
{\r
startThread();\r
return true;\r
\r
Use stop() to stop the thread running.\r
\r
+ @param portNumber The port on which the server will receive\r
+ connections\r
+ @param bindAddress The address on which the server will listen\r
+ for connections. An empty string indicates\r
+ that it should listen on all addresses\r
+ assigned to this machine.\r
+\r
@see createConnectionObject, stop\r
*/\r
- bool beginWaitingForSocket (int portNumber);\r
+ bool beginWaitingForSocket (int portNumber, const String& bindAddress = String());\r
\r
/** Terminates the listener thread, if it's active.\r
\r
\r
ID: juce_events\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE message and event handling classes\r
description: Classes for running an application's main event loop and sending/receiving messages, timers, etc.\r
website: http://www.juce.com/juce\r
}\r
#endif\r
\r
+ #if JUCE_WINDOWS && JUCE_STANDALONE_APPLICATION && ! defined (_CONSOLE)\r
+ if (AttachConsole (ATTACH_PARENT_PROCESS) != 0)\r
+ {\r
+ // if we've launched a GUI app from cmd.exe or PowerShell, we need this to enable printf etc.\r
+ freopen("CON", "w", stdout);\r
+ freopen("CON", "w", stderr);\r
+ freopen("CON", "r", stdin);\r
+ }\r
+ #endif\r
+\r
// let the app do its setting-up..\r
initialise (getCommandLineParameters());\r
\r
namespace\r
{\r
template <typename Type>\r
- Rectangle<Type> coordsToRectangle (Type x, Type y, Type w, Type h)\r
+ Rectangle<Type> coordsToRectangle (Type x, Type y, Type w, Type h) noexcept\r
{\r
#if JUCE_DEBUG\r
const int maxVal = 0x3fffffff;\r
return context.isVectorDevice();\r
}\r
\r
-bool Graphics::reduceClipRegion (const Rectangle<int>& area)\r
+bool Graphics::reduceClipRegion (Rectangle<int> area)\r
{\r
saveStateIfPending();\r
return context.clipToRectangle (area);\r
\r
bool Graphics::reduceClipRegion (const int x, const int y, const int w, const int h)\r
{\r
- return reduceClipRegion (Rectangle<int> (x, y, w, h));\r
+ return reduceClipRegion (coordsToRectangle (x, y, w, h));\r
}\r
\r
bool Graphics::reduceClipRegion (const RectangleList<int>& clipRegion)\r
return ! context.isClipEmpty();\r
}\r
\r
-void Graphics::excludeClipRegion (const Rectangle<int>& rectangleToExclude)\r
+void Graphics::excludeClipRegion (Rectangle<int> rectangleToExclude)\r
{\r
saveStateIfPending();\r
context.excludeClipRectangle (rectangleToExclude);\r
context.addTransform (transform);\r
}\r
\r
-bool Graphics::clipRegionIntersects (const Rectangle<int>& area) const\r
+bool Graphics::clipRegionIntersects (Rectangle<int> area) const\r
{\r
return context.clipRegionIntersects (area);\r
}\r
}\r
}\r
\r
-void Graphics::drawText (const String& text, const Rectangle<float>& area,\r
+void Graphics::drawText (const String& text, Rectangle<float> area,\r
Justification justificationType, bool useEllipsesIfTooBig) const\r
{\r
if (text.isNotEmpty() && context.clipRegionIntersects (area.getSmallestIntegerContainer()))\r
}\r
}\r
\r
-void Graphics::drawText (const String& text, const Rectangle<int>& area,\r
+void Graphics::drawText (const String& text, Rectangle<int> area,\r
Justification justificationType, bool useEllipsesIfTooBig) const\r
{\r
drawText (text, area.toFloat(), justificationType, useEllipsesIfTooBig);\r
}\r
\r
-void Graphics::drawText (const String& text, const int x, const int y, const int width, const int height,\r
+void Graphics::drawText (const String& text, int x, int y, int width, int height,\r
Justification justificationType, const bool useEllipsesIfTooBig) const\r
{\r
- drawText (text, Rectangle<int> (x, y, width, height), justificationType, useEllipsesIfTooBig);\r
+ drawText (text, coordsToRectangle (x, y, width, height), justificationType, useEllipsesIfTooBig);\r
}\r
\r
-void Graphics::drawFittedText (const String& text, const Rectangle<int>& area,\r
+void Graphics::drawFittedText (const String& text, Rectangle<int> area,\r
Justification justification,\r
const int maximumNumberOfLines,\r
const float minimumHorizontalScale) const\r
}\r
}\r
\r
-void Graphics::drawFittedText (const String& text, const int x, const int y, const int width, const int height,\r
+void Graphics::drawFittedText (const String& text, int x, int y, int width, int height,\r
Justification justification,\r
const int maximumNumberOfLines,\r
const float minimumHorizontalScale) const\r
}\r
\r
//==============================================================================\r
-void Graphics::fillRect (const Rectangle<int>& r) const\r
+void Graphics::fillRect (Rectangle<int> r) const\r
{\r
context.fillRect (r, false);\r
}\r
\r
-void Graphics::fillRect (const Rectangle<float>& r) const\r
+void Graphics::fillRect (Rectangle<float> r) const\r
{\r
context.fillRect (r);\r
}\r
\r
void Graphics::setPixel (int x, int y) const\r
{\r
- context.fillRect (Rectangle<int> (x, y, 1, 1), false);\r
+ context.fillRect (coordsToRectangle (x, y, 1, 1), false);\r
}\r
\r
void Graphics::fillAll() const\r
drawRect (coordsToRectangle (x, y, width, height), lineThickness);\r
}\r
\r
-void Graphics::drawRect (const Rectangle<int>& r, int lineThickness) const\r
+void Graphics::drawRect (Rectangle<int> r, int lineThickness) const\r
{\r
drawRect (r.toFloat(), (float) lineThickness);\r
}\r
}\r
\r
//==============================================================================\r
-void Graphics::fillEllipse (const Rectangle<float>& area) const\r
+void Graphics::fillEllipse (Rectangle<float> area) const\r
{\r
Path p;\r
p.addEllipse (area);\r
\r
void Graphics::fillEllipse (float x, float y, float w, float h) const\r
{\r
- fillEllipse (Rectangle<float> (x, y, w, h));\r
+ fillEllipse (coordsToRectangle (x, y, w, h));\r
}\r
\r
void Graphics::drawEllipse (float x, float y, float width, float height, float lineThickness) const\r
{\r
- Path p;\r
- p.addEllipse (x, y, width, height);\r
- strokePath (p, PathStrokeType (lineThickness));\r
+ drawEllipse (coordsToRectangle (x, y, width, height), lineThickness);\r
}\r
\r
-void Graphics::drawEllipse (const Rectangle<float>& area, float lineThickness) const\r
+void Graphics::drawEllipse (Rectangle<float> area, float lineThickness) const\r
{\r
- drawEllipse (area.getX(), area.getY(), area.getWidth(), area.getHeight(), lineThickness);\r
+ Path p;\r
+\r
+ if (area.getWidth() == area.getHeight())\r
+ {\r
+ // For a circle, we can avoid having to generate a stroke\r
+ p.addEllipse (area.expanded (lineThickness * 0.5f));\r
+ p.addEllipse (area.reduced (lineThickness * 0.5f));\r
+ p.setUsingNonZeroWinding (false);\r
+ fillPath (p);\r
+ }\r
+ else\r
+ {\r
+ p.addEllipse (area);\r
+ strokePath (p, PathStrokeType (lineThickness));\r
+ }\r
}\r
\r
void Graphics::fillRoundedRectangle (float x, float y, float width, float height, float cornerSize) const\r
fillRoundedRectangle (coordsToRectangle (x, y, width, height), cornerSize);\r
}\r
\r
-void Graphics::fillRoundedRectangle (const Rectangle<float>& r, const float cornerSize) const\r
+void Graphics::fillRoundedRectangle (Rectangle<float> r, const float cornerSize) const\r
{\r
Path p;\r
p.addRoundedRectangle (r, cornerSize);\r
drawRoundedRectangle (coordsToRectangle (x, y, width, height), cornerSize, lineThickness);\r
}\r
\r
-void Graphics::drawRoundedRectangle (const Rectangle<float>& r, float cornerSize, float lineThickness) const\r
+void Graphics::drawRoundedRectangle (Rectangle<float> r, float cornerSize, float lineThickness) const\r
{\r
Path p;\r
p.addRoundedRectangle (r, cornerSize);\r
fillPath (p);\r
}\r
\r
-void Graphics::fillCheckerBoard (const Rectangle<int>& area,\r
+void Graphics::fillCheckerBoard (Rectangle<int> area,\r
const int checkWidth, const int checkHeight,\r
Colour colour1, Colour colour2) const\r
{\r
fillAlphaChannel);\r
}\r
\r
-void Graphics::drawImageWithin (const Image& imageToDraw,\r
- int dx, int dy, int dw, int dh,\r
- RectanglePlacement placementWithinTarget,\r
- const bool fillAlphaChannelWithCurrentBrush) const\r
+void Graphics::drawImage (const Image& imageToDraw, Rectangle<float> targetArea,\r
+ RectanglePlacement placementWithinTarget, bool fillAlphaChannelWithCurrentBrush) const\r
{\r
if (imageToDraw.isValid())\r
drawImageTransformed (imageToDraw,\r
- placementWithinTarget.getTransformToFit (imageToDraw.getBounds().toFloat(),\r
- coordsToRectangle (dx, dy, dw, dh).toFloat()),\r
+ placementWithinTarget.getTransformToFit (imageToDraw.getBounds().toFloat(), targetArea),\r
fillAlphaChannelWithCurrentBrush);\r
}\r
\r
+void Graphics::drawImageWithin (const Image& imageToDraw, int dx, int dy, int dw, int dh,\r
+ RectanglePlacement placementWithinTarget, bool fillAlphaChannelWithCurrentBrush) const\r
+{\r
+ drawImage (imageToDraw, coordsToRectangle (dx, dy, dw, dh).toFloat(),\r
+ placementWithinTarget, fillAlphaChannelWithCurrentBrush);\r
+}\r
+\r
void Graphics::drawImage (const Image& imageToDraw,\r
int dx, int dy, int dw, int dh,\r
int sx, int sy, int sw, int sh,\r
@see drawSingleLineText, drawFittedText, drawMultiLineText, GlyphArrangement::addJustifiedText\r
*/\r
void drawText (const String& text,\r
- const Rectangle<int>& area,\r
+ Rectangle<int> area,\r
Justification justificationType,\r
bool useEllipsesIfTooBig = true) const;\r
\r
@see drawSingleLineText, drawFittedText, drawMultiLineText, GlyphArrangement::addJustifiedText\r
*/\r
void drawText (const String& text,\r
- const Rectangle<float>& area,\r
+ Rectangle<float> area,\r
Justification justificationType,\r
bool useEllipsesIfTooBig = true) const;\r
\r
@see GlyphArrangement::addFittedText\r
*/\r
void drawFittedText (const String& text,\r
- const Rectangle<int>& area,\r
+ Rectangle<int> area,\r
Justification justificationFlags,\r
int maximumNumberOfLines,\r
float minimumHorizontalScale = 0.0f) const;\r
/** Fills a rectangle with the current colour or brush.\r
@see drawRect, fillRoundedRectangle\r
*/\r
- void fillRect (const Rectangle<int>& rectangle) const;\r
+ void fillRect (Rectangle<int> rectangle) const;\r
\r
/** Fills a rectangle with the current colour or brush.\r
@see drawRect, fillRoundedRectangle\r
*/\r
- void fillRect (const Rectangle<float>& rectangle) const;\r
+ void fillRect (Rectangle<float> rectangle) const;\r
\r
/** Fills a rectangle with the current colour or brush.\r
@see drawRect, fillRoundedRectangle\r
/** Uses the current colour or brush to fill a rectangle with rounded corners.\r
@see drawRoundedRectangle, Path::addRoundedRectangle\r
*/\r
- void fillRoundedRectangle (const Rectangle<float>& rectangle,\r
+ void fillRoundedRectangle (Rectangle<float> rectangle,\r
float cornerSize) const;\r
\r
/** Fills a rectangle with a checkerboard pattern, alternating between two colours. */\r
- void fillCheckerBoard (const Rectangle<int>& area,\r
+ void fillCheckerBoard (Rectangle<int> area,\r
int checkWidth, int checkHeight,\r
Colour colour1, Colour colour2) const;\r
\r
The lines are drawn inside the given rectangle, and greater line thicknesses extend inwards.\r
@see fillRect\r
*/\r
- void drawRect (const Rectangle<int>& rectangle, int lineThickness = 1) const;\r
+ void drawRect (Rectangle<int> rectangle, int lineThickness = 1) const;\r
\r
/** Draws a rectangular outline, using the current colour or brush.\r
The lines are drawn inside the given rectangle, and greater line thicknesses extend inwards.\r
/** Uses the current colour or brush to draw the outline of a rectangle with rounded corners.\r
@see fillRoundedRectangle, Path::addRoundedRectangle\r
*/\r
- void drawRoundedRectangle (const Rectangle<float>& rectangle,\r
+ void drawRoundedRectangle (Rectangle<float> rectangle,\r
float cornerSize, float lineThickness) const;\r
\r
/** Fills a 1x1 pixel using the current colour or brush.\r
The ellipse is drawn to fit inside the given rectangle.\r
@see drawEllipse, Path::addEllipse\r
*/\r
- void fillEllipse (const Rectangle<float>& area) const;\r
+ void fillEllipse (Rectangle<float> area) const;\r
\r
/** Draws an elliptical stroke using the current colour or brush.\r
@see fillEllipse, Path::addEllipse\r
/** Draws an elliptical stroke using the current colour or brush.\r
@see fillEllipse, Path::addEllipse\r
*/\r
- void drawEllipse (const Rectangle<float>& area, float lineThickness) const;\r
+ void drawEllipse (Rectangle<float> area, float lineThickness) const;\r
\r
//==============================================================================\r
/** Draws a line between two points.\r
const AffineTransform& transform,\r
bool fillAlphaChannelWithCurrentBrush = false) const;\r
\r
+ /** Draws an image to fit within a designated rectangle.\r
+\r
+ @param imageToDraw the source image to draw\r
+ @param destArea the target rectangle to fit it into\r
+ @param placementWithinTarget this specifies how the image should be positioned\r
+ within the target rectangle - see the RectanglePlacement\r
+ class for more details about this.\r
+ @param fillAlphaChannelWithCurrentBrush if true, then instead of drawing the image, just its\r
+ alpha channel will be used as a mask with which to\r
+ draw with the current brush or colour. This is\r
+ similar to fillAlphaMap(), and see also drawImage()\r
+ @see drawImage, drawImageTransformed, drawImageAt, RectanglePlacement\r
+ */\r
+ void drawImage (const Image& imageToDraw, Rectangle<float> targetArea,\r
+ RectanglePlacement placementWithinTarget = RectanglePlacement::stretchToFit,\r
+ bool fillAlphaChannelWithCurrentBrush = false) const;\r
+\r
/** Draws an image to fit within a designated rectangle.\r
\r
If the image is too big or too small for the space, it will be rescaled\r
RectanglePlacement placementWithinTarget,\r
bool fillAlphaChannelWithCurrentBrush = false) const;\r
\r
-\r
//==============================================================================\r
/** Returns the position of the bounding box for the current clipping region.\r
@see getClipRegion, clipRegionIntersects\r
method can be used to optimise a component's paint() method, by letting it\r
avoid drawing complex objects that aren't within the region being repainted.\r
*/\r
- bool clipRegionIntersects (const Rectangle<int>& area) const;\r
+ bool clipRegionIntersects (Rectangle<int> area) const;\r
\r
/** Intersects the current clipping region with another region.\r
\r
@returns true if the resulting clipping region is non-zero in size\r
@see setOrigin, clipRegionIntersects\r
*/\r
- bool reduceClipRegion (const Rectangle<int>& area);\r
+ bool reduceClipRegion (Rectangle<int> area);\r
\r
/** Intersects the current clipping region with a rectangle list region.\r
\r
bool reduceClipRegion (const Image& image, const AffineTransform& transform);\r
\r
/** Excludes a rectangle to stop it being drawn into. */\r
- void excludeClipRegion (const Rectangle<int>& rectangleToExclude);\r
+ void excludeClipRegion (Rectangle<int> rectangleToExclude);\r
\r
/** Returns true if no drawing can be done because the clip region is zero. */\r
bool isClipEmpty() const;\r
{\r
destPath.startNewSubPath (firstLine.rx2, firstLine.ry2);\r
\r
- if (arrowhead != nullptr)\r
+ if (arrowhead != nullptr && arrowhead->startWidth > 0.0f)\r
addArrowhead (destPath, firstLine.rx2, firstLine.ry2, lastX1, lastY1, firstLine.x1, firstLine.y1,\r
width, arrowhead->startWidth);\r
else\r
{\r
destPath.lineTo (lastX2, lastY2);\r
\r
- if (arrowhead != nullptr)\r
+ if (arrowhead != nullptr && arrowhead->endWidth > 0.0f)\r
addArrowhead (destPath, lastX2, lastY2, lastLine.rx1, lastLine.ry1, lastLine.x2, lastLine.y2,\r
width, arrowhead->endWidth);\r
else\r
sendDataChangeMessage();\r
}\r
\r
- ImagePixelData* clone() override\r
+ ImagePixelData::Ptr clone() override\r
{\r
SoftwarePixelData* s = new SoftwarePixelData (pixelFormat, width, height, false);\r
memcpy (s->imageData, imageData, (size_t) (lineStride * height));\r
public:\r
SubsectionPixelData (ImagePixelData* const im, const Rectangle<int>& r)\r
: ImagePixelData (im->pixelFormat, r.getWidth(), r.getHeight()),\r
- image (im), area (r)\r
+ sourceImage (im), area (r)\r
{\r
}\r
\r
LowLevelGraphicsContext* createLowLevelContext() override\r
{\r
- LowLevelGraphicsContext* g = image->createLowLevelContext();\r
+ LowLevelGraphicsContext* g = sourceImage->createLowLevelContext();\r
g->clipToRectangle (area);\r
g->setOrigin (area.getPosition());\r
return g;\r
\r
void initialiseBitmapData (Image::BitmapData& bitmap, int x, int y, Image::BitmapData::ReadWriteMode mode) override\r
{\r
- image->initialiseBitmapData (bitmap, x + area.getX(), y + area.getY(), mode);\r
+ sourceImage->initialiseBitmapData (bitmap, x + area.getX(), y + area.getY(), mode);\r
\r
if (mode != Image::BitmapData::readOnly)\r
sendDataChangeMessage();\r
}\r
\r
- ImagePixelData* clone() override\r
+ ImagePixelData::Ptr clone() override\r
{\r
jassert (getReferenceCount() > 0); // (This method can't be used on an unowned pointer, as it will end up self-deleting)\r
- const ScopedPointer<ImageType> type (image->createType());\r
+ const ScopedPointer<ImageType> type (createType());\r
\r
Image newImage (type->create (pixelFormat, area.getWidth(), area.getHeight(), pixelFormat != Image::RGB));\r
\r
g.drawImageAt (Image (this), 0, 0);\r
}\r
\r
- newImage.getPixelData()->incReferenceCount();\r
return newImage.getPixelData();\r
}\r
\r
- ImageType* createType() const override { return image->createType(); }\r
+ ImageType* createType() const override { return sourceImage->createType(); }\r
\r
/* as we always hold a reference to image, don't double count */\r
- int getSharedCount() const noexcept override { return getReferenceCount() + image->getSharedCount() - 1; }\r
+ int getSharedCount() const noexcept override { return getReferenceCount() + sourceImage->getSharedCount() - 1; }\r
\r
private:\r
friend class Image;\r
- const ImagePixelData::Ptr image;\r
+ const ImagePixelData::Ptr sourceImage;\r
const Rectangle<int> area;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SubsectionPixelData)\r
ImagePixelData (Image::PixelFormat, int width, int height);\r
~ImagePixelData();\r
\r
+ typedef ReferenceCountedObjectPtr<ImagePixelData> Ptr;\r
+\r
/** Creates a context that will draw into this image. */\r
virtual LowLevelGraphicsContext* createLowLevelContext() = 0;\r
/** Creates a copy of this image. */\r
- virtual ImagePixelData* clone() = 0;\r
+ virtual Ptr clone() = 0;\r
/** Creates an instance of the type of this image. */\r
virtual ImageType* createType() const = 0;\r
/** Initialises a BitmapData object. */\r
*/\r
NamedValueSet userData;\r
\r
- typedef ReferenceCountedObjectPtr<ImagePixelData> Ptr;\r
-\r
//==============================================================================\r
struct Listener\r
{\r
\r
ID: juce_graphics\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE graphics classes\r
description: Classes for 2D vector graphics, image loading/saving, font handling, etc.\r
website: http://www.juce.com/juce\r
}\r
}\r
\r
- ImagePixelData* clone() override\r
+ ImagePixelData::Ptr clone() override\r
{\r
CoreGraphicsImage* im = new CoreGraphicsImage (pixelFormat, width, height, false);\r
memcpy (im->imageData, imageData, (size_t) (lineStride * height));\r
The button will keep its own internal copies of these drawables.\r
\r
@param normalImage the thing to draw for the button's 'normal' state. An internal copy\r
- will be made of the object passed-in if it is non-zero.\r
+ will be made of the object passed-in if it is non-null.\r
@param overImage the thing to draw for the button's 'over' state - if this is\r
- zero, the button's normal image will be used when the mouse is\r
+ null, the button's normal image will be used when the mouse is\r
over it. An internal copy will be made of the object passed-in\r
- if it is non-zero.\r
+ if it is non-null.\r
@param downImage the thing to draw for the button's 'down' state - if this is\r
- zero, the 'over' image will be used instead (or the normal image\r
+ null, the 'over' image will be used instead (or the normal image\r
as a last resort). An internal copy will be made of the object\r
- passed-in if it is non-zero.\r
- @param disabledImage an image to draw when the button is disabled. If this is zero,\r
+ passed-in if it is non-null.\r
+ @param disabledImage an image to draw when the button is disabled. If this is null,\r
the normal image will be drawn with a reduced opacity instead.\r
An internal copy will be made of the object passed-in if it is\r
- non-zero.\r
+ non-null.\r
@param normalImageOn same as the normalImage, but this is used when the button's toggle\r
state is 'on'. If this is nullptr, the normal image is used instead\r
@param overImageOn same as the overImage, but this is used when the button's toggle\r
->callFunctionOnMessageThread (&ComponentHelpers::runModalLoopCallback, this);\r
}\r
\r
- if (! isCurrentlyModal())\r
+ if (! isCurrentlyModal (false))\r
enterModalState (true);\r
\r
return ModalComponentManager::getInstance()->runEventLoopForCurrentComponent();\r
// thread, you'll need to use a MessageManagerLock object to make sure it's thread-safe.\r
ASSERT_MESSAGE_MANAGER_IS_LOCKED\r
\r
- if (! isCurrentlyModal())\r
+ if (! isCurrentlyModal (false))\r
{\r
ModalComponentManager& mcm = *ModalComponentManager::getInstance();\r
mcm.startModal (this, deleteWhenDismissed);\r
\r
void Component::exitModalState (const int returnValue)\r
{\r
- if (isCurrentlyModal())\r
+ if (isCurrentlyModal (false))\r
{\r
if (MessageManager::getInstance()->isThisTheMessageThread())\r
{\r
}\r
}\r
\r
-bool Component::isCurrentlyModal() const noexcept\r
+bool Component::isCurrentlyModal (bool onlyConsiderForemostModalComponent) const noexcept\r
{\r
- return getCurrentlyModalComponent() == this;\r
+ const int n = onlyConsiderForemostModalComponent ? 1 : getNumCurrentlyModalComponents();\r
+\r
+ for (int i = 0; i < n; ++i)\r
+ if (getCurrentlyModalComponent (i) == this)\r
+ return true;\r
+\r
+ return false;\r
}\r
\r
bool Component::isCurrentlyBlockedByAnotherModalComponent() const\r
{\r
const WeakReference<Component> safePointer (this);\r
\r
- focusLost (focusChangedDirectly);\r
+ focusLost (cause);\r
\r
if (safePointer != nullptr)\r
internalChildFocusChange (cause, safePointer);\r
/** Returns true if this component is the modal one.\r
\r
It's possible to have nested modal components, e.g. a pop-up dialog box\r
- that launches another pop-up, but this will only return true for\r
- the one at the top of the stack.\r
+ that launches another pop-up. If onlyConsiderForemostModalComponent is\r
+ true then isCurrentlyModal will only return true for the one at the top\r
+ of the stack. If onlyConsiderForemostModalComponent is false then\r
+ isCurrentlyModal will return true for any modal component in the stack.\r
\r
@see getCurrentlyModalComponent\r
*/\r
- bool isCurrentlyModal() const noexcept;\r
+ bool isCurrentlyModal (bool onlyConsiderForemostModalComponent = true) const noexcept;\r
\r
/** Returns the number of components that are currently in a modal state.\r
@see getCurrentlyModalComponent\r
return numModal > 0;\r
}\r
\r
+//==============================================================================\r
#if JUCE_MODAL_LOOPS_PERMITTED\r
class ModalComponentManager::ReturnValueRetriever : public ModalComponentManager::Callback\r
{\r
public:\r
ReturnValueRetriever (int& v, bool& done) : value (v), finished (done) {}\r
\r
- void modalStateFinished (int returnValue)\r
+ void modalStateFinished (int returnValue) override\r
{\r
finished = true;\r
value = returnValue;\r
return returnValue;\r
}\r
#endif\r
+\r
+//==============================================================================\r
+#if JUCE_COMPILER_SUPPORTS_LAMBDAS\r
+struct LambdaCallback : public ModalComponentManager::Callback\r
+{\r
+ LambdaCallback (std::function<void(int)> fn) noexcept : function (fn) {}\r
+ void modalStateFinished (int result) override { function (result); }\r
+\r
+ std::function<void(int)> function;\r
+\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LambdaCallback)\r
+};\r
+\r
+ModalComponentManager::Callback* ModalCallbackFunction::create (std::function<void(int)> f)\r
+{\r
+ return new LambdaCallback (f);\r
+}\r
+#endif\r
static ModalComponentManager::Callback* create (void (*functionToCall) (int, ParamType),\r
ParamType parameterValue)\r
{\r
- return new FunctionCaller1 <ParamType> (functionToCall, parameterValue);\r
+ return new FunctionCaller1<ParamType> (functionToCall, parameterValue);\r
}\r
\r
+ #if JUCE_COMPILER_SUPPORTS_LAMBDAS\r
+ /** This is a utility function to create a ModalComponentManager::Callback that will\r
+ call a lambda function.\r
+ The lambda that you supply must take an integer parameter, which is the result code that\r
+ was returned when the modal component was dismissed.\r
+\r
+ @see ModalComponentManager::Callback\r
+ */\r
+ static ModalComponentManager::Callback* create (std::function<void(int)>);\r
+ #endif\r
+\r
//==============================================================================\r
/** This is a utility function to create a ModalComponentManager::Callback that will\r
call a static function with two custom parameters.\r
ParamType1 parameterValue1,\r
ParamType2 parameterValue2)\r
{\r
- return new FunctionCaller2 <ParamType1, ParamType2> (functionToCall, parameterValue1, parameterValue2);\r
+ return new FunctionCaller2<ParamType1, ParamType2> (functionToCall, parameterValue1, parameterValue2);\r
}\r
\r
//==============================================================================\r
static ModalComponentManager::Callback* forComponent (void (*functionToCall) (int, ComponentType*),\r
ComponentType* component)\r
{\r
- return new ComponentCaller1 <ComponentType> (functionToCall, component);\r
+ return new ComponentCaller1<ComponentType> (functionToCall, component);\r
}\r
\r
//==============================================================================\r
ComponentType* component,\r
ParamType param)\r
{\r
- return new ComponentCaller2 <ComponentType, ParamType> (functionToCall, component, param);\r
+ return new ComponentCaller2<ComponentType, ParamType> (functionToCall, component, param);\r
}\r
\r
private:\r
//==============================================================================\r
template <typename ParamType>\r
- class FunctionCaller1 : public ModalComponentManager::Callback\r
+ struct FunctionCaller1 : public ModalComponentManager::Callback\r
{\r
- public:\r
typedef void (*FunctionType) (int, ParamType);\r
\r
FunctionCaller1 (FunctionType& f, ParamType& p1)\r
: function (f), param (p1) {}\r
\r
- void modalStateFinished (int returnValue) { function (returnValue, param); }\r
+ void modalStateFinished (int returnValue) override { function (returnValue, param); }\r
\r
private:\r
const FunctionType function;\r
};\r
\r
template <typename ParamType1, typename ParamType2>\r
- class FunctionCaller2 : public ModalComponentManager::Callback\r
+ struct FunctionCaller2 : public ModalComponentManager::Callback\r
{\r
- public:\r
typedef void (*FunctionType) (int, ParamType1, ParamType2);\r
\r
FunctionCaller2 (FunctionType& f, ParamType1& p1, ParamType2& p2)\r
: function (f), param1 (p1), param2 (p2) {}\r
\r
- void modalStateFinished (int returnValue) { function (returnValue, param1, param2); }\r
+ void modalStateFinished (int returnValue) override { function (returnValue, param1, param2); }\r
\r
private:\r
const FunctionType function;\r
};\r
\r
template <typename ComponentType>\r
- class ComponentCaller1 : public ModalComponentManager::Callback\r
+ struct ComponentCaller1 : public ModalComponentManager::Callback\r
{\r
- public:\r
typedef void (*FunctionType) (int, ComponentType*);\r
\r
ComponentCaller1 (FunctionType& f, ComponentType* c)\r
: function (f), comp (c) {}\r
\r
- void modalStateFinished (int returnValue)\r
+ void modalStateFinished (int returnValue) override\r
{\r
function (returnValue, static_cast<ComponentType*> (comp.get()));\r
}\r
};\r
\r
template <typename ComponentType, typename ParamType1>\r
- class ComponentCaller2 : public ModalComponentManager::Callback\r
+ struct ComponentCaller2 : public ModalComponentManager::Callback\r
{\r
- public:\r
typedef void (*FunctionType) (int, ComponentType*, ParamType1);\r
\r
ComponentCaller2 (FunctionType& f, ComponentType* c, ParamType1 p1)\r
: function (f), comp (c), param1 (p1) {}\r
\r
- void modalStateFinished (int returnValue)\r
+ void modalStateFinished (int returnValue) override\r
{\r
function (returnValue, static_cast<ComponentType*> (comp.get()), param1);\r
}\r
const XmlPath* parent;\r
};\r
\r
+ //==============================================================================\r
+ struct UsePathOp\r
+ {\r
+ const SVGState* state;\r
+ Path* targetPath;\r
+\r
+ void operator() (const XmlPath& xmlPath)\r
+ {\r
+ state->parsePathElement (xmlPath, *targetPath);\r
+ }\r
+ };\r
+\r
+ struct GetClipPathOp\r
+ {\r
+ const SVGState* state;\r
+ Drawable* target;\r
+\r
+ void operator() (const XmlPath& xmlPath)\r
+ {\r
+ state->applyClipPath (*target, xmlPath);\r
+ }\r
+ };\r
+\r
+ struct SetGradientStopsOp\r
+ {\r
+ const SVGState* state;\r
+ ColourGradient* gradient;\r
+\r
+ void operator() (const XmlPath& xml)\r
+ {\r
+ state->addGradientStopsIn (*gradient, xml);\r
+ }\r
+ };\r
+\r
+ struct GetFillTypeOp\r
+ {\r
+ const SVGState* state;\r
+ const Path* path;\r
+ float opacity;\r
+ FillType fillType;\r
+\r
+ void operator() (const XmlPath& xml)\r
+ {\r
+ if (xml->hasTagNameIgnoringNamespace ("linearGradient")\r
+ || xml->hasTagNameIgnoringNamespace ("radialGradient"))\r
+ fillType = state->getGradientFillType (xml, *path, opacity);\r
+ }\r
+ };\r
+\r
//==============================================================================\r
Drawable* parseSVGElement (const XmlPath& xml)\r
{\r
{\r
const String linkedID = link.substring (1);\r
\r
- struct UsePathOp\r
- {\r
- const SVGState* state;\r
- Path* targetPath;\r
-\r
- void operator() (const XmlPath& xmlPath)\r
- {\r
- state->parsePathElement (xmlPath, *targetPath);\r
- }\r
- };\r
-\r
UsePathOp op = { this, &path };\r
topLevelXml.applyOperationToChildWithID (linkedID, op);\r
}\r
\r
if (urlID.isNotEmpty())\r
{\r
- struct GetClipPathOp\r
- {\r
- const SVGState* state;\r
- Drawable* target;\r
-\r
- void operator() (const XmlPath& xmlPath)\r
- {\r
- state->applyClipPath (*target, xmlPath);\r
- }\r
- };\r
-\r
GetClipPathOp op = { this, &d };\r
topLevelXml.applyOperationToChildWithID (urlID, op);\r
}\r
\r
if (id.startsWithChar ('#'))\r
{\r
- struct SetGradientStopsOp\r
- {\r
- const SVGState* state;\r
- ColourGradient* gradient;\r
-\r
- void operator() (const XmlPath& xml)\r
- {\r
- state->addGradientStopsIn (*gradient, xml);\r
- }\r
- };\r
-\r
SetGradientStopsOp op = { this, &gradient, };\r
topLevelXml.applyOperationToChildWithID (id.substring (1), op);\r
}\r
\r
if (urlID.isNotEmpty())\r
{\r
- struct GetFillTypeOp\r
- {\r
- const SVGState* state;\r
- const Path* path;\r
- float opacity;\r
- FillType fillType;\r
-\r
- void operator() (const XmlPath& xml)\r
- {\r
- if (xml->hasTagNameIgnoringNamespace ("linearGradient")\r
- || xml->hasTagNameIgnoringNamespace ("radialGradient"))\r
- fillType = state->getGradientFillType (xml, *path, opacity);\r
- }\r
- };\r
-\r
GetFillTypeOp op = { this, &path, opacity, FillType() };\r
\r
if (topLevelXml.applyOperationToChildWithID (urlID, op))\r
}\r
else\r
{\r
- WildcardFileFilter wildcard (selectsFiles ? filters : String::empty,\r
- selectsDirectories ? "*" : String::empty,\r
- String::empty);\r
+ ignoreUnused (selectMultiple);\r
+\r
+ WildcardFileFilter wildcard (selectsFiles ? filters : String(),\r
+ selectsDirectories ? "*" : String(),\r
+ String());\r
\r
FileBrowserComponent browserComponent (flags, startingFile, &wildcard, previewComp);\r
\r
- FileChooserDialogBox box (title, String::empty,\r
+ FileChooserDialogBox box (title, String(),\r
browserComponent, warnAboutOverwrite,\r
browserComponent.findColour (AlertWindow::backgroundColourId));\r
\r
\r
ID: juce_gui_basics\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE GUI core classes\r
description: Basic user-interface components and related classes.\r
website: http://www.juce.com/juce\r
{\r
// some keyboard layouts use a shift-key to get the slash, but in those cases, we\r
// want to store it as being a slash, not shift+whatever.\r
- if (textCharacter == '/')\r
+ if (textCharacter == '/' && keyCode != numberPadDivide)\r
return "/";\r
\r
if (mods.isCtrlDown()) desc << "ctrl + ";\r
g.drawFittedText (itemText, 0, 0, width, height, Justification::centred, 1);\r
}\r
\r
+Component* LookAndFeel_V2::getParentComponentForMenuOptions (const PopupMenu::Options& options)\r
+{\r
+ return options.getParentComponent();\r
+}\r
+\r
//==============================================================================\r
void LookAndFeel_V2::fillTextEditorBackground (Graphics& g, int /*width*/, int /*height*/, TextEditor& textEditor)\r
{\r
bool isMouseOverItem, bool isMenuOpen, bool isMouseOverBar,\r
MenuBarComponent&) override;\r
\r
+ Component* getParentComponentForMenuOptions (const PopupMenu::Options& options) override;\r
+\r
//==============================================================================\r
void drawComboBox (Graphics&, int width, int height, bool isButtonDown,\r
int buttonX, int buttonY, int buttonW, int buttonH,\r
\r
const Colour textButtonColour (0xffeeeeff);\r
setColour (TextButton::buttonColourId, textButtonColour);\r
- setColour (TextButton::buttonOnColourId, textButtonColour);\r
+ setColour (TextButton::buttonOnColourId, Colour (0xff000000));\r
setColour (ComboBox::buttonColourId, textButtonColour);\r
setColour (TextEditor::outlineColourId, Colours::transparentBlack);\r
setColour (TabbedButtonBar::tabOutlineColourId, Colour (0x66000000));\r
\r
void updateShortcutKeyDescription()\r
{\r
- if (item.commandManager != nullptr && item.itemID != 0)\r
+ if (item.commandManager != nullptr\r
+ && item.itemID != 0\r
+ && item.shortcutKeyDescription.isEmpty())\r
{\r
String shortcutKey;\r
const Array<KeyPress> keyPresses (item.commandManager->getKeyMappings()\r
options (opts),\r
managerOfChosenCommand (manager),\r
componentAttachedTo (options.targetComponent),\r
+ parentComponent (nullptr),\r
hasBeenOver (false),\r
needsToScroll (false),\r
dismissOnMouseUp (shouldDismissOnMouseUp),\r
setLookAndFeel (parent != nullptr ? &(parent->getLookAndFeel())\r
: menu.lookAndFeel.get());\r
\r
+ parentComponent = getLookAndFeel().getParentComponentForMenuOptions (options);\r
+\r
setOpaque (getLookAndFeel().findColour (PopupMenu::backgroundColourId).isOpaque()\r
|| ! Desktop::canUseSemiTransparentWindows());\r
\r
\r
if (options.visibleItemID != 0)\r
{\r
- const int y = options.targetArea.getY() - windowPos.getY();\r
+ const Point<int> targetPosition =\r
+ (parentComponent != nullptr ? parentComponent->getLocalPoint (nullptr, options.targetArea.getTopLeft())\r
+ : options.targetArea.getTopLeft());\r
+\r
+ const int y = targetPosition.getY() - windowPos.getY();\r
ensureItemIsVisible (options.visibleItemID,\r
isPositiveAndBelow (y, windowPos.getHeight()) ? y : -1);\r
}\r
\r
resizeToBestWindowPos();\r
- addToDesktop (ComponentPeer::windowIsTemporary\r
- | ComponentPeer::windowIgnoresKeyPresses\r
- | getLookAndFeel().getMenuWindowFlags());\r
\r
- getActiveWindows().add (this);\r
- Desktop::getInstance().addGlobalMouseListener (this);\r
+ if (parentComponent != nullptr)\r
+ {\r
+ parentComponent->addChildComponent (this);\r
+ }\r
+ else\r
+ {\r
+ addToDesktop (ComponentPeer::windowIsTemporary\r
+ | ComponentPeer::windowIgnoresKeyPresses\r
+ | getLookAndFeel().getMenuWindowFlags());\r
+\r
+ getActiveWindows().add (this);\r
+ Desktop::getInstance().addGlobalMouseListener (this);\r
+ }\r
}\r
\r
~MenuWindow()\r
\r
void paintOverChildren (Graphics& g) override\r
{\r
+ LookAndFeel& lf = getLookAndFeel();\r
+\r
+ if (parentComponent != nullptr)\r
+ lf.drawResizableFrame (g, getWidth(), getHeight(), BorderSize<int> (PopupMenuSettings::borderSize));\r
+\r
if (canScroll())\r
{\r
- LookAndFeel& lf = getLookAndFeel();\r
-\r
if (isTopScrollZoneActive())\r
lf.drawPopupMenuUpDownArrow (g, getWidth(), PopupMenuSettings::scrollZone, true);\r
\r
}\r
\r
//==============================================================================\r
- void calculateWindowPos (const Rectangle<int>& target, const bool alignToRectangle)\r
+ Rectangle<int> getParentArea (Point<int> targetPoint)\r
{\r
- const Rectangle<int> mon (Desktop::getInstance().getDisplays()\r
- .getDisplayContaining (target.getCentre())\r
- #if JUCE_MAC\r
- .userArea);\r
- #else\r
- .totalArea); // on windows, don't stop the menu overlapping the taskbar\r
- #endif\r
+ Rectangle<int> parentArea (Desktop::getInstance().getDisplays()\r
+ .getDisplayContaining (targetPoint)\r
+ #if JUCE_MAC\r
+ .userArea);\r
+ #else\r
+ .totalArea); // on windows, don't stop the menu overlapping the taskbar\r
+ #endif\r
\r
- const int maxMenuHeight = mon.getHeight() - 24;\r
+ if (parentComponent == nullptr)\r
+ return parentArea;\r
+\r
+ return parentComponent->getLocalArea (nullptr,\r
+ parentComponent->getScreenBounds()\r
+ .reduced (PopupMenuSettings::borderSize)\r
+ .getIntersection (parentArea));\r
+ }\r
+\r
+ void calculateWindowPos (Rectangle<int> target, const bool alignToRectangle)\r
+ {\r
+ const Rectangle<int> parentArea = getParentArea (target.getCentre());\r
+\r
+ if (parentComponent != nullptr)\r
+ target = parentComponent->getLocalArea (nullptr, target).getIntersection (parentArea);\r
+\r
+ const int maxMenuHeight = parentArea.getHeight() - 24;\r
\r
int x, y, widthToUse, heightToUse;\r
- layoutMenuItems (mon.getWidth() - 24, maxMenuHeight, widthToUse, heightToUse);\r
+ layoutMenuItems (parentArea.getWidth() - 24, maxMenuHeight, widthToUse, heightToUse);\r
\r
if (alignToRectangle)\r
{\r
x = target.getX();\r
\r
- const int spaceUnder = mon.getHeight() - (target.getBottom() - mon.getY());\r
- const int spaceOver = target.getY() - mon.getY();\r
+ const int spaceUnder = parentArea.getHeight() - (target.getBottom() - parentArea.getY());\r
+ const int spaceOver = target.getY() - parentArea.getY();\r
\r
if (heightToUse < spaceUnder - 30 || spaceUnder >= spaceOver)\r
y = target.getBottom();\r
}\r
else\r
{\r
- bool tendTowardsRight = target.getCentreX() < mon.getCentreX();\r
+ bool tendTowardsRight = target.getCentreX() < parentArea.getCentreX();\r
\r
if (parent != nullptr)\r
{\r
const bool parentGoingRight = (parent->getX() + parent->getWidth() / 2\r
> parent->parent->getX() + parent->parent->getWidth() / 2);\r
\r
- if (parentGoingRight && target.getRight() + widthToUse < mon.getRight() - 4)\r
+ if (parentGoingRight && target.getRight() + widthToUse < parentArea.getRight() - 4)\r
tendTowardsRight = true;\r
else if ((! parentGoingRight) && target.getX() > widthToUse + 4)\r
tendTowardsRight = false;\r
}\r
- else if (target.getRight() + widthToUse < mon.getRight() - 32)\r
+ else if (target.getRight() + widthToUse < parentArea.getRight() - 32)\r
{\r
tendTowardsRight = true;\r
}\r
}\r
\r
- const int biggestSpace = jmax (mon.getRight() - target.getRight(),\r
- target.getX() - mon.getX()) - 32;\r
+ const int biggestSpace = jmax (parentArea.getRight() - target.getRight(),\r
+ target.getX() - parentArea.getX()) - 32;\r
\r
if (biggestSpace < widthToUse)\r
{\r
if (numColumns > 1)\r
layoutMenuItems (biggestSpace - 4, maxMenuHeight, widthToUse, heightToUse);\r
\r
- tendTowardsRight = (mon.getRight() - target.getRight()) >= (target.getX() - mon.getX());\r
+ tendTowardsRight = (parentArea.getRight() - target.getRight()) >= (target.getX() - parentArea.getX());\r
}\r
\r
if (tendTowardsRight)\r
- x = jmin (mon.getRight() - widthToUse - 4, target.getRight());\r
+ x = jmin (parentArea.getRight() - widthToUse - 4, target.getRight());\r
else\r
- x = jmax (mon.getX() + 4, target.getX() - widthToUse);\r
+ x = jmax (parentArea.getX() + 4, target.getX() - widthToUse);\r
\r
y = target.getY();\r
- if (target.getCentreY() > mon.getCentreY())\r
- y = jmax (mon.getY(), target.getBottom() - heightToUse);\r
+ if (target.getCentreY() > parentArea.getCentreY())\r
+ y = jmax (parentArea.getY(), target.getBottom() - heightToUse);\r
}\r
\r
- x = jmax (mon.getX() + 1, jmin (mon.getRight() - (widthToUse + 6), x));\r
- y = jmax (mon.getY() + 1, jmin (mon.getBottom() - (heightToUse + 6), y));\r
+ x = jmax (parentArea.getX() + 1, jmin (parentArea.getRight() - (widthToUse + 6), x));\r
+ y = jmax (parentArea.getY() + 1, jmin (parentArea.getBottom() - (heightToUse + 6), y));\r
\r
windowPos.setBounds (x, y, widthToUse, heightToUse);\r
\r
childNum += numChildren;\r
}\r
\r
- if (totalW < options.minWidth)\r
+ // width must never be larger than the screen\r
+ const int minWidth = jmin (maxMenuW, options.minWidth);\r
+\r
+ if (totalW < minWidth)\r
{\r
- totalW = options.minWidth;\r
+ totalW = minWidth;\r
\r
for (int col = 0; col < numColumns; ++col)\r
columnWidths.set (0, totalW / numColumns);\r
windowPos.getHeight() - (PopupMenuSettings::scrollZone + m->getHeight())),\r
currentY);\r
\r
- const Rectangle<int> mon (Desktop::getInstance().getDisplays()\r
- .getDisplayContaining (windowPos.getPosition()).userArea);\r
+ const Rectangle<int> parantArea = getParentArea (windowPos.getPosition());\r
\r
int deltaY = wantedY - currentY;\r
\r
- windowPos.setSize (jmin (windowPos.getWidth(), mon.getWidth()),\r
- jmin (windowPos.getHeight(), mon.getHeight()));\r
+ windowPos.setSize (jmin (windowPos.getWidth(), parantArea.getWidth()),\r
+ jmin (windowPos.getHeight(), parantArea.getHeight()));\r
\r
- const int newY = jlimit (mon.getY(),\r
- mon.getBottom() - windowPos.getHeight(),\r
+ const int newY = jlimit (parantArea.getY(),\r
+ parantArea.getBottom() - windowPos.getHeight(),\r
windowPos.getY() + deltaY);\r
\r
deltaY -= newY - windowPos.getY();\r
OwnedArray<ItemComponent> items;\r
ApplicationCommandManager** managerOfChosenCommand;\r
WeakReference<Component> componentAttachedTo;\r
+ Component* parentComponent;\r
Rectangle<int> windowPos;\r
bool hasBeenOver, needsToScroll;\r
bool dismissOnMouseUp, hideOnExit, disableMouseMoves, hasAnyJuceCompHadFocus;\r
//==============================================================================\r
PopupMenu::Options::Options()\r
: targetComponent (nullptr),\r
+ parentComponent (nullptr),\r
visibleItemID (0),\r
minWidth (0),\r
maxColumns (0),\r
return o;\r
}\r
\r
+PopupMenu::Options PopupMenu::Options::withParentComponent (Component* parent) const noexcept\r
+{\r
+ Options o (*this);\r
+ o.parentComponent = parent;\r
+ return o;\r
+}\r
+\r
Component* PopupMenu::createWindow (const Options& options,\r
ApplicationCommandManager** managerOfChosenCommand) const\r
{\r
PopupMenuSettings::menuWasHiddenBecauseOfAppChange = false;\r
}\r
\r
- void modalStateFinished (int result)\r
+ void modalStateFinished (int result) override\r
{\r
if (managerOfChosenCommand != nullptr && result != 0)\r
{\r
public:\r
Options();\r
\r
+ //==============================================================================\r
Options withTargetComponent (Component* targetComponent) const noexcept;\r
Options withTargetScreenArea (const Rectangle<int>& targetArea) const noexcept;\r
Options withMinimumWidth (int minWidth) const noexcept;\r
Options withMaximumNumColumns (int maxNumColumns) const noexcept;\r
Options withStandardItemHeight (int standardHeight) const noexcept;\r
Options withItemThatMustBeVisible (int idOfItemToBeVisible) const noexcept;\r
+ Options withParentComponent (Component* parentComponent) const noexcept;\r
+\r
+ //==============================================================================\r
+ Component* getParentComponent() const noexcept { return parentComponent; }\r
+ Component* getTargetComponent() const noexcept { return targetComponent; }\r
+ Rectangle<int> getTargetScreenArea() const noexcept { return targetArea; }\r
+ int getMinimumWidth() const noexcept { return minWidth; }\r
+ int getMaximumNumColumns() const noexcept { return maxColumns; }\r
+ int getStandardItemHeight() const noexcept { return standardHeight; }\r
+ int getItemThatMustBeVisible() const noexcept { return visibleItemID; }\r
\r
private:\r
+ //==============================================================================\r
friend class PopupMenu;\r
friend class PopupMenu::Window;\r
Rectangle<int> targetArea;\r
Component* targetComponent;\r
+ Component* parentComponent;\r
int visibleItemID, minWidth, maxColumns, standardHeight;\r
};\r
\r
bool isMenuOpen,\r
bool isMouseOverBar,\r
MenuBarComponent&) = 0;\r
+\r
+ virtual Component* getParentComponentForMenuOptions (const PopupMenu::Options& options) = 0;\r
};\r
\r
private:\r
int sizeAllocated;\r
float scale;\r
\r
- class PreallocatedImage : public ImagePixelData\r
+ struct PreallocatedImage : public ImagePixelData\r
{\r
- public:\r
PreallocatedImage (const int width_, const int height_, jint* data_, bool hasAlpha_)\r
: ImagePixelData (Image::ARGB, width_, height_), data (data_), hasAlpha (hasAlpha_)\r
{\r
bm.data = (uint8*) (data + x + y * width);\r
}\r
\r
- ImagePixelData* clone()\r
+ ImagePixelData::Ptr clone()\r
{\r
PreallocatedImage* s = new PreallocatedImage (width, height, 0, hasAlpha);\r
s->allocatedData.malloc (sizeof (jint) * width * height);\r
{\r
}\r
\r
+@property (strong, nonatomic) UIWindow *window;\r
- (void) applicationDidFinishLaunching: (UIApplication*) application;\r
- (void) applicationWillTerminate: (UIApplication*) application;\r
- (void) applicationDidEnterBackground: (UIApplication*) application;\r
else\r
addZenityArgs (args, separator, title, file, filters, isDirectory, isSave, selectMultipleFiles);\r
\r
- args.add ("2>/dev/null"); // (to avoid logging info ending up in the results)\r
-\r
ChildProcess child;\r
\r
if (child.start (args, ChildProcess::wantStdOut))\r
sendDataChangeMessage();\r
}\r
\r
- ImagePixelData* clone() override\r
+ ImagePixelData::Ptr clone() override\r
{\r
jassertfalse;\r
return nullptr;\r
e.dpi = ((static_cast<double> (crtc->width) * 25.4 * 0.5) / static_cast<double> (output->mm_width))\r
+ ((static_cast<double> (crtc->height) * 25.4 * 0.5) / static_cast<double> (output->mm_height));\r
\r
- e.scale = masterScale * getScaleForDisplay (output->name, e);\r
+ double scale = getScaleForDisplay (output->name, e);\r
+ scale = (scale <= 0.1 ? 1.0 : scale);\r
+\r
+ e.scale = masterScale * scale;\r
\r
infos.add (e);\r
}\r
hotspotX = (hotspotX * (int) cursorW) / (int) imageW;\r
hotspotY = (hotspotY * (int) cursorH) / (int) imageH;\r
\r
- g.drawImageWithin (image, 0, 0, (int) imageW, (int) imageH,\r
- RectanglePlacement::xLeft | RectanglePlacement::yTop | RectanglePlacement::onlyReduceInSize,\r
- false);\r
+ g.drawImage (image, Rectangle<float> ((float) imageW, (float) imageH),\r
+ RectanglePlacement::xLeft | RectanglePlacement::yTop | RectanglePlacement::onlyReduceInSize);\r
}\r
else\r
{\r
const int KeyPress::F8Key = NSF8FunctionKey;\r
const int KeyPress::F9Key = NSF9FunctionKey;\r
const int KeyPress::F10Key = NSF10FunctionKey;\r
-const int KeyPress::F11Key = NSF1FunctionKey;\r
+const int KeyPress::F11Key = NSF11FunctionKey;\r
const int KeyPress::F12Key = NSF12FunctionKey;\r
const int KeyPress::F13Key = NSF13FunctionKey;\r
const int KeyPress::F14Key = NSF14FunctionKey;\r
#define WM_APPCOMMAND 0x0319\r
#endif\r
\r
+#if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ #include <juce_audio_plugin_client/AAX/juce_AAX_Modifier_Injector.h>\r
+#endif\r
+\r
extern void juce_repeatLastProcessPriority();\r
extern void juce_checkCurrentlyFocusedTopLevelWindow(); // in juce_TopLevelWindow.cpp\r
extern bool juce_isRunningInWine();\r
sendDataChangeMessage();\r
}\r
\r
- ImagePixelData* clone() override\r
+ ImagePixelData::Ptr clone() override\r
{\r
WindowsBitmapImage* im = new WindowsBitmapImage (pixelFormat, width, height, false);\r
\r
\r
//==============================================================================\r
class HWNDComponentPeer : public ComponentPeer\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ , public ModifierKeyReceiver\r
+ #endif\r
{\r
public:\r
enum RenderingEngineType\r
currentWindowIcon (0),\r
dropTarget (nullptr),\r
updateLayeredWindowAlpha (255)\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ , modProvider (nullptr)\r
+ #endif\r
{\r
callFunctionIfNotLocked (&createWindowCallback, this);\r
\r
JuceDropTarget* dropTarget;\r
uint8 updateLayeredWindowAlpha;\r
MultiTouchMapper<DWORD> currentTouches;\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ ModifierKeyProvider* modProvider;\r
+ #endif\r
\r
//==============================================================================\r
class TemporaryImage : public Timer\r
\r
updateKeyModifiers();\r
\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ if (modProvider != nullptr)\r
+ currentModifiers = currentModifiers.withFlags (modProvider->getWin32Modifiers());\r
+ #endif\r
+\r
TRACKMOUSEEVENT tme;\r
tme.cbSize = sizeof (tme);\r
tme.dwFlags = TME_LEAVE;\r
if (isValidPeer (this))\r
{\r
updateModifiersFromWParam (wParam);\r
+\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ if (modProvider != nullptr)\r
+ currentModifiers = currentModifiers.withFlags (modProvider->getWin32Modifiers());\r
+ #endif\r
+\r
isDragging = true;\r
\r
doMouseEvent (position, MouseInputSource::invalidPressure);\r
return;\r
\r
updateModifiersFromWParam (wParam);\r
+\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ if (modProvider != nullptr)\r
+ currentModifiers = currentModifiers.withFlags (modProvider->getWin32Modifiers());\r
+ #endif\r
+\r
const bool wasDragging = isDragging;\r
isDragging = false;\r
\r
{\r
}\r
\r
+ //==============================================================================\r
+ #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client\r
+ void setModifierKeyProvider (ModifierKeyProvider* provider) override\r
+ {\r
+ modProvider = provider;\r
+ }\r
+\r
+ void removeModifierKeyProvider() override\r
+ {\r
+ modProvider = nullptr;\r
+ }\r
+ #endif\r
+\r
//==============================================================================\r
public:\r
static LRESULT CALLBACK windowProc (HWND h, UINT message, WPARAM wParam, LPARAM lParam)\r
void ImageComponent::paint (Graphics& g)\r
{\r
g.setOpacity (1.0f);\r
- g.drawImageWithin (image, 0, 0, getWidth(), getHeight(), placement, false);\r
+ g.drawImage (image, getLocalBounds().toFloat(), placement);\r
}\r
fixedSize (fixedSize_),\r
drawBar (drawBar_)\r
{\r
+ setWantsKeyboardFocus (false);\r
}\r
\r
bool getToolbarItemSizes (int toolbarThickness, bool /*isToolbarVertical*/,\r
\r
@see contentAreaChanged\r
*/\r
- const Rectangle<int>& getContentArea() const noexcept { return contentArea; }\r
+ Rectangle<int> getContentArea() const noexcept { return contentArea; }\r
\r
//==============================================================================\r
/** This method must return the size criteria for this item, based on a given toolbar\r
\r
addToDesktop (ComponentPeer::windowHasDropShadow\r
| ComponentPeer::windowIsTemporary\r
- | ComponentPeer::windowIgnoresKeyPresses);\r
+ | ComponentPeer::windowIgnoresKeyPresses\r
+ | ComponentPeer::windowIgnoresMouseClicks);\r
}\r
\r
toFront (false);\r
\r
ID: juce_gui_extra\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE extended GUI classes\r
description: Miscellaneous GUI classes for specialised tasks.\r
website: http://www.juce.com/juce\r
void SystemTrayIconComponent::paint (Graphics& g)\r
{\r
if (pimpl != nullptr)\r
- g.drawImageWithin (pimpl->image, 0, 0, getWidth(), getHeight(),\r
- RectanglePlacement::xLeft | RectanglePlacement::yTop | RectanglePlacement::onlyReduceInSize, false);\r
+ g.drawImage (pimpl->image, getLocalBounds().toFloat(),\r
+ RectanglePlacement::xLeft | RectanglePlacement::yTop | RectanglePlacement::onlyReduceInSize);\r
}\r
\r
void SystemTrayIconComponent::setIconTooltip (const String& /*tooltip*/)\r
\r
ID: juce_opengl\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE OpenGL classes\r
description: Classes for rendering OpenGL in a JUCE window.\r
website: http://www.juce.com/juce\r
\r
ImageType* createType() const override { return new OpenGLImageType(); }\r
\r
- ImagePixelData* clone() override\r
+ ImagePixelData::Ptr clone() override\r
{\r
- OpenGLFrameBufferImage* im = new OpenGLFrameBufferImage (context, width, height);\r
- im->incReferenceCount();\r
+ Image newImage (new OpenGLFrameBufferImage (context, width, height));\r
+ Graphics g (newImage);\r
+ g.drawImageAt (Image (this), 0, 0, false);\r
\r
- {\r
- Image newImage (im);\r
- Graphics g (newImage);\r
- g.drawImageAt (Image (this), 0, 0, false);\r
- }\r
-\r
- im->resetReferenceCount();\r
- return im;\r
+ return newImage.getPixelData();\r
}\r
\r
void initialiseBitmapData (Image::BitmapData& bitmapData, int x, int y, Image::BitmapData::ReadWriteMode mode) override\r
\r
ID: juce_osc\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE OSC classes\r
description: Open Sound Control implementation.\r
website: http://www.juce.com/juce\r
\r
ID: juce_tracktion_marketplace\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE Tracktion marketplace support\r
description: Classes for online product authentication via the Tracktion marketplace.\r
website: http://www.juce.com/juce\r
\r
ID: juce_video\r
vendor: juce\r
- version: 4.2.1\r
+ version: 4.2.3\r
name: JUCE video playback and capture classes\r
description: Classes for playing video and capturing camera input.\r
website: http://www.juce.com/juce\r