├── .gitignore ├── Builds ├── MacOSX │ ├── Info.plist │ ├── Octogris.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── Octogris.xccheckout │ │ │ └── Octogris.xcscmblueprint │ ├── RecentFilesMenuTemplate.nib │ └── libLeap.dylib └── VisualStudio2015 │ ├── Octogris.sln │ ├── Octogris.vcxproj │ ├── Octogris.vcxproj.filters │ ├── Release_x86 │ ├── Octogris.tlog │ │ ├── CL.command.1.tlog │ │ ├── CL.read.1.tlog │ │ ├── CL.write.1.tlog │ │ ├── Octogris.lastbuildstate │ │ ├── Octogris.write.1u.tlog │ │ ├── link.command.1.tlog │ │ ├── link.read.1.tlog │ │ ├── link.write.1.tlog │ │ ├── rc.command.1.tlog │ │ ├── rc.read.1.tlog │ │ └── rc.write.1.tlog │ ├── Octogris3.dll │ ├── Octogris3.exp │ ├── Octogris3.lib │ └── resources.res │ └── resources.rc ├── HIDManager ├── HID_Config_Utilities.cpp ├── HID_Config_Utilities.h ├── HID_Error_Handler.cpp ├── HID_Error_Handler.h ├── HID_Name_Lookup.cpp ├── HID_Name_Lookup.h ├── HID_Queue_Utilities.cpp ├── HID_Queue_Utilities.h ├── HID_Utilities.cpp ├── HID_Utilities.h ├── HID_Utilities_External.h ├── IOHIDDevice_.cpp ├── IOHIDDevice_.h ├── IOHIDElement_.cpp ├── IOHIDElement_.h ├── IOHIDLib_.h ├── ImmHIDUtilAddOn.cpp └── ImmHIDUtilAddOn.h ├── JuceLibraryCode ├── AppConfig.h ├── BinaryData.cpp ├── BinaryData.h ├── JuceHeader.h ├── ReadMe.txt └── modules │ ├── juce_audio_basics │ ├── buffers │ │ ├── juce_AudioDataConverters.cpp │ │ ├── juce_AudioDataConverters.h │ │ ├── juce_AudioSampleBuffer.h │ │ ├── juce_FloatVectorOperations.cpp │ │ └── juce_FloatVectorOperations.h │ ├── effects │ │ ├── juce_Decibels.h │ │ ├── juce_FFT.cpp │ │ ├── juce_FFT.h │ │ ├── juce_IIRFilter.cpp │ │ ├── juce_IIRFilter.h │ │ ├── juce_LagrangeInterpolator.cpp │ │ ├── juce_LagrangeInterpolator.h │ │ ├── juce_LinearSmoothedValue.h │ │ └── juce_Reverb.h │ ├── juce_audio_basics.cpp │ ├── juce_audio_basics.h │ ├── juce_audio_basics.mm │ ├── juce_module_info │ ├── midi │ │ ├── juce_MidiBuffer.cpp │ │ ├── juce_MidiBuffer.h │ │ ├── juce_MidiFile.cpp │ │ ├── juce_MidiFile.h │ │ ├── juce_MidiKeyboardState.cpp │ │ ├── juce_MidiKeyboardState.h │ │ ├── juce_MidiMessage.cpp │ │ ├── juce_MidiMessage.h │ │ ├── juce_MidiMessageSequence.cpp │ │ ├── juce_MidiMessageSequence.h │ │ ├── juce_MidiRPN.cpp │ │ └── juce_MidiRPN.h │ ├── mpe │ │ ├── juce_MPEInstrument.cpp │ │ ├── juce_MPEInstrument.h │ │ ├── juce_MPEMessages.cpp │ │ ├── juce_MPEMessages.h │ │ ├── juce_MPENote.cpp │ │ ├── juce_MPENote.h │ │ ├── juce_MPESynthesiser.cpp │ │ ├── juce_MPESynthesiser.h │ │ ├── juce_MPESynthesiserBase.cpp │ │ ├── juce_MPESynthesiserBase.h │ │ ├── juce_MPESynthesiserVoice.cpp │ │ ├── juce_MPESynthesiserVoice.h │ │ ├── juce_MPEValue.cpp │ │ ├── juce_MPEValue.h │ │ ├── juce_MPEZone.cpp │ │ ├── juce_MPEZone.h │ │ ├── juce_MPEZoneLayout.cpp │ │ └── juce_MPEZoneLayout.h │ ├── sources │ │ ├── juce_AudioSource.h │ │ ├── juce_BufferingAudioSource.cpp │ │ ├── juce_BufferingAudioSource.h │ │ ├── juce_ChannelRemappingAudioSource.cpp │ │ ├── juce_ChannelRemappingAudioSource.h │ │ ├── juce_IIRFilterAudioSource.cpp │ │ ├── juce_IIRFilterAudioSource.h │ │ ├── juce_MixerAudioSource.cpp │ │ ├── juce_MixerAudioSource.h │ │ ├── juce_PositionableAudioSource.h │ │ ├── juce_ResamplingAudioSource.cpp │ │ ├── juce_ResamplingAudioSource.h │ │ ├── juce_ReverbAudioSource.cpp │ │ ├── juce_ReverbAudioSource.h │ │ ├── juce_ToneGeneratorAudioSource.cpp │ │ └── juce_ToneGeneratorAudioSource.h │ └── synthesisers │ │ ├── juce_Synthesiser.cpp │ │ └── juce_Synthesiser.h │ ├── juce_audio_plugin_client │ ├── AAX │ │ ├── juce_AAX_Wrapper.cpp │ │ └── juce_AAX_Wrapper.mm │ ├── AU │ │ ├── AUResources.r │ │ ├── CoreAudioUtilityClasses │ │ │ ├── AUBase.cpp │ │ │ ├── AUBase.h │ │ │ ├── AUBaseHelper.h │ │ │ ├── AUBuffer.cpp │ │ │ ├── AUBuffer.h │ │ │ ├── AUCarbonViewBase.cpp │ │ │ ├── AUCarbonViewBase.h │ │ │ ├── AUCarbonViewControl.cpp │ │ │ ├── AUCarbonViewControl.h │ │ │ ├── AUCarbonViewDispatch.cpp │ │ │ ├── AUDispatch.cpp │ │ │ ├── AUDispatch.h │ │ │ ├── AUInputElement.cpp │ │ │ ├── AUInputElement.h │ │ │ ├── AUInputFormatConverter.h │ │ │ ├── AUMIDIBase.cpp │ │ │ ├── AUMIDIBase.h │ │ │ ├── AUOutputBase.cpp │ │ │ ├── AUOutputBase.h │ │ │ ├── AUOutputElement.cpp │ │ │ ├── AUOutputElement.h │ │ │ ├── AUPlugInDispatch.cpp │ │ │ ├── AUPlugInDispatch.h │ │ │ ├── AUScopeElement.cpp │ │ │ ├── AUScopeElement.h │ │ │ ├── AUSilentTimeout.h │ │ │ ├── AUTimestampGenerator.h │ │ │ ├── AUViewLocalizedStringKeys.h │ │ │ ├── CAAUParameter.cpp │ │ │ ├── CAAUParameter.h │ │ │ ├── CAAtomic.h │ │ │ ├── CAAtomicStack.h │ │ │ ├── CAAudioChannelLayout.cpp │ │ │ ├── CAAudioChannelLayout.h │ │ │ ├── CAAutoDisposer.h │ │ │ ├── CADebugMacros.h │ │ │ ├── CADebugPrintf.h │ │ │ ├── CAException.h │ │ │ ├── CAHostTimeBase.h │ │ │ ├── CAMath.h │ │ │ ├── CAMutex.cpp │ │ │ ├── CAMutex.h │ │ │ ├── CAReferenceCounted.h │ │ │ ├── CAStreamBasicDescription.cpp │ │ │ ├── CAStreamBasicDescription.h │ │ │ ├── CAThreadSafeList.h │ │ │ ├── CAVectorUnit.cpp │ │ │ ├── CAVectorUnit.h │ │ │ ├── CAVectorUnitTypes.h │ │ │ ├── CAXException.h │ │ │ ├── CarbonEventHandler.cpp │ │ │ ├── CarbonEventHandler.h │ │ │ ├── ComponentBase.cpp │ │ │ ├── ComponentBase.h │ │ │ ├── MusicDeviceBase.cpp │ │ │ └── MusicDeviceBase.h │ │ ├── juce_AU_Resources.r │ │ └── juce_AU_Wrapper.mm │ ├── RTAS │ │ ├── juce_RTAS_DigiCode1.cpp │ │ ├── juce_RTAS_DigiCode2.cpp │ │ ├── juce_RTAS_DigiCode3.cpp │ │ ├── juce_RTAS_DigiCode_Header.h │ │ ├── juce_RTAS_MacResources.r │ │ ├── juce_RTAS_MacUtilities.mm │ │ ├── juce_RTAS_WinExports.def │ │ ├── juce_RTAS_WinResources.rsr │ │ ├── juce_RTAS_WinUtilities.cpp │ │ └── juce_RTAS_Wrapper.cpp │ ├── Standalone │ │ └── juce_StandaloneFilterWindow.h │ ├── VST │ │ ├── juce_VST_Wrapper.cpp │ │ └── juce_VST_Wrapper.mm │ ├── VST3 │ │ └── juce_VST3_Wrapper.cpp │ ├── juce_audio_plugin_client.h │ ├── juce_module_info │ └── utility │ │ ├── juce_CarbonVisibility.h │ │ ├── juce_CheckSettingMacros.h │ │ ├── juce_FakeMouseMoveGenerator.h │ │ ├── juce_IncludeModuleHeaders.h │ │ ├── juce_IncludeSystemHeaders.h │ │ ├── juce_PluginBusUtilities.h │ │ ├── juce_PluginHostType.h │ │ ├── juce_PluginUtilities.cpp │ │ └── juce_WindowsHooks.h │ ├── juce_audio_processors │ ├── format │ │ ├── juce_AudioPluginFormat.cpp │ │ ├── juce_AudioPluginFormat.h │ │ ├── juce_AudioPluginFormatManager.cpp │ │ └── juce_AudioPluginFormatManager.h │ ├── format_types │ │ ├── juce_AudioUnitPluginFormat.h │ │ ├── juce_AudioUnitPluginFormat.mm │ │ ├── juce_LADSPAPluginFormat.cpp │ │ ├── juce_LADSPAPluginFormat.h │ │ ├── juce_VST3Common.h │ │ ├── juce_VST3Headers.h │ │ ├── juce_VST3PluginFormat.cpp │ │ ├── juce_VST3PluginFormat.h │ │ ├── juce_VSTMidiEventList.h │ │ ├── juce_VSTPluginFormat.cpp │ │ └── juce_VSTPluginFormat.h │ ├── juce_audio_processors.cpp │ ├── juce_audio_processors.h │ ├── juce_audio_processors.mm │ ├── juce_module_info │ ├── processors │ │ ├── juce_AudioChannelSet.cpp │ │ ├── juce_AudioChannelSet.h │ │ ├── juce_AudioPlayHead.h │ │ ├── juce_AudioPluginInstance.h │ │ ├── juce_AudioProcessor.cpp │ │ ├── juce_AudioProcessor.h │ │ ├── juce_AudioProcessorEditor.cpp │ │ ├── juce_AudioProcessorEditor.h │ │ ├── juce_AudioProcessorGraph.cpp │ │ ├── juce_AudioProcessorGraph.h │ │ ├── juce_AudioProcessorListener.h │ │ ├── juce_AudioProcessorParameter.h │ │ ├── juce_GenericAudioProcessorEditor.cpp │ │ ├── juce_GenericAudioProcessorEditor.h │ │ ├── juce_PluginDescription.cpp │ │ └── juce_PluginDescription.h │ ├── scanning │ │ ├── juce_KnownPluginList.cpp │ │ ├── juce_KnownPluginList.h │ │ ├── juce_PluginDirectoryScanner.cpp │ │ ├── juce_PluginDirectoryScanner.h │ │ ├── juce_PluginListComponent.cpp │ │ └── juce_PluginListComponent.h │ └── utilities │ │ ├── juce_AudioParameterBool.h │ │ ├── juce_AudioParameterChoice.h │ │ ├── juce_AudioParameterFloat.h │ │ ├── juce_AudioParameterInt.h │ │ ├── juce_AudioProcessorParameterWithID.h │ │ ├── juce_AudioProcessorParameters.cpp │ │ ├── juce_AudioProcessorValueTreeState.cpp │ │ └── juce_AudioProcessorValueTreeState.h │ ├── juce_core │ ├── containers │ │ ├── juce_AbstractFifo.cpp │ │ ├── juce_AbstractFifo.h │ │ ├── juce_Array.h │ │ ├── juce_ArrayAllocationBase.h │ │ ├── juce_DynamicObject.cpp │ │ ├── juce_DynamicObject.h │ │ ├── juce_ElementComparator.h │ │ ├── juce_HashMap.h │ │ ├── juce_LinkedListPointer.h │ │ ├── juce_ListenerList.h │ │ ├── juce_NamedValueSet.cpp │ │ ├── juce_NamedValueSet.h │ │ ├── juce_OwnedArray.h │ │ ├── juce_PropertySet.cpp │ │ ├── juce_PropertySet.h │ │ ├── juce_ReferenceCountedArray.h │ │ ├── juce_ScopedValueSetter.h │ │ ├── juce_SortedSet.h │ │ ├── juce_SparseSet.h │ │ ├── juce_Variant.cpp │ │ └── juce_Variant.h │ ├── files │ │ ├── juce_DirectoryIterator.cpp │ │ ├── juce_DirectoryIterator.h │ │ ├── juce_File.cpp │ │ ├── juce_File.h │ │ ├── juce_FileFilter.cpp │ │ ├── juce_FileFilter.h │ │ ├── juce_FileInputStream.cpp │ │ ├── juce_FileInputStream.h │ │ ├── juce_FileOutputStream.cpp │ │ ├── juce_FileOutputStream.h │ │ ├── juce_FileSearchPath.cpp │ │ ├── juce_FileSearchPath.h │ │ ├── juce_MemoryMappedFile.h │ │ ├── juce_TemporaryFile.cpp │ │ ├── juce_TemporaryFile.h │ │ ├── juce_WildcardFileFilter.cpp │ │ └── juce_WildcardFileFilter.h │ ├── javascript │ │ ├── juce_JSON.cpp │ │ ├── juce_JSON.h │ │ ├── juce_Javascript.cpp │ │ └── juce_Javascript.h │ ├── juce_core.cpp │ ├── juce_core.h │ ├── juce_core.mm │ ├── juce_module_info │ ├── logging │ │ ├── juce_FileLogger.cpp │ │ ├── juce_FileLogger.h │ │ ├── juce_Logger.cpp │ │ └── juce_Logger.h │ ├── maths │ │ ├── juce_BigInteger.cpp │ │ ├── juce_BigInteger.h │ │ ├── juce_Expression.cpp │ │ ├── juce_Expression.h │ │ ├── juce_MathsFunctions.h │ │ ├── juce_NormalisableRange.h │ │ ├── juce_Random.cpp │ │ ├── juce_Random.h │ │ └── juce_Range.h │ ├── memory │ │ ├── juce_Atomic.h │ │ ├── juce_ByteOrder.h │ │ ├── juce_ContainerDeletePolicy.h │ │ ├── juce_HeapBlock.h │ │ ├── juce_LeakedObjectDetector.h │ │ ├── juce_Memory.h │ │ ├── juce_MemoryBlock.cpp │ │ ├── juce_MemoryBlock.h │ │ ├── juce_OptionalScopedPointer.h │ │ ├── juce_ReferenceCountedObject.h │ │ ├── juce_ScopedPointer.h │ │ ├── juce_SharedResourcePointer.h │ │ ├── juce_Singleton.h │ │ └── juce_WeakReference.h │ ├── misc │ │ ├── juce_Result.cpp │ │ ├── juce_Result.h │ │ ├── juce_Uuid.cpp │ │ ├── juce_Uuid.h │ │ └── juce_WindowsRegistry.h │ ├── native │ │ ├── java │ │ │ ├── AndroidMidi.java │ │ │ ├── AndroidMidiFallback.java │ │ │ └── JuceAppActivity.java │ │ ├── juce_BasicNativeHeaders.h │ │ ├── juce_android_Files.cpp │ │ ├── juce_android_JNIHelpers.h │ │ ├── juce_android_Misc.cpp │ │ ├── juce_android_Network.cpp │ │ ├── juce_android_SystemStats.cpp │ │ ├── juce_android_Threads.cpp │ │ ├── juce_curl_Network.cpp │ │ ├── juce_linux_CommonFile.cpp │ │ ├── juce_linux_Files.cpp │ │ ├── juce_linux_Network.cpp │ │ ├── juce_linux_SystemStats.cpp │ │ ├── juce_linux_Threads.cpp │ │ ├── juce_mac_ClangBugWorkaround.h │ │ ├── juce_mac_Files.mm │ │ ├── juce_mac_Network.mm │ │ ├── juce_mac_Strings.mm │ │ ├── juce_mac_SystemStats.mm │ │ ├── juce_mac_Threads.mm │ │ ├── juce_osx_ObjCHelpers.h │ │ ├── juce_posix_NamedPipe.cpp │ │ ├── juce_posix_SharedCode.h │ │ ├── juce_win32_ComSmartPtr.h │ │ ├── juce_win32_Files.cpp │ │ ├── juce_win32_Network.cpp │ │ ├── juce_win32_Registry.cpp │ │ ├── juce_win32_SystemStats.cpp │ │ └── juce_win32_Threads.cpp │ ├── network │ │ ├── juce_IPAddress.cpp │ │ ├── juce_IPAddress.h │ │ ├── juce_MACAddress.cpp │ │ ├── juce_MACAddress.h │ │ ├── juce_NamedPipe.cpp │ │ ├── juce_NamedPipe.h │ │ ├── juce_Socket.cpp │ │ ├── juce_Socket.h │ │ ├── juce_URL.cpp │ │ └── juce_URL.h │ ├── streams │ │ ├── juce_BufferedInputStream.cpp │ │ ├── juce_BufferedInputStream.h │ │ ├── juce_FileInputSource.cpp │ │ ├── juce_FileInputSource.h │ │ ├── juce_InputSource.h │ │ ├── juce_InputStream.cpp │ │ ├── juce_InputStream.h │ │ ├── juce_MemoryInputStream.cpp │ │ ├── juce_MemoryInputStream.h │ │ ├── juce_MemoryOutputStream.cpp │ │ ├── juce_MemoryOutputStream.h │ │ ├── juce_OutputStream.cpp │ │ ├── juce_OutputStream.h │ │ ├── juce_SubregionStream.cpp │ │ └── juce_SubregionStream.h │ ├── system │ │ ├── juce_CompilerSupport.h │ │ ├── juce_PlatformDefs.h │ │ ├── juce_StandardHeader.h │ │ ├── juce_SystemStats.cpp │ │ ├── juce_SystemStats.h │ │ └── juce_TargetPlatform.h │ ├── text │ │ ├── juce_Base64.cpp │ │ ├── juce_Base64.h │ │ ├── juce_CharPointer_ASCII.h │ │ ├── juce_CharPointer_UTF16.h │ │ ├── juce_CharPointer_UTF32.h │ │ ├── juce_CharPointer_UTF8.h │ │ ├── juce_CharacterFunctions.cpp │ │ ├── juce_CharacterFunctions.h │ │ ├── juce_Identifier.cpp │ │ ├── juce_Identifier.h │ │ ├── juce_LocalisedStrings.cpp │ │ ├── juce_LocalisedStrings.h │ │ ├── juce_NewLine.h │ │ ├── juce_String.cpp │ │ ├── juce_String.h │ │ ├── juce_StringArray.cpp │ │ ├── juce_StringArray.h │ │ ├── juce_StringPairArray.cpp │ │ ├── juce_StringPairArray.h │ │ ├── juce_StringPool.cpp │ │ ├── juce_StringPool.h │ │ ├── juce_StringRef.h │ │ ├── juce_TextDiff.cpp │ │ └── juce_TextDiff.h │ ├── threads │ │ ├── juce_ChildProcess.cpp │ │ ├── juce_ChildProcess.h │ │ ├── juce_CriticalSection.h │ │ ├── juce_DynamicLibrary.h │ │ ├── juce_HighResolutionTimer.cpp │ │ ├── juce_HighResolutionTimer.h │ │ ├── juce_InterProcessLock.h │ │ ├── juce_Process.h │ │ ├── juce_ReadWriteLock.cpp │ │ ├── juce_ReadWriteLock.h │ │ ├── juce_ScopedLock.h │ │ ├── juce_ScopedReadLock.h │ │ ├── juce_ScopedWriteLock.h │ │ ├── juce_SpinLock.h │ │ ├── juce_Thread.cpp │ │ ├── juce_Thread.h │ │ ├── juce_ThreadLocalValue.h │ │ ├── juce_ThreadPool.cpp │ │ ├── juce_ThreadPool.h │ │ ├── juce_TimeSliceThread.cpp │ │ ├── juce_TimeSliceThread.h │ │ └── juce_WaitableEvent.h │ ├── time │ │ ├── juce_PerformanceCounter.cpp │ │ ├── juce_PerformanceCounter.h │ │ ├── juce_RelativeTime.cpp │ │ ├── juce_RelativeTime.h │ │ ├── juce_Time.cpp │ │ └── juce_Time.h │ ├── unit_tests │ │ ├── juce_UnitTest.cpp │ │ └── juce_UnitTest.h │ ├── xml │ │ ├── juce_XmlDocument.cpp │ │ ├── juce_XmlDocument.h │ │ ├── juce_XmlElement.cpp │ │ └── juce_XmlElement.h │ └── zip │ │ ├── juce_GZIPCompressorOutputStream.cpp │ │ ├── juce_GZIPCompressorOutputStream.h │ │ ├── juce_GZIPDecompressorInputStream.cpp │ │ ├── juce_GZIPDecompressorInputStream.h │ │ ├── juce_ZipFile.cpp │ │ ├── juce_ZipFile.h │ │ └── zlib │ │ ├── README │ │ ├── adler32.c │ │ ├── compress.c │ │ ├── crc32.c │ │ ├── crc32.h │ │ ├── deflate.c │ │ ├── deflate.h │ │ ├── infback.c │ │ ├── inffast.c │ │ ├── inffast.h │ │ ├── inffixed.h │ │ ├── inflate.c │ │ ├── inflate.h │ │ ├── inftrees.c │ │ ├── inftrees.h │ │ ├── trees.c │ │ ├── trees.h │ │ ├── uncompr.c │ │ ├── zconf.h │ │ ├── zconf.in.h │ │ ├── zlib.h │ │ ├── zutil.c │ │ └── zutil.h │ ├── juce_data_structures │ ├── app_properties │ │ ├── juce_ApplicationProperties.cpp │ │ ├── juce_ApplicationProperties.h │ │ ├── juce_PropertiesFile.cpp │ │ └── juce_PropertiesFile.h │ ├── juce_data_structures.cpp │ ├── juce_data_structures.h │ ├── juce_data_structures.mm │ ├── juce_module_info │ ├── undomanager │ │ ├── juce_UndoManager.cpp │ │ ├── juce_UndoManager.h │ │ └── juce_UndoableAction.h │ └── values │ │ ├── juce_Value.cpp │ │ ├── juce_Value.h │ │ ├── juce_ValueTree.cpp │ │ ├── juce_ValueTree.h │ │ ├── juce_ValueTreeSynchroniser.cpp │ │ └── juce_ValueTreeSynchroniser.h │ ├── juce_events │ ├── broadcasters │ │ ├── juce_ActionBroadcaster.cpp │ │ ├── juce_ActionBroadcaster.h │ │ ├── juce_ActionListener.h │ │ ├── juce_AsyncUpdater.cpp │ │ ├── juce_AsyncUpdater.h │ │ ├── juce_ChangeBroadcaster.cpp │ │ ├── juce_ChangeBroadcaster.h │ │ └── juce_ChangeListener.h │ ├── interprocess │ │ ├── juce_ConnectedChildProcess.cpp │ │ ├── juce_ConnectedChildProcess.h │ │ ├── juce_InterprocessConnection.cpp │ │ ├── juce_InterprocessConnection.h │ │ ├── juce_InterprocessConnectionServer.cpp │ │ └── juce_InterprocessConnectionServer.h │ ├── juce_events.cpp │ ├── juce_events.h │ ├── juce_events.mm │ ├── juce_module_info │ ├── messages │ │ ├── juce_ApplicationBase.cpp │ │ ├── juce_ApplicationBase.h │ │ ├── juce_CallbackMessage.h │ │ ├── juce_DeletedAtShutdown.cpp │ │ ├── juce_DeletedAtShutdown.h │ │ ├── juce_Initialisation.h │ │ ├── juce_Message.h │ │ ├── juce_MessageListener.cpp │ │ ├── juce_MessageListener.h │ │ ├── juce_MessageManager.cpp │ │ ├── juce_MessageManager.h │ │ ├── juce_MountedVolumeListChangeDetector.h │ │ └── juce_NotificationType.h │ ├── native │ │ ├── juce_ScopedXLock.h │ │ ├── juce_android_Messaging.cpp │ │ ├── juce_ios_MessageManager.mm │ │ ├── juce_linux_Messaging.cpp │ │ ├── juce_mac_MessageManager.mm │ │ ├── juce_osx_MessageQueue.h │ │ ├── juce_win32_HiddenMessageWindow.h │ │ └── juce_win32_Messaging.cpp │ └── timers │ │ ├── juce_MultiTimer.cpp │ │ ├── juce_MultiTimer.h │ │ ├── juce_Timer.cpp │ │ └── juce_Timer.h │ ├── juce_graphics │ ├── colour │ │ ├── juce_Colour.cpp │ │ ├── juce_Colour.h │ │ ├── juce_ColourGradient.cpp │ │ ├── juce_ColourGradient.h │ │ ├── juce_Colours.cpp │ │ ├── juce_Colours.h │ │ ├── juce_FillType.cpp │ │ ├── juce_FillType.h │ │ └── juce_PixelFormats.h │ ├── contexts │ │ ├── juce_GraphicsContext.cpp │ │ ├── juce_GraphicsContext.h │ │ ├── juce_LowLevelGraphicsContext.h │ │ ├── juce_LowLevelGraphicsPostScriptRenderer.cpp │ │ ├── juce_LowLevelGraphicsPostScriptRenderer.h │ │ ├── juce_LowLevelGraphicsSoftwareRenderer.cpp │ │ └── juce_LowLevelGraphicsSoftwareRenderer.h │ ├── effects │ │ ├── juce_DropShadowEffect.cpp │ │ ├── juce_DropShadowEffect.h │ │ ├── juce_GlowEffect.cpp │ │ ├── juce_GlowEffect.h │ │ └── juce_ImageEffectFilter.h │ ├── fonts │ │ ├── juce_AttributedString.cpp │ │ ├── juce_AttributedString.h │ │ ├── juce_CustomTypeface.cpp │ │ ├── juce_CustomTypeface.h │ │ ├── juce_Font.cpp │ │ ├── juce_Font.h │ │ ├── juce_GlyphArrangement.cpp │ │ ├── juce_GlyphArrangement.h │ │ ├── juce_TextLayout.cpp │ │ ├── juce_TextLayout.h │ │ ├── juce_Typeface.cpp │ │ └── juce_Typeface.h │ ├── geometry │ │ ├── juce_AffineTransform.cpp │ │ ├── juce_AffineTransform.h │ │ ├── juce_BorderSize.h │ │ ├── juce_EdgeTable.cpp │ │ ├── juce_EdgeTable.h │ │ ├── juce_Line.h │ │ ├── juce_Path.cpp │ │ ├── juce_Path.h │ │ ├── juce_PathIterator.cpp │ │ ├── juce_PathIterator.h │ │ ├── juce_PathStrokeType.cpp │ │ ├── juce_PathStrokeType.h │ │ ├── juce_Point.h │ │ ├── juce_Rectangle.h │ │ └── juce_RectangleList.h │ ├── image_formats │ │ ├── jpglib │ │ │ ├── README │ │ │ ├── cderror.h │ │ │ ├── changes to libjpeg for JUCE.txt │ │ │ ├── jcapimin.c │ │ │ ├── jcapistd.c │ │ │ ├── jccoefct.c │ │ │ ├── jccolor.c │ │ │ ├── jcdctmgr.c │ │ │ ├── jchuff.c │ │ │ ├── jchuff.h │ │ │ ├── jcinit.c │ │ │ ├── jcmainct.c │ │ │ ├── jcmarker.c │ │ │ ├── jcmaster.c │ │ │ ├── jcomapi.c │ │ │ ├── jconfig.h │ │ │ ├── jcparam.c │ │ │ ├── jcphuff.c │ │ │ ├── jcprepct.c │ │ │ ├── jcsample.c │ │ │ ├── jctrans.c │ │ │ ├── jdapimin.c │ │ │ ├── jdapistd.c │ │ │ ├── jdatasrc.c │ │ │ ├── jdcoefct.c │ │ │ ├── jdcolor.c │ │ │ ├── jdct.h │ │ │ ├── jddctmgr.c │ │ │ ├── jdhuff.c │ │ │ ├── jdhuff.h │ │ │ ├── jdinput.c │ │ │ ├── jdmainct.c │ │ │ ├── jdmarker.c │ │ │ ├── jdmaster.c │ │ │ ├── jdmerge.c │ │ │ ├── jdphuff.c │ │ │ ├── jdpostct.c │ │ │ ├── jdsample.c │ │ │ ├── jdtrans.c │ │ │ ├── jerror.c │ │ │ ├── jerror.h │ │ │ ├── jfdctflt.c │ │ │ ├── jfdctfst.c │ │ │ ├── jfdctint.c │ │ │ ├── jidctflt.c │ │ │ ├── jidctfst.c │ │ │ ├── jidctint.c │ │ │ ├── jidctred.c │ │ │ ├── jinclude.h │ │ │ ├── jmemmgr.c │ │ │ ├── jmemnobs.c │ │ │ ├── jmemsys.h │ │ │ ├── jmorecfg.h │ │ │ ├── jpegint.h │ │ │ ├── jpeglib.h │ │ │ ├── jquant1.c │ │ │ ├── jquant2.c │ │ │ ├── jutils.c │ │ │ ├── jversion.h │ │ │ ├── transupp.c │ │ │ └── transupp.h │ │ ├── juce_GIFLoader.cpp │ │ ├── juce_JPEGLoader.cpp │ │ ├── juce_PNGLoader.cpp │ │ └── pnglib │ │ │ ├── LICENSE │ │ │ ├── libpng_readme.txt │ │ │ ├── png.c │ │ │ ├── png.h │ │ │ ├── pngconf.h │ │ │ ├── pngerror.c │ │ │ ├── pngget.c │ │ │ ├── pnginfo.h │ │ │ ├── pngmem.c │ │ │ ├── pngpread.c │ │ │ ├── pngpriv.h │ │ │ ├── pngread.c │ │ │ ├── pngrio.c │ │ │ ├── pngrtran.c │ │ │ ├── pngrutil.c │ │ │ ├── pngset.c │ │ │ ├── pngstruct.h │ │ │ ├── pngtrans.c │ │ │ ├── pngwio.c │ │ │ ├── pngwrite.c │ │ │ ├── pngwtran.c │ │ │ └── pngwutil.c │ ├── images │ │ ├── juce_Image.cpp │ │ ├── juce_Image.h │ │ ├── juce_ImageCache.cpp │ │ ├── juce_ImageCache.h │ │ ├── juce_ImageConvolutionKernel.cpp │ │ ├── juce_ImageConvolutionKernel.h │ │ ├── juce_ImageFileFormat.cpp │ │ └── juce_ImageFileFormat.h │ ├── juce_graphics.cpp │ ├── juce_graphics.h │ ├── juce_graphics.mm │ ├── juce_module_info │ ├── native │ │ ├── juce_RenderingHelpers.h │ │ ├── juce_android_Fonts.cpp │ │ ├── juce_android_GraphicsContext.cpp │ │ ├── juce_freetype_Fonts.cpp │ │ ├── juce_linux_Fonts.cpp │ │ ├── juce_mac_CoreGraphicsContext.h │ │ ├── juce_mac_CoreGraphicsContext.mm │ │ ├── juce_mac_CoreGraphicsHelpers.h │ │ ├── juce_mac_Fonts.mm │ │ ├── juce_win32_Direct2DGraphicsContext.cpp │ │ ├── juce_win32_DirectWriteTypeLayout.cpp │ │ ├── juce_win32_DirectWriteTypeface.cpp │ │ └── juce_win32_Fonts.cpp │ └── placement │ │ ├── juce_Justification.h │ │ ├── juce_RectanglePlacement.cpp │ │ └── juce_RectanglePlacement.h │ ├── juce_gui_basics │ ├── application │ │ ├── juce_Application.cpp │ │ └── juce_Application.h │ ├── buttons │ │ ├── juce_ArrowButton.cpp │ │ ├── juce_ArrowButton.h │ │ ├── juce_Button.cpp │ │ ├── juce_Button.h │ │ ├── juce_DrawableButton.cpp │ │ ├── juce_DrawableButton.h │ │ ├── juce_HyperlinkButton.cpp │ │ ├── juce_HyperlinkButton.h │ │ ├── juce_ImageButton.cpp │ │ ├── juce_ImageButton.h │ │ ├── juce_ShapeButton.cpp │ │ ├── juce_ShapeButton.h │ │ ├── juce_TextButton.cpp │ │ ├── juce_TextButton.h │ │ ├── juce_ToggleButton.cpp │ │ ├── juce_ToggleButton.h │ │ ├── juce_ToolbarButton.cpp │ │ └── juce_ToolbarButton.h │ ├── commands │ │ ├── juce_ApplicationCommandID.h │ │ ├── juce_ApplicationCommandInfo.cpp │ │ ├── juce_ApplicationCommandInfo.h │ │ ├── juce_ApplicationCommandManager.cpp │ │ ├── juce_ApplicationCommandManager.h │ │ ├── juce_ApplicationCommandTarget.cpp │ │ ├── juce_ApplicationCommandTarget.h │ │ ├── juce_KeyPressMappingSet.cpp │ │ └── juce_KeyPressMappingSet.h │ ├── components │ │ ├── juce_CachedComponentImage.h │ │ ├── juce_Component.cpp │ │ ├── juce_Component.h │ │ ├── juce_ComponentListener.cpp │ │ ├── juce_ComponentListener.h │ │ ├── juce_Desktop.cpp │ │ ├── juce_Desktop.h │ │ ├── juce_ModalComponentManager.cpp │ │ └── juce_ModalComponentManager.h │ ├── drawables │ │ ├── juce_Drawable.cpp │ │ ├── juce_Drawable.h │ │ ├── juce_DrawableComposite.cpp │ │ ├── juce_DrawableComposite.h │ │ ├── juce_DrawableImage.cpp │ │ ├── juce_DrawableImage.h │ │ ├── juce_DrawablePath.cpp │ │ ├── juce_DrawablePath.h │ │ ├── juce_DrawableRectangle.cpp │ │ ├── juce_DrawableRectangle.h │ │ ├── juce_DrawableShape.cpp │ │ ├── juce_DrawableShape.h │ │ ├── juce_DrawableText.cpp │ │ ├── juce_DrawableText.h │ │ └── juce_SVGParser.cpp │ ├── filebrowser │ │ ├── juce_DirectoryContentsDisplayComponent.cpp │ │ ├── juce_DirectoryContentsDisplayComponent.h │ │ ├── juce_DirectoryContentsList.cpp │ │ ├── juce_DirectoryContentsList.h │ │ ├── juce_FileBrowserComponent.cpp │ │ ├── juce_FileBrowserComponent.h │ │ ├── juce_FileBrowserListener.h │ │ ├── juce_FileChooser.cpp │ │ ├── juce_FileChooser.h │ │ ├── juce_FileChooserDialogBox.cpp │ │ ├── juce_FileChooserDialogBox.h │ │ ├── juce_FileListComponent.cpp │ │ ├── juce_FileListComponent.h │ │ ├── juce_FilePreviewComponent.h │ │ ├── juce_FileSearchPathListComponent.cpp │ │ ├── juce_FileSearchPathListComponent.h │ │ ├── juce_FileTreeComponent.cpp │ │ ├── juce_FileTreeComponent.h │ │ ├── juce_FilenameComponent.cpp │ │ ├── juce_FilenameComponent.h │ │ ├── juce_ImagePreviewComponent.cpp │ │ └── juce_ImagePreviewComponent.h │ ├── juce_gui_basics.cpp │ ├── juce_gui_basics.h │ ├── juce_gui_basics.mm │ ├── juce_module_info │ ├── keyboard │ │ ├── juce_CaretComponent.cpp │ │ ├── juce_CaretComponent.h │ │ ├── juce_KeyListener.cpp │ │ ├── juce_KeyListener.h │ │ ├── juce_KeyPress.cpp │ │ ├── juce_KeyPress.h │ │ ├── juce_KeyboardFocusTraverser.cpp │ │ ├── juce_KeyboardFocusTraverser.h │ │ ├── juce_ModifierKeys.cpp │ │ ├── juce_ModifierKeys.h │ │ ├── juce_SystemClipboard.h │ │ ├── juce_TextEditorKeyMapper.h │ │ └── juce_TextInputTarget.h │ ├── layout │ │ ├── juce_AnimatedPosition.h │ │ ├── juce_AnimatedPositionBehaviours.h │ │ ├── juce_ComponentAnimator.cpp │ │ ├── juce_ComponentAnimator.h │ │ ├── juce_ComponentBoundsConstrainer.cpp │ │ ├── juce_ComponentBoundsConstrainer.h │ │ ├── juce_ComponentBuilder.cpp │ │ ├── juce_ComponentBuilder.h │ │ ├── juce_ComponentMovementWatcher.cpp │ │ ├── juce_ComponentMovementWatcher.h │ │ ├── juce_ConcertinaPanel.cpp │ │ ├── juce_ConcertinaPanel.h │ │ ├── juce_GroupComponent.cpp │ │ ├── juce_GroupComponent.h │ │ ├── juce_MultiDocumentPanel.cpp │ │ ├── juce_MultiDocumentPanel.h │ │ ├── juce_ResizableBorderComponent.cpp │ │ ├── juce_ResizableBorderComponent.h │ │ ├── juce_ResizableCornerComponent.cpp │ │ ├── juce_ResizableCornerComponent.h │ │ ├── juce_ResizableEdgeComponent.cpp │ │ ├── juce_ResizableEdgeComponent.h │ │ ├── juce_ScrollBar.cpp │ │ ├── juce_ScrollBar.h │ │ ├── juce_StretchableLayoutManager.cpp │ │ ├── juce_StretchableLayoutManager.h │ │ ├── juce_StretchableLayoutResizerBar.cpp │ │ ├── juce_StretchableLayoutResizerBar.h │ │ ├── juce_StretchableObjectResizer.cpp │ │ ├── juce_StretchableObjectResizer.h │ │ ├── juce_TabbedButtonBar.cpp │ │ ├── juce_TabbedButtonBar.h │ │ ├── juce_TabbedComponent.cpp │ │ ├── juce_TabbedComponent.h │ │ ├── juce_Viewport.cpp │ │ └── juce_Viewport.h │ ├── lookandfeel │ │ ├── juce_LookAndFeel.cpp │ │ ├── juce_LookAndFeel.h │ │ ├── juce_LookAndFeel_V1.cpp │ │ ├── juce_LookAndFeel_V1.h │ │ ├── juce_LookAndFeel_V2.cpp │ │ ├── juce_LookAndFeel_V2.h │ │ ├── juce_LookAndFeel_V3.cpp │ │ └── juce_LookAndFeel_V3.h │ ├── menus │ │ ├── juce_MenuBarComponent.cpp │ │ ├── juce_MenuBarComponent.h │ │ ├── juce_MenuBarModel.cpp │ │ ├── juce_MenuBarModel.h │ │ ├── juce_PopupMenu.cpp │ │ └── juce_PopupMenu.h │ ├── misc │ │ ├── juce_BubbleComponent.cpp │ │ ├── juce_BubbleComponent.h │ │ ├── juce_DropShadower.cpp │ │ └── juce_DropShadower.h │ ├── mouse │ │ ├── juce_ComponentDragger.cpp │ │ ├── juce_ComponentDragger.h │ │ ├── juce_DragAndDropContainer.cpp │ │ ├── juce_DragAndDropContainer.h │ │ ├── juce_DragAndDropTarget.h │ │ ├── juce_FileDragAndDropTarget.h │ │ ├── juce_LassoComponent.h │ │ ├── juce_MouseCursor.cpp │ │ ├── juce_MouseCursor.h │ │ ├── juce_MouseEvent.cpp │ │ ├── juce_MouseEvent.h │ │ ├── juce_MouseInactivityDetector.cpp │ │ ├── juce_MouseInactivityDetector.h │ │ ├── juce_MouseInputSource.cpp │ │ ├── juce_MouseInputSource.h │ │ ├── juce_MouseListener.cpp │ │ ├── juce_MouseListener.h │ │ ├── juce_SelectedItemSet.h │ │ ├── juce_TextDragAndDropTarget.h │ │ └── juce_TooltipClient.h │ ├── native │ │ ├── juce_MultiTouchMapper.h │ │ ├── juce_android_FileChooser.cpp │ │ ├── juce_android_Windowing.cpp │ │ ├── juce_ios_UIViewComponentPeer.mm │ │ ├── juce_ios_Windowing.mm │ │ ├── juce_linux_Clipboard.cpp │ │ ├── juce_linux_FileChooser.cpp │ │ ├── juce_linux_Windowing.cpp │ │ ├── juce_mac_FileChooser.mm │ │ ├── juce_mac_MainMenu.mm │ │ ├── juce_mac_MouseCursor.mm │ │ ├── juce_mac_NSViewComponentPeer.mm │ │ ├── juce_mac_Windowing.mm │ │ ├── juce_win32_DragAndDrop.cpp │ │ ├── juce_win32_FileChooser.cpp │ │ └── juce_win32_Windowing.cpp │ ├── positioning │ │ ├── juce_MarkerList.cpp │ │ ├── juce_MarkerList.h │ │ ├── juce_RelativeCoordinate.cpp │ │ ├── juce_RelativeCoordinate.h │ │ ├── juce_RelativeCoordinatePositioner.cpp │ │ ├── juce_RelativeCoordinatePositioner.h │ │ ├── juce_RelativeParallelogram.cpp │ │ ├── juce_RelativeParallelogram.h │ │ ├── juce_RelativePoint.cpp │ │ ├── juce_RelativePoint.h │ │ ├── juce_RelativePointPath.cpp │ │ ├── juce_RelativePointPath.h │ │ ├── juce_RelativeRectangle.cpp │ │ └── juce_RelativeRectangle.h │ ├── properties │ │ ├── juce_BooleanPropertyComponent.cpp │ │ ├── juce_BooleanPropertyComponent.h │ │ ├── juce_ButtonPropertyComponent.cpp │ │ ├── juce_ButtonPropertyComponent.h │ │ ├── juce_ChoicePropertyComponent.cpp │ │ ├── juce_ChoicePropertyComponent.h │ │ ├── juce_PropertyComponent.cpp │ │ ├── juce_PropertyComponent.h │ │ ├── juce_PropertyPanel.cpp │ │ ├── juce_PropertyPanel.h │ │ ├── juce_SliderPropertyComponent.cpp │ │ ├── juce_SliderPropertyComponent.h │ │ ├── juce_TextPropertyComponent.cpp │ │ └── juce_TextPropertyComponent.h │ ├── widgets │ │ ├── juce_ComboBox.cpp │ │ ├── juce_ComboBox.h │ │ ├── juce_ImageComponent.cpp │ │ ├── juce_ImageComponent.h │ │ ├── juce_Label.cpp │ │ ├── juce_Label.h │ │ ├── juce_ListBox.cpp │ │ ├── juce_ListBox.h │ │ ├── juce_ProgressBar.cpp │ │ ├── juce_ProgressBar.h │ │ ├── juce_Slider.cpp │ │ ├── juce_Slider.h │ │ ├── juce_TableHeaderComponent.cpp │ │ ├── juce_TableHeaderComponent.h │ │ ├── juce_TableListBox.cpp │ │ ├── juce_TableListBox.h │ │ ├── juce_TextEditor.cpp │ │ ├── juce_TextEditor.h │ │ ├── juce_Toolbar.cpp │ │ ├── juce_Toolbar.h │ │ ├── juce_ToolbarItemComponent.cpp │ │ ├── juce_ToolbarItemComponent.h │ │ ├── juce_ToolbarItemFactory.h │ │ ├── juce_ToolbarItemPalette.cpp │ │ ├── juce_ToolbarItemPalette.h │ │ ├── juce_TreeView.cpp │ │ └── juce_TreeView.h │ └── windows │ │ ├── juce_AlertWindow.cpp │ │ ├── juce_AlertWindow.h │ │ ├── juce_CallOutBox.cpp │ │ ├── juce_CallOutBox.h │ │ ├── juce_ComponentPeer.cpp │ │ ├── juce_ComponentPeer.h │ │ ├── juce_DialogWindow.cpp │ │ ├── juce_DialogWindow.h │ │ ├── juce_DocumentWindow.cpp │ │ ├── juce_DocumentWindow.h │ │ ├── juce_NativeMessageBox.h │ │ ├── juce_ResizableWindow.cpp │ │ ├── juce_ResizableWindow.h │ │ ├── juce_ThreadWithProgressWindow.cpp │ │ ├── juce_ThreadWithProgressWindow.h │ │ ├── juce_TooltipWindow.cpp │ │ ├── juce_TooltipWindow.h │ │ ├── juce_TopLevelWindow.cpp │ │ └── juce_TopLevelWindow.h │ ├── juce_gui_extra │ ├── code_editor │ │ ├── juce_CPlusPlusCodeTokeniser.cpp │ │ ├── juce_CPlusPlusCodeTokeniser.h │ │ ├── juce_CPlusPlusCodeTokeniserFunctions.h │ │ ├── juce_CodeDocument.cpp │ │ ├── juce_CodeDocument.h │ │ ├── juce_CodeEditorComponent.cpp │ │ ├── juce_CodeEditorComponent.h │ │ ├── juce_CodeTokeniser.h │ │ ├── juce_LuaCodeTokeniser.cpp │ │ ├── juce_LuaCodeTokeniser.h │ │ ├── juce_XMLCodeTokeniser.cpp │ │ └── juce_XMLCodeTokeniser.h │ ├── documents │ │ ├── juce_FileBasedDocument.cpp │ │ └── juce_FileBasedDocument.h │ ├── embedding │ │ ├── juce_ActiveXControlComponent.h │ │ ├── juce_NSViewComponent.h │ │ └── juce_UIViewComponent.h │ ├── juce_gui_extra.cpp │ ├── juce_gui_extra.h │ ├── juce_gui_extra.mm │ ├── juce_module_info │ ├── misc │ │ ├── juce_AnimatedAppComponent.cpp │ │ ├── juce_AnimatedAppComponent.h │ │ ├── juce_AppleRemote.h │ │ ├── juce_BubbleMessageComponent.cpp │ │ ├── juce_BubbleMessageComponent.h │ │ ├── juce_ColourSelector.cpp │ │ ├── juce_ColourSelector.h │ │ ├── juce_KeyMappingEditorComponent.cpp │ │ ├── juce_KeyMappingEditorComponent.h │ │ ├── juce_LiveConstantEditor.cpp │ │ ├── juce_LiveConstantEditor.h │ │ ├── juce_PreferencesPanel.cpp │ │ ├── juce_PreferencesPanel.h │ │ ├── juce_RecentlyOpenedFilesList.cpp │ │ ├── juce_RecentlyOpenedFilesList.h │ │ ├── juce_SplashScreen.cpp │ │ ├── juce_SplashScreen.h │ │ ├── juce_SystemTrayIconComponent.cpp │ │ ├── juce_SystemTrayIconComponent.h │ │ └── juce_WebBrowserComponent.h │ └── native │ │ ├── juce_android_WebBrowserComponent.cpp │ │ ├── juce_ios_UIViewComponent.mm │ │ ├── juce_linux_SystemTrayIcon.cpp │ │ ├── juce_linux_WebBrowserComponent.cpp │ │ ├── juce_mac_AppleRemote.mm │ │ ├── juce_mac_CarbonViewWrapperComponent.h │ │ ├── juce_mac_NSViewComponent.mm │ │ ├── juce_mac_SystemTrayIcon.cpp │ │ ├── juce_mac_WebBrowserComponent.mm │ │ ├── juce_win32_ActiveXComponent.cpp │ │ ├── juce_win32_SystemTrayIcon.cpp │ │ └── juce_win32_WebBrowserComponent.cpp │ └── juce_osc │ ├── juce_module_info │ ├── juce_osc.cpp │ ├── juce_osc.h │ └── osc │ ├── juce_OSCAddress.cpp │ ├── juce_OSCAddress.h │ ├── juce_OSCArgument.cpp │ ├── juce_OSCArgument.h │ ├── juce_OSCBundle.cpp │ ├── juce_OSCBundle.h │ ├── juce_OSCMessage.cpp │ ├── juce_OSCMessage.h │ ├── juce_OSCReceiver.cpp │ ├── juce_OSCReceiver.h │ ├── juce_OSCSender.cpp │ ├── juce_OSCSender.h │ ├── juce_OSCTimeTag.cpp │ ├── juce_OSCTimeTag.h │ ├── juce_OSCTypes.cpp │ └── juce_OSCTypes.h ├── Matlab ├── buildCoefs.m ├── fircls.m ├── note.txt └── varifilter.m ├── Octogris.jucer ├── OctogrisJuceHostDemo.filtergraph ├── README.md ├── Source ├── FieldComponent.cpp ├── FieldComponent.h ├── FirFilter.cpp ├── FirFilter.h ├── HIDDelegate.cpp ├── HIDDelegate.h ├── LevelComponent.cpp ├── LevelComponent.h ├── OctoLeap.cpp ├── OctoLeap.h ├── OscComponent.cpp ├── OscComponent.h ├── PluginEditor.cpp ├── PluginEditor.h ├── PluginProcessor.cpp ├── PluginProcessor.h ├── Routing.cpp ├── Routing.h ├── SourceMover.cpp ├── SourceMover.h ├── Trajectories.cpp ├── Trajectories.h ├── _firs.h └── tags ├── TouchOSC └── Octogris.touchosc ├── copyPlugins.sh ├── dev_notes.txt ├── logoGris.png └── timings.xlsx /Builds/MacOSX/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | com.UdeM.Octogris3 12 | CFBundleName 13 | Octogris 14 | CFBundlePackageType 15 | TDMw 16 | CFBundleSignature 17 | PTul 18 | CFBundleShortVersionString 19 | 3.0.7 20 | CFBundleVersion 21 | 3.0.7 22 | NSHumanReadableCopyright 23 | 24 | NSHighResolutionCapable 25 | 26 | AudioComponents 27 | 28 | 29 | name 30 | UdeM: Octogris3 31 | description 32 | Octogris3 33 | factoryFunction 34 | OctogrisAUFactory 35 | manufacturer 36 | UdeM 37 | type 38 | aufx 39 | subtype 40 | Oct3 41 | version 42 | 196615 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Builds/MacOSX/Octogris.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Builds/MacOSX/Octogris.xcodeproj/project.xcworkspace/xcshareddata/Octogris.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | C363007B-ADCF-457F-83C5-B3650ACBD94F 9 | IDESourceControlProjectName 10 | Octogris 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F 14 | https://github.com/GRIS-UdeM/Octogris.git 15 | EB5060301A45D5D6F316FE343F475AA86D669BAF 16 | https://github.com/GRIS-UdeM/GrisCommonFiles.git 17 | 18 | IDESourceControlProjectPath 19 | Builds/MacOSX/Octogris.xcodeproj 20 | IDESourceControlProjectRelativeInstallPathDictionary 21 | 22 | 4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F 23 | ../../../.. 24 | EB5060301A45D5D6F316FE343F475AA86D669BAF 25 | ../../../../../GrisCommonFiles 26 | 27 | IDESourceControlProjectURL 28 | https://github.com/GRIS-UdeM/Octogris.git 29 | IDESourceControlProjectVersion 30 | 111 31 | IDESourceControlProjectWCCIdentifier 32 | 4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F 33 | IDESourceControlProjectWCConfigurations 34 | 35 | 36 | IDESourceControlRepositoryExtensionIdentifierKey 37 | public.vcs.git 38 | IDESourceControlWCCIdentifierKey 39 | EB5060301A45D5D6F316FE343F475AA86D669BAF 40 | IDESourceControlWCCName 41 | GrisCommonFiles 42 | 43 | 44 | IDESourceControlRepositoryExtensionIdentifierKey 45 | public.vcs.git 46 | IDESourceControlWCCIdentifierKey 47 | 4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F 48 | IDESourceControlWCCName 49 | Octogris 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Builds/MacOSX/Octogris.xcodeproj/project.xcworkspace/xcshareddata/Octogris.xcscmblueprint: -------------------------------------------------------------------------------- 1 | { 2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F", 3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { 4 | 5 | }, 6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { 7 | "EB5060301A45D5D6F316FE343F475AA86D669BAF" : 0, 8 | "4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F" : 0 9 | }, 10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "C363007B-ADCF-457F-83C5-B3650ACBD94F", 11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { 12 | "EB5060301A45D5D6F316FE343F475AA86D669BAF" : "GrisCommonFiles\/", 13 | "4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F" : "Octogris\/" 14 | }, 15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "Octogris", 16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204, 17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "Builds\/MacOSX\/Octogris.xcodeproj", 18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ 19 | { 20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/GRIS-UdeM\/Octogris.git", 21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "4C5334256ADE7BE6B8B0CF3B0BDFC04203B98A7F" 23 | }, 24 | { 25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/GRIS-UdeM\/GrisCommonFiles.git", 26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "EB5060301A45D5D6F316FE343F475AA86D669BAF" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /Builds/MacOSX/RecentFilesMenuTemplate.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/MacOSX/RecentFilesMenuTemplate.nib -------------------------------------------------------------------------------- /Builds/MacOSX/libLeap.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/MacOSX/libLeap.dylib -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Octogris.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 11.00 2 | # Visual Studio 2015 3 | Project("{C5E8BC31-F578-0995-C50F-40CBD1EF12AC}") = "Octogris", "Octogris.vcxproj", "{85B349BE-0514-8781-EF8C-E922FF5EEC35}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Win32 = Debug|Win32 8 | Release_x86|Win32 = Release_x86|Win32 9 | Release_x64|x64 = Release_x64|x64 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {85B349BE-0514-8781-EF8C-E922FF5EEC35}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {85B349BE-0514-8781-EF8C-E922FF5EEC35}.Debug|Win32.Build.0 = Debug|Win32 14 | {85B349BE-0514-8781-EF8C-E922FF5EEC35}.Release_x86|Win32.ActiveCfg = Release_x86|Win32 15 | {85B349BE-0514-8781-EF8C-E922FF5EEC35}.Release_x86|Win32.Build.0 = Release_x86|Win32 16 | {85B349BE-0514-8781-EF8C-E922FF5EEC35}.Release_x64|x64.ActiveCfg = Release_x64|x64 17 | {85B349BE-0514-8781-EF8C-E922FF5EEC35}.Release_x64|x64.Build.0 = Release_x64|x64 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/Octogris.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 2 | Release_x86|Win32|C:\Users\barth\Documents\git\Octogris\Builds\VisualStudio2015\| 3 | -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/Octogris.write.1u.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/Octogris.write.1u.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/rc.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/rc.command.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/rc.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/rc.read.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris.tlog/rc.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris.tlog/rc.write.1.tlog -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris3.dll -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris3.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris3.exp -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/Octogris3.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/Octogris3.lib -------------------------------------------------------------------------------- /Builds/VisualStudio2015/Release_x86/resources.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/Builds/VisualStudio2015/Release_x86/resources.res -------------------------------------------------------------------------------- /Builds/VisualStudio2015/resources.rc: -------------------------------------------------------------------------------- 1 | #ifdef JUCE_USER_DEFINED_RC_FILE 2 | #include JUCE_USER_DEFINED_RC_FILE 3 | #else 4 | 5 | #undef WIN32_LEAN_AND_MEAN 6 | #define WIN32_LEAN_AND_MEAN 7 | #include 8 | 9 | VS_VERSION_INFO VERSIONINFO 10 | FILEVERSION 3,0,7,0 11 | BEGIN 12 | BLOCK "StringFileInfo" 13 | BEGIN 14 | BLOCK "040904E4" 15 | BEGIN 16 | VALUE "FileDescription", "Octogris\0" 17 | VALUE "FileVersion", "3.0.7\0" 18 | VALUE "ProductName", "Octogris\0" 19 | VALUE "ProductVersion", "3.0.7\0" 20 | END 21 | END 22 | 23 | BLOCK "VarFileInfo" 24 | BEGIN 25 | VALUE "Translation", 0x409, 1252 26 | END 27 | END 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /HIDManager/HID_Config_Utilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // HID_Config_Utilities.h 3 | // HIDManager8 4 | // 5 | // Created by GRIS on 2015-02-25. 6 | // Copyright (c) 2015 Landrieu Antoine. All rights reserved. 7 | // 8 | 9 | #ifndef __HIDManager8__HID_Config_Utilities__ 10 | #define __HIDManager8__HID_Config_Utilities__ 11 | 12 | #include 13 | 14 | #endif /* defined(__HIDManager8__HID_Config_Utilities__) */ 15 | -------------------------------------------------------------------------------- /HIDManager/HID_Error_Handler.h: -------------------------------------------------------------------------------- 1 | // 2 | // HID_Error_Handler.h 3 | // HIDManager8 4 | // 5 | // Created by GRIS on 2015-02-25. 6 | // Copyright (c) 2015 Landrieu Antoine. All rights reserved. 7 | // 8 | 9 | #ifndef __HIDManager8__HID_Error_Handler__ 10 | #define __HIDManager8__HID_Error_Handler__ 11 | 12 | #include 13 | 14 | #endif /* defined(__HIDManager8__HID_Error_Handler__) */ 15 | -------------------------------------------------------------------------------- /HIDManager/HID_Name_Lookup.h: -------------------------------------------------------------------------------- 1 | // 2 | // HID_Name_Lookup.h 3 | // HIDManager8 4 | // 5 | // Created by GRIS on 2015-02-25. 6 | // Copyright (c) 2015 Landrieu Antoine. All rights reserved. 7 | // 8 | 9 | #ifndef __HIDManager8__HID_Name_Lookup__ 10 | #define __HIDManager8__HID_Name_Lookup__ 11 | 12 | #include 13 | 14 | #endif /* defined(__HIDManager8__HID_Name_Lookup__) */ 15 | -------------------------------------------------------------------------------- /HIDManager/HID_Queue_Utilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // HID_Queue_Utilities.h 3 | // HIDManager8 4 | // 5 | // Created by GRIS on 2015-02-25. 6 | // Copyright (c) 2015 Landrieu Antoine. All rights reserved. 7 | // 8 | 9 | #ifndef __HIDManager8__HID_Queue_Utilities__ 10 | #define __HIDManager8__HID_Queue_Utilities__ 11 | 12 | #include 13 | 14 | #endif /* defined(__HIDManager8__HID_Queue_Utilities__) */ 15 | -------------------------------------------------------------------------------- /HIDManager/HID_Utilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // HID_Utilities.h 3 | // HIDManager8 4 | // 5 | // Created by GRIS on 2015-02-25. 6 | // Copyright (c) 2015 Landrieu Antoine. All rights reserved. 7 | // 8 | 9 | #ifndef __HIDManager8__HID_Utilities__ 10 | #define __HIDManager8__HID_Utilities__ 11 | 12 | #include 13 | 14 | #endif /* defined(__HIDManager8__HID_Utilities__) */ 15 | -------------------------------------------------------------------------------- /JuceLibraryCode/BinaryData.h: -------------------------------------------------------------------------------- 1 | /* ========================================================================================= 2 | 3 | This is an auto-generated file: Any edits you make may be overwritten! 4 | 5 | */ 6 | 7 | #ifndef BINARYDATA_H_1750437_INCLUDED 8 | #define BINARYDATA_H_1750437_INCLUDED 9 | 10 | namespace BinaryData 11 | { 12 | extern const char* SinkinSans400Regular_otf; 13 | const int SinkinSans400Regular_otfSize = 35872; 14 | 15 | extern const char* logoGris_png; 16 | const int logoGris_pngSize = 400483; 17 | 18 | extern const char* libLeap_dylib; 19 | const int libLeap_dylibSize = 2280096; 20 | 21 | extern const char* HID_Config_Utilities_h; 22 | const int HID_Config_Utilities_hSize = 324; 23 | 24 | extern const char* HID_Error_Handler_h; 25 | const int HID_Error_Handler_hSize = 312; 26 | 27 | extern const char* HID_Name_Lookup_h; 28 | const int HID_Name_Lookup_hSize = 304; 29 | 30 | extern const char* HID_Queue_Utilities_h; 31 | const int HID_Queue_Utilities_hSize = 320; 32 | 33 | extern const char* HID_Utilities_h; 34 | const int HID_Utilities_hSize = 296; 35 | 36 | extern const char* HID_Utilities_External_h; 37 | const int HID_Utilities_External_hSize = 20877; 38 | 39 | extern const char* ImmHIDUtilAddOn_h; 40 | const int ImmHIDUtilAddOn_hSize = 2856; 41 | 42 | extern const char* IOHIDDevice__h; 43 | const int IOHIDDevice__hSize = 15074; 44 | 45 | extern const char* IOHIDElement__h; 46 | const int IOHIDElement__hSize = 13699; 47 | 48 | extern const char* IOHIDLib__h; 49 | const int IOHIDLib__hSize = 3029; 50 | 51 | // Points to the start of a list of resource names. 52 | extern const char* namedResourceList[]; 53 | 54 | // Number of elements in the namedResourceList array. 55 | const int namedResourceListSize = 13; 56 | 57 | // If you provide the name of one of the binary resource variables above, this function will 58 | // return the corresponding data and its size (or a null pointer if the name isn't found). 59 | const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); 60 | } 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /JuceLibraryCode/JuceHeader.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | This is the header file that your files should include in order to get all the 7 | JUCE library headers. You should avoid including the JUCE headers directly in 8 | your own source files, because that wouldn't pick up the correct configuration 9 | options for your app. 10 | 11 | */ 12 | 13 | #ifndef __APPHEADERFILE_ZTKXIG__ 14 | #define __APPHEADERFILE_ZTKXIG__ 15 | 16 | #include "AppConfig.h" 17 | #include "modules/juce_audio_basics/juce_audio_basics.h" 18 | #include "modules/juce_audio_plugin_client/juce_audio_plugin_client.h" 19 | #include "modules/juce_audio_processors/juce_audio_processors.h" 20 | #include "modules/juce_core/juce_core.h" 21 | #include "modules/juce_data_structures/juce_data_structures.h" 22 | #include "modules/juce_events/juce_events.h" 23 | #include "modules/juce_graphics/juce_graphics.h" 24 | #include "modules/juce_gui_basics/juce_gui_basics.h" 25 | #include "modules/juce_gui_extra/juce_gui_extra.h" 26 | #include "modules/juce_osc/juce_osc.h" 27 | #include "BinaryData.h" 28 | 29 | #if ! DONT_SET_USING_JUCE_NAMESPACE 30 | // If your code uses a lot of JUCE classes, then this will obviously save you 31 | // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. 32 | using namespace juce; 33 | #endif 34 | 35 | #if ! JUCE_DONT_DECLARE_PROJECTINFO 36 | namespace ProjectInfo 37 | { 38 | const char* const projectName = "Octogris"; 39 | const char* const versionString = "3.0.7"; 40 | const int versionNumber = 0x30007; 41 | } 42 | #endif 43 | 44 | #endif // __APPHEADERFILE_ZTKXIG__ 45 | -------------------------------------------------------------------------------- /JuceLibraryCode/ReadMe.txt: -------------------------------------------------------------------------------- 1 | 2 | Important Note!! 3 | ================ 4 | 5 | The purpose of this folder is to contain files that are auto-generated by the Introjucer, 6 | and ALL files in this folder will be mercilessly DELETED and completely re-written whenever 7 | the Introjucer saves your project. 8 | 9 | Therefore, it's a bad idea to make any manual changes to the files in here, or to 10 | put any of your own files in here if you don't want to lose them. (Of course you may choose 11 | to add the folder's contents to your version-control system so that you can re-merge your own 12 | modifications after the Introjucer has saved its changes). 13 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_audio_basics.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_basics/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_audio_basics", 3 | "name": "JUCE audio and midi data classes", 4 | "version": "4.1.0", 5 | "description": "Classes for audio buffer manipulation, midi message handling, synthesis, etc", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_core", "version": "matching" }], 10 | 11 | "include": "juce_audio_basics.h", 12 | 13 | "compile": [ { "file": "juce_audio_basics.cpp", "target": "! xcode" }, 14 | { "file": "juce_audio_basics.mm", "target": "xcode" } ], 15 | 16 | "browse": [ "buffers/*", 17 | "effects/*", 18 | "midi/*", 19 | "mpe/*", 20 | "sources/*", 21 | "synthesisers/*" ], 22 | 23 | "OSXFrameworks": "Accelerate", 24 | "iOSFrameworks": "Accelerate" 25 | } 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | MPESynthesiserVoice::MPESynthesiserVoice() 26 | : currentSampleRate (0), noteStartTime (0) 27 | { 28 | } 29 | 30 | MPESynthesiserVoice::~MPESynthesiserVoice() 31 | { 32 | } 33 | 34 | //============================================================================== 35 | bool MPESynthesiserVoice::isCurrentlyPlayingNote (MPENote note) const noexcept 36 | { 37 | return isActive() && currentlyPlayingNote.noteID == note.noteID; 38 | } 39 | 40 | bool MPESynthesiserVoice::isPlayingButReleased() const noexcept 41 | { 42 | return isActive() && currentlyPlayingNote.keyState == MPENote::off; 43 | } 44 | 45 | bool MPESynthesiserVoice::wasStartedBefore (const MPESynthesiserVoice& other) const noexcept 46 | { 47 | return noteStartTime < other.noteStartTime; 48 | } 49 | 50 | void MPESynthesiserVoice::clearCurrentNote() noexcept 51 | { 52 | currentlyPlayingNote = MPENote(); 53 | } 54 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ToneGeneratorAudioSource::ToneGeneratorAudioSource() 26 | : frequency (1000.0), 27 | sampleRate (44100.0), 28 | currentPhase (0.0), 29 | phasePerSample (0.0), 30 | amplitude (0.5f) 31 | { 32 | } 33 | 34 | ToneGeneratorAudioSource::~ToneGeneratorAudioSource() 35 | { 36 | } 37 | 38 | //============================================================================== 39 | void ToneGeneratorAudioSource::setAmplitude (const float newAmplitude) 40 | { 41 | amplitude = newAmplitude; 42 | } 43 | 44 | void ToneGeneratorAudioSource::setFrequency (const double newFrequencyHz) 45 | { 46 | frequency = newFrequencyHz; 47 | phasePerSample = 0.0; 48 | } 49 | 50 | //============================================================================== 51 | void ToneGeneratorAudioSource::prepareToPlay (int /*samplesPerBlockExpected*/, double rate) 52 | { 53 | currentPhase = 0.0; 54 | phasePerSample = 0.0; 55 | sampleRate = rate; 56 | } 57 | 58 | void ToneGeneratorAudioSource::releaseResources() 59 | { 60 | } 61 | 62 | void ToneGeneratorAudioSource::getNextAudioBlock (const AudioSourceChannelInfo& info) 63 | { 64 | if (phasePerSample == 0.0) 65 | phasePerSample = double_Pi * 2.0 / (sampleRate / frequency); 66 | 67 | for (int i = 0; i < info.numSamples; ++i) 68 | { 69 | const float sample = amplitude * (float) std::sin (currentPhase); 70 | currentPhase += phasePerSample; 71 | 72 | for (int j = info.buffer->getNumChannels(); --j >= 0;) 73 | info.buffer->setSample (j, info.startSample + i, sample); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #define JUCE_INCLUDED_AAX_IN_MM 1 26 | #include "juce_AAX_Wrapper.cpp" 27 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/JuceLibraryCode/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_DigiCode2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | // Your project must contain an AppConfig.h file with your project-specific settings in it, 26 | // and your header search path must make it accessible to the module's files. 27 | #include "AppConfig.h" 28 | 29 | #include "../utility/juce_CheckSettingMacros.h" 30 | 31 | #if JucePlugin_Build_RTAS 32 | 33 | #include "juce_RTAS_DigiCode_Header.h" 34 | 35 | /* 36 | This file is used to include and build the required digidesign CPP files without your project 37 | needing to reference the files directly. Because these files will be found via your include path, 38 | this means that the project doesn't have to change to cope with people's SDKs being in different 39 | locations. 40 | 41 | Important note on Windows: In your project settings for the three juce_RTAS_DigiCode.cpp files and 42 | the juce_RTAS_Wrapper.cpp file, you need to set the calling convention to "__stdcall". 43 | If you don't do this, you'll get some unresolved externals and will spend a long time wondering what's 44 | going on... All the other files in your project can be set to use the normal __cdecl convention. 45 | 46 | If you get an error building the includes statements below, check your paths - there's a full 47 | list of the necessary Digidesign paths in juce_RTAS_Wrapper.cpp 48 | */ 49 | 50 | #include 51 | #include 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_DigiCode_Header.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_RTAS_DIGICODE_HEADER_H_INCLUDED 26 | #define JUCE_RTAS_DIGICODE_HEADER_H_INCLUDED 27 | 28 | #if JucePlugin_Build_RTAS 29 | 30 | //============================================================================== 31 | #if JucePlugin_Build_RTAS 32 | #ifdef _MSC_VER 33 | 34 | #define kCompileAsCodeResource 0 35 | #define kBuildStandAlone 0 36 | #define kNoDSP 0 37 | #define kNoDAE 0 38 | #define kNoSDS 0 39 | #define kNoViews 0 40 | #define kUseDSPCodeDecode 0 41 | 42 | #define WIN32 1 43 | #define WINDOWS_VERSION 1 44 | #define PLUGIN_SDK_BUILD 1 45 | #define PLUGIN_SDK_DIRECTMIDI 1 46 | 47 | // the Digidesign projects all use a struct alignment of 2.. 48 | #pragma pack (2) 49 | #pragma warning (disable: 4267 4996 4311 4312 4103 4121 4100 4127 4189 4245 4389 4512 4701) 50 | 51 | #include 52 | 53 | #else 54 | 55 | #define kCompileAsCodeResource 0 56 | #define kNoDSP 1 57 | #define kNoDAE 0 58 | #define kNoSDS 0 59 | #define kNoViews 0 60 | #define kUseDSPCodeDecode 0 61 | 62 | #define MAC_VERSION 1 63 | #define PLUGIN_SDK_BUILD 1 64 | #define PLUGIN_SDK_DIRECTMIDI 1 65 | #define DIGI_PASCAL 66 | 67 | #include 68 | 69 | #endif 70 | #endif 71 | #endif 72 | 73 | #endif // JUCE_RTAS_DIGICODE_HEADER_H_INCLUDED 74 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_MacResources.r: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | This dummy file is added to the resources section of the project to 4 | force XCode to create some resources for the dpm. If there aren't any 5 | resources, PT will refuse to load the plugin.. 6 | */ 7 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_WinExports.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | NewPlugIn @1 3 | _PI_GetRoutineDescriptor @2 4 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_WinResources.rsr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/JuceLibraryCode/modules/juce_audio_plugin_client/RTAS/juce_RTAS_WinResources.rsr -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/juce_audio_plugin_client.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_AUDIO_PLUGIN_CLIENT_H_INCLUDED 26 | #define JUCE_AUDIO_PLUGIN_CLIENT_H_INCLUDED 27 | 28 | #include "../juce_gui_basics/juce_gui_basics.h" 29 | #include "../juce_audio_basics/juce_audio_basics.h" 30 | #include "../juce_audio_processors/juce_audio_processors.h" 31 | #include "utility/juce_CheckSettingMacros.h" 32 | 33 | namespace juce 34 | { 35 | #include "utility/juce_PluginHostType.h" 36 | } 37 | 38 | #endif // JUCE_AUDIO_PLUGIN_CLIENT_H_INCLUDED 39 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/utility/juce_FakeMouseMoveGenerator.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_FAKEMOUSEMOVEGENERATOR_H_INCLUDED 26 | #define JUCE_FAKEMOUSEMOVEGENERATOR_H_INCLUDED 27 | 28 | #if JUCE_MAC && JUCE_SUPPORT_CARBON 29 | 30 | //============================================================================== 31 | // Helper class to workaround carbon windows not getting mouse-moves.. 32 | class FakeMouseMoveGenerator : private Timer 33 | { 34 | public: 35 | FakeMouseMoveGenerator() 36 | { 37 | startTimer (1000 / 30); 38 | } 39 | 40 | void timerCallback() override 41 | { 42 | // workaround for carbon windows not getting mouse-moves.. 43 | const Point screenPos (Desktop::getInstance().getMainMouseSource().getScreenPosition()); 44 | 45 | if (screenPos != lastScreenPos) 46 | { 47 | lastScreenPos = screenPos; 48 | const ModifierKeys mods (ModifierKeys::getCurrentModifiers()); 49 | 50 | if (! mods.isAnyMouseButtonDown()) 51 | if (Component* const comp = Desktop::getInstance().findComponentAt (screenPos.roundToInt())) 52 | if (ComponentPeer* const peer = comp->getPeer()) 53 | if (! peer->isFocused()) 54 | peer->handleMouseEvent (0, peer->globalToLocal (screenPos), mods, 55 | MouseInputSource::invalidPressure, Time::currentTimeMillis()); 56 | } 57 | } 58 | 59 | private: 60 | Point lastScreenPos; 61 | }; 62 | 63 | #else 64 | struct FakeMouseMoveGenerator {}; 65 | #endif 66 | 67 | #endif // JUCE_FAKEMOUSEMOVEGENERATOR_H_INCLUDED 68 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_INCLUDEMODULEHEADERS_H_INCLUDED 26 | #define JUCE_INCLUDEMODULEHEADERS_H_INCLUDED 27 | 28 | #include "../juce_audio_plugin_client.h" 29 | 30 | using namespace juce; 31 | 32 | namespace juce 33 | { 34 | #if JUCE_MAC 35 | #define Point juce::Point 36 | #define Component juce::Component 37 | 38 | void repostCurrentNSEvent(); 39 | #endif 40 | 41 | //============================================================================== 42 | inline const PluginHostType& getHostType() 43 | { 44 | static PluginHostType hostType; 45 | return hostType; 46 | } 47 | } 48 | 49 | extern AudioProcessor* JUCE_CALLTYPE createPluginFilterOfType (AudioProcessor::WrapperType); 50 | 51 | #endif // JUCE_INCLUDEMODULEHEADERS_H_INCLUDED 52 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #if JUCE_WINDOWS 26 | #undef _WIN32_WINNT 27 | #define _WIN32_WINNT 0x500 28 | #undef STRICT 29 | #define STRICT 1 30 | #include 31 | #include 32 | #pragma warning (disable : 4312 4355) 33 | #ifdef __INTEL_COMPILER 34 | #pragma warning (disable : 1899) 35 | #endif 36 | 37 | #elif JUCE_LINUX 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #undef Font 44 | #undef KeyPress 45 | #undef Drawable 46 | #undef Time 47 | 48 | #else 49 | #if ! (defined (JUCE_SUPPORT_CARBON) || defined (__LP64__)) 50 | #define JUCE_SUPPORT_CARBON 1 51 | #endif 52 | 53 | #if JUCE_SUPPORT_CARBON 54 | #define Point CarbonDummyPointName 55 | #define Component CarbonDummyCompName 56 | #include 57 | #include 58 | #undef Point 59 | #undef Component 60 | #else 61 | #include 62 | #endif 63 | #include 64 | #include 65 | #include 66 | #endif 67 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | AudioPluginFormat::AudioPluginFormat() noexcept {} 26 | AudioPluginFormat::~AudioPluginFormat() {} 27 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #if (JUCE_PLUGINHOST_AU && JUCE_MAC) || DOXYGEN 26 | 27 | //============================================================================== 28 | /** 29 | Implements a plugin format manager for AudioUnits. 30 | */ 31 | class JUCE_API AudioUnitPluginFormat : public AudioPluginFormat 32 | { 33 | public: 34 | //============================================================================== 35 | AudioUnitPluginFormat(); 36 | ~AudioUnitPluginFormat(); 37 | 38 | //============================================================================== 39 | String getName() const override { return "AudioUnit"; } 40 | void findAllTypesForFile (OwnedArray&, const String& fileOrIdentifier) override; 41 | AudioPluginInstance* createInstanceFromDescription (const PluginDescription& desc, double, int) override; 42 | bool fileMightContainThisPluginType (const String& fileOrIdentifier) override; 43 | String getNameOfPluginFromIdentifier (const String& fileOrIdentifier) override; 44 | bool pluginNeedsRescanning (const PluginDescription&) override; 45 | StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive) override; 46 | bool doesPluginStillExist (const PluginDescription&) override; 47 | FileSearchPath getDefaultLocationsToSearch() override; 48 | bool canScanForPlugins() const override { return true; } 49 | 50 | private: 51 | //============================================================================== 52 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioUnitPluginFormat) 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #if (JUCE_PLUGINHOST_LADSPA && JUCE_LINUX) || DOXYGEN 26 | 27 | //============================================================================== 28 | /** 29 | Implements a plugin format manager for LADSPA plugins. 30 | */ 31 | class JUCE_API LADSPAPluginFormat : public AudioPluginFormat 32 | { 33 | public: 34 | //============================================================================== 35 | LADSPAPluginFormat(); 36 | ~LADSPAPluginFormat(); 37 | 38 | //============================================================================== 39 | String getName() const override { return "LADSPA"; } 40 | void findAllTypesForFile (OwnedArray&, const String& fileOrIdentifier) override; 41 | AudioPluginInstance* createInstanceFromDescription (const PluginDescription&, double, int) override; 42 | bool fileMightContainThisPluginType (const String& fileOrIdentifier) override; 43 | String getNameOfPluginFromIdentifier (const String& fileOrIdentifier) override; 44 | bool pluginNeedsRescanning (const PluginDescription&) override; 45 | StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive) override; 46 | bool doesPluginStillExist (const PluginDescription&) override; 47 | FileSearchPath getDefaultLocationsToSearch() override; 48 | bool canScanForPlugins() const override { return true; } 49 | 50 | private: 51 | void recursiveFileSearch (StringArray&, const File&, bool recursive); 52 | 53 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LADSPAPluginFormat) 54 | }; 55 | 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_audio_processors.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_audio_processors", 3 | "name": "JUCE audio plugin hosting classes", 4 | "version": "4.1.0", 5 | "description": "Classes for loading and playing VST, AU, or internally-generated audio processors.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_gui_extra", "version": "matching" }, 10 | { "id": "juce_audio_basics", "version": "matching" } ], 11 | 12 | "include": "juce_audio_processors.h", 13 | 14 | "compile": [ { "file": "juce_audio_processors.cpp", "target": "! xcode" }, 15 | { "file": "juce_audio_processors.mm", "target": "xcode" } ], 16 | 17 | "browse": [ "processors/*", 18 | "format/*", 19 | "format_types/*", 20 | "scanning/*", 21 | "utilities/*" 22 | ], 23 | 24 | "OSXFrameworks": "CoreAudio CoreMIDI AudioToolbox", 25 | "iOSFrameworks": "AudioToolbox" 26 | } 27 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | AudioProcessorEditor::AudioProcessorEditor (AudioProcessor& p) noexcept : processor (p) 26 | { 27 | } 28 | 29 | AudioProcessorEditor::AudioProcessorEditor (AudioProcessor* p) noexcept : processor (*p) 30 | { 31 | // the filter must be valid.. 32 | jassert (p != nullptr); 33 | } 34 | 35 | AudioProcessorEditor::~AudioProcessorEditor() 36 | { 37 | // if this fails, then the wrapper hasn't called editorBeingDeleted() on the 38 | // filter for some reason.. 39 | jassert (processor.getActiveEditor() != this); 40 | } 41 | 42 | void AudioProcessorEditor::setControlHighlight (ParameterControlHighlightInfo) {} 43 | int AudioProcessorEditor::getControlParameterIndex (Component&) { return -1; } 44 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_GENERICAUDIOPROCESSOREDITOR_H_INCLUDED 26 | #define JUCE_GENERICAUDIOPROCESSOREDITOR_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A type of UI component that displays the parameters of an AudioProcessor as 32 | a simple list of sliders. 33 | 34 | This can be used for showing an editor for a processor that doesn't supply 35 | its own custom editor. 36 | 37 | @see AudioProcessor 38 | */ 39 | class JUCE_API GenericAudioProcessorEditor : public AudioProcessorEditor 40 | { 41 | public: 42 | //============================================================================== 43 | GenericAudioProcessorEditor (AudioProcessor* owner); 44 | ~GenericAudioProcessorEditor(); 45 | 46 | //============================================================================== 47 | void paint (Graphics&) override; 48 | void resized() override; 49 | 50 | private: 51 | //============================================================================== 52 | PropertyPanel panel; 53 | 54 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GenericAudioProcessorEditor) 55 | }; 56 | 57 | 58 | #endif // JUCE_GENERICAUDIOPROCESSOREDITOR_H_INCLUDED 59 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | 26 | /** 27 | Provides a class of AudioProcessorParameter that can be used as a boolean value. 28 | 29 | @see AudioParameterFloat, AudioParameterInt, AudioParameterChoice 30 | */ 31 | class JUCE_API AudioParameterBool : public AudioProcessorParameterWithID 32 | { 33 | public: 34 | /** Creates a AudioParameterBool with an ID and name. 35 | On creation, its value is set to the default value. 36 | */ 37 | AudioParameterBool (String parameterID, String name, bool defaultValue); 38 | 39 | /** Destructor. */ 40 | ~AudioParameterBool(); 41 | 42 | /** Returns the parameter's current boolean value. */ 43 | bool get() const noexcept { return value >= 0.5f; } 44 | /** Returns the parameter's current boolean value. */ 45 | operator bool() const noexcept { return get(); } 46 | 47 | /** Changes the parameter's current value to a new boolean. */ 48 | AudioParameterBool& operator= (bool newValue); 49 | 50 | 51 | private: 52 | //============================================================================== 53 | float value, defaultValue; 54 | 55 | float getValue() const override; 56 | void setValue (float newValue) override; 57 | float getDefaultValue() const override; 58 | int getNumSteps() const override; 59 | String getText (float, int) const override; 60 | float getValueForText (const String&) const override; 61 | 62 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterBool) 63 | }; 64 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | 26 | /** 27 | This abstract base class is used by some AudioProcessorParameter helper classes. 28 | 29 | @see AudioParameterFloat, AudioParameterInt, AudioParameterBool, AudioParameterChoice 30 | */ 31 | class JUCE_API AudioProcessorParameterWithID : public AudioProcessorParameter 32 | { 33 | public: 34 | /** Creation of this object requires providing a name and ID which will be 35 | constant for its lifetime. 36 | */ 37 | AudioProcessorParameterWithID (String parameterID, String name); 38 | 39 | /** Destructor. */ 40 | ~AudioProcessorParameterWithID(); 41 | 42 | /** Provides access to the parameter's ID string. */ 43 | const String paramID; 44 | 45 | /** Provides access to the parameter's name. */ 46 | const String name; 47 | 48 | private: 49 | String label; 50 | 51 | String getName (int) const override; 52 | String getLabel() const override; 53 | 54 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioProcessorParameterWithID) 55 | }; 56 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/files/juce_FileFilter.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | FileFilter::FileFilter (const String& filterDescription) 30 | : description (filterDescription) 31 | { 32 | } 33 | 34 | FileFilter::~FileFilter() 35 | { 36 | } 37 | 38 | const String& FileFilter::getDescription() const noexcept 39 | { 40 | return description; 41 | } 42 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/juce_core.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | #include "juce_core.cpp" 30 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_core", 3 | "name": "JUCE core classes", 4 | "version": "4.1.0", 5 | "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.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "ISC Permissive", 8 | 9 | "dependencies": [], 10 | 11 | "include": "juce_core.h", 12 | 13 | "compile": [ { "file": "juce_core.cpp", "target": "! xcode" }, 14 | { "file": "juce_core.mm", "target": "xcode" } ], 15 | 16 | "browse": [ "text/*", 17 | "maths/*", 18 | "memory/*", 19 | "containers/*", 20 | "threads/*", 21 | "time/*", 22 | "files/*", 23 | "network/*", 24 | "streams/*", 25 | "logging/*", 26 | "system/*", 27 | "xml/*", 28 | "javascript/*", 29 | "zip/*", 30 | "unit_tests/*", 31 | "misc/*", 32 | "native/*" ], 33 | 34 | "OSXFrameworks": "Cocoa IOKit", 35 | "iOSFrameworks": "Foundation", 36 | "LinuxLibs": "rt dl pthread", 37 | "mingwLibs": "uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm" 38 | } 39 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/logging/juce_Logger.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | Logger::Logger() {} 30 | 31 | Logger::~Logger() 32 | { 33 | // You're deleting this logger while it's still being used! 34 | // Always call Logger::setCurrentLogger (nullptr) before deleting the active logger. 35 | jassert (currentLogger != this); 36 | } 37 | 38 | Logger* Logger::currentLogger = nullptr; 39 | 40 | void Logger::setCurrentLogger (Logger* const newLogger) noexcept { currentLogger = newLogger; } 41 | Logger* Logger::getCurrentLogger() noexcept { return currentLogger; } 42 | 43 | void Logger::writeToLog (const String& message) 44 | { 45 | if (currentLogger != nullptr) 46 | currentLogger->logMessage (message); 47 | else 48 | outputDebugString (message); 49 | } 50 | 51 | #if JUCE_LOG_ASSERTIONS || JUCE_DEBUG 52 | void JUCE_API JUCE_CALLTYPE logAssertion (const char* const filename, const int lineNum) noexcept 53 | { 54 | String m ("JUCE Assertion failure in "); 55 | m << File::createFileWithoutCheckingPath (filename).getFileName() << ':' << lineNum; 56 | 57 | #if JUCE_LOG_ASSERTIONS 58 | Logger::writeToLog (m); 59 | #else 60 | DBG (m); 61 | #endif 62 | } 63 | #endif 64 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/native/java/AndroidMidiFallback.java: -------------------------------------------------------------------------------- 1 | //============================================================================== 2 | public class BluetoothManager 3 | { 4 | BluetoothManager() 5 | { 6 | } 7 | 8 | public String[] getMidiBluetoothAddresses() 9 | { 10 | String[] bluetoothAddresses = new String[0]; 11 | return bluetoothAddresses; 12 | } 13 | 14 | public String getHumanReadableStringForBluetoothAddress (String address) 15 | { 16 | return address; 17 | } 18 | 19 | public boolean isBluetoothDevicePaired (String address) 20 | { 21 | return false; 22 | } 23 | 24 | public boolean pairBluetoothMidiDevice(String address) 25 | { 26 | return false; 27 | } 28 | 29 | public void unpairBluetoothMidiDevice (String address) 30 | { 31 | } 32 | } 33 | 34 | //============================================================================== 35 | public class MidiDeviceManager 36 | { 37 | public MidiDeviceManager() 38 | { 39 | } 40 | 41 | public String[] getJuceAndroidMidiInputDevices() 42 | { 43 | return new String[0]; 44 | } 45 | 46 | public String[] getJuceAndroidMidiOutputDevices() 47 | { 48 | return new String[0]; 49 | } 50 | 51 | public JuceMidiPort openMidiInputPortWithJuceIndex (int index, long host) 52 | { 53 | return null; 54 | } 55 | 56 | public JuceMidiPort openMidiOutputPortWithJuceIndex (int index) 57 | { 58 | return null; 59 | } 60 | 61 | public String getInputPortNameForJuceIndex (int index) 62 | { 63 | return ""; 64 | } 65 | 66 | public String getOutputPortNameForJuceIndex (int index) 67 | { 68 | return ""; 69 | } 70 | } 71 | 72 | 73 | public MidiDeviceManager getAndroidMidiDeviceManager() 74 | { 75 | return null; 76 | } 77 | 78 | public BluetoothManager getAndroidBluetoothManager() 79 | { 80 | return null; 81 | } 82 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/native/juce_android_Misc.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | void Logger::outputDebugString (const String& text) 30 | { 31 | __android_log_print (ANDROID_LOG_INFO, "JUCE", "%s", text.toUTF8().getAddress()); 32 | } 33 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/native/juce_mac_ClangBugWorkaround.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | 30 | // This hack is a workaround for a bug (?) in Apple's 10.11 SDK headers 31 | // which cause some configurations of Clang to throw out a spurious error.. 32 | #if JUCE_PROJUCER_LIVE_BUILD && (defined (__APPLE_CPP__) || defined(__APPLE_CC__)) 33 | #include 34 | #undef CF_OPTIONS 35 | #define CF_OPTIONS(_type, _name) _type _name; enum 36 | #endif 37 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | NamedPipe::NamedPipe() 30 | { 31 | } 32 | 33 | NamedPipe::~NamedPipe() 34 | { 35 | close(); 36 | } 37 | 38 | bool NamedPipe::openExisting (const String& pipeName) 39 | { 40 | close(); 41 | 42 | ScopedWriteLock sl (lock); 43 | currentPipeName = pipeName; 44 | return openInternal (pipeName, false, false); 45 | } 46 | 47 | bool NamedPipe::isOpen() const 48 | { 49 | return pimpl != nullptr; 50 | } 51 | 52 | bool NamedPipe::createNewPipe (const String& pipeName, bool mustNotExist) 53 | { 54 | close(); 55 | 56 | ScopedWriteLock sl (lock); 57 | currentPipeName = pipeName; 58 | return openInternal (pipeName, true, mustNotExist); 59 | } 60 | 61 | String NamedPipe::getName() const 62 | { 63 | return currentPipeName; 64 | } 65 | 66 | // other methods for this class are implemented in the platform-specific files 67 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | FileInputSource::FileInputSource (const File& f, bool useFileTimeInHash) 30 | : file (f), useFileTimeInHashGeneration (useFileTimeInHash) 31 | { 32 | } 33 | 34 | FileInputSource::~FileInputSource() 35 | { 36 | } 37 | 38 | InputStream* FileInputSource::createInputStream() 39 | { 40 | return file.createInputStream(); 41 | } 42 | 43 | InputStream* FileInputSource::createInputStreamFor (const String& relatedItemPath) 44 | { 45 | return file.getSiblingFile (relatedItemPath).createInputStream(); 46 | } 47 | 48 | int64 FileInputSource::hashCode() const 49 | { 50 | int64 h = file.hashCode(); 51 | 52 | if (useFileTimeInHashGeneration) 53 | h ^= file.getLastModificationTime().toMilliseconds(); 54 | 55 | return h; 56 | } 57 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any purpose with 8 | or without fee is hereby granted, provided that the above copyright notice and this 9 | permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 12 | TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 13 | NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 15 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | 18 | ------------------------------------------------------------------------------ 19 | 20 | NOTE! This permissive ISC license applies ONLY to files within the juce_core module! 21 | All other JUCE modules are covered by a dual GPL/commercial license, so if you are 22 | using any other modules, be sure to check that you also comply with their license. 23 | 24 | For more details, visit www.juce.com 25 | 26 | ============================================================================== 27 | */ 28 | 29 | HighResolutionTimer::HighResolutionTimer() { pimpl = new Pimpl (*this); } 30 | HighResolutionTimer::~HighResolutionTimer() { stopTimer(); } 31 | 32 | void HighResolutionTimer::startTimer (int periodMs) { pimpl->start (jmax (1, periodMs)); } 33 | void HighResolutionTimer::stopTimer() { pimpl->stop(); } 34 | 35 | bool HighResolutionTimer::isTimerRunning() const noexcept { return pimpl->periodMs != 0; } 36 | int HighResolutionTimer::getTimerInterval() const noexcept { return pimpl->periodMs; } 37 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/zip/zlib/inffast.h: -------------------------------------------------------------------------------- 1 | /* inffast.h -- header to use inffast.c 2 | * Copyright (C) 1995-2003 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* WARNING: this file should *not* be used by applications. It is 7 | part of the implementation of the compression library and is 8 | subject to change. Applications should only use zlib.h. 9 | */ 10 | 11 | void inflate_fast OF((z_streamp strm, unsigned start)); 12 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_core/zip/zlib/uncompr.c: -------------------------------------------------------------------------------- 1 | /* uncompr.c -- decompress a memory buffer 2 | * Copyright (C) 1995-2003 Jean-loup Gailly. 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* @(#) $Id: uncompr.c,v 1.1 2007/06/07 17:54:37 jules_rms Exp $ */ 7 | 8 | #define ZLIB_INTERNAL 9 | #include "zlib.h" 10 | 11 | /* =========================================================================== 12 | Decompresses the source buffer into the destination buffer. sourceLen is 13 | the byte length of the source buffer. Upon entry, destLen is the total 14 | size of the destination buffer, which must be large enough to hold the 15 | entire uncompressed data. (The size of the uncompressed data must have 16 | been saved previously by the compressor and transmitted to the decompressor 17 | by some mechanism outside the scope of this compression library.) 18 | Upon exit, destLen is the actual size of the compressed buffer. 19 | This function can be used to decompress a whole file at once if the 20 | input file is mmap'ed. 21 | 22 | uncompress returns Z_OK if success, Z_MEM_ERROR if there was not 23 | enough memory, Z_BUF_ERROR if there was not enough room in the output 24 | buffer, or Z_DATA_ERROR if the input data was corrupted. 25 | */ 26 | int ZEXPORT uncompress (Bytef *dest, 27 | uLongf *destLen, 28 | const Bytef *source, 29 | uLong sourceLen) 30 | { 31 | z_stream stream; 32 | int err; 33 | 34 | stream.next_in = (Bytef*)source; 35 | stream.avail_in = (uInt)sourceLen; 36 | /* Check for source > 64K on 16-bit machine: */ 37 | if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; 38 | 39 | stream.next_out = dest; 40 | stream.avail_out = (uInt)*destLen; 41 | if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; 42 | 43 | stream.zalloc = (alloc_func)0; 44 | stream.zfree = (free_func)0; 45 | 46 | err = inflateInit(&stream); 47 | if (err != Z_OK) return err; 48 | 49 | err = inflate(&stream, Z_FINISH); 50 | if (err != Z_STREAM_END) { 51 | inflateEnd(&stream); 52 | if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) 53 | return Z_DATA_ERROR; 54 | return err; 55 | } 56 | *destLen = stream.total_out; 57 | 58 | err = inflateEnd(&stream); 59 | return err; 60 | } 61 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_data_structures/juce_data_structures.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #if defined (JUCE_DATA_STRUCTURES_H_INCLUDED) && ! JUCE_AMALGAMATED_INCLUDE 26 | /* When you add this cpp file to your project, you mustn't include it in a file where you've 27 | already included any other headers - just put it inside a file on its own, possibly with your config 28 | flags preceding it, but don't include anything else. That also includes avoiding any automatic prefix 29 | header files that the compiler may be using. 30 | */ 31 | #error "Incorrect use of JUCE cpp file" 32 | #endif 33 | 34 | // Your project must contain an AppConfig.h file with your project-specific settings in it, 35 | // and your header search path must make it accessible to the module's files. 36 | #include "AppConfig.h" 37 | 38 | #include "juce_data_structures.h" 39 | 40 | namespace juce 41 | { 42 | 43 | #include "values/juce_Value.cpp" 44 | #include "values/juce_ValueTree.cpp" 45 | #include "values/juce_ValueTreeSynchroniser.cpp" 46 | #include "undomanager/juce_UndoManager.cpp" 47 | #include "app_properties/juce_ApplicationProperties.cpp" 48 | #include "app_properties/juce_PropertiesFile.cpp" 49 | 50 | } 51 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_DATA_STRUCTURES_H_INCLUDED 26 | #define JUCE_DATA_STRUCTURES_H_INCLUDED 27 | 28 | //============================================================================= 29 | #include "../juce_events/juce_events.h" 30 | 31 | namespace juce 32 | { 33 | 34 | #include "undomanager/juce_UndoableAction.h" 35 | #include "undomanager/juce_UndoManager.h" 36 | #include "values/juce_Value.h" 37 | #include "values/juce_ValueTree.h" 38 | #include "values/juce_ValueTreeSynchroniser.h" 39 | #include "app_properties/juce_PropertiesFile.h" 40 | #include "app_properties/juce_ApplicationProperties.h" 41 | 42 | } 43 | 44 | #endif // JUCE_DATA_STRUCTURES_H_INCLUDED 45 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_data_structures.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_data_structures/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_data_structures", 3 | "name": "JUCE data model helper classes", 4 | "version": "4.1.0", 5 | "description": "Classes for undo/redo management, and smart data structures.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_core", "version": "matching" }, 10 | { "id": "juce_events", "version": "matching" } ], 11 | 12 | "include": "juce_data_structures.h", 13 | 14 | "compile": [ { "file": "juce_data_structures.cpp", "target": "! xcode" }, 15 | { "file": "juce_data_structures.mm", "target": "xcode" } ], 16 | 17 | "browse": [ "values/*", 18 | "undomanager/*", 19 | "app_properties/*" ] 20 | } 21 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionListener.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_ACTIONLISTENER_H_INCLUDED 26 | #define JUCE_ACTIONLISTENER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Interface class for delivery of events that are sent by an ActionBroadcaster. 32 | 33 | @see ActionBroadcaster, ChangeListener 34 | */ 35 | class JUCE_API ActionListener 36 | { 37 | public: 38 | /** Destructor. */ 39 | virtual ~ActionListener() {} 40 | 41 | /** Overridden by your subclass to receive the callback. 42 | 43 | @param message the string that was specified when the event was triggered 44 | by a call to ActionBroadcaster::sendActionMessage() 45 | */ 46 | virtual void actionListenerCallback (const String& message) = 0; 47 | }; 48 | 49 | 50 | #endif // JUCE_ACTIONLISTENER_H_INCLUDED 51 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | InterprocessConnectionServer::InterprocessConnectionServer() 26 | : Thread ("Juce IPC server") 27 | { 28 | } 29 | 30 | InterprocessConnectionServer::~InterprocessConnectionServer() 31 | { 32 | stop(); 33 | } 34 | 35 | //============================================================================== 36 | bool InterprocessConnectionServer::beginWaitingForSocket (const int portNumber) 37 | { 38 | stop(); 39 | 40 | socket = new StreamingSocket(); 41 | 42 | if (socket->createListener (portNumber)) 43 | { 44 | startThread(); 45 | return true; 46 | } 47 | 48 | socket = nullptr; 49 | return false; 50 | } 51 | 52 | void InterprocessConnectionServer::stop() 53 | { 54 | signalThreadShouldExit(); 55 | 56 | if (socket != nullptr) 57 | socket->close(); 58 | 59 | stopThread (4000); 60 | socket = nullptr; 61 | } 62 | 63 | void InterprocessConnectionServer::run() 64 | { 65 | while ((! threadShouldExit()) && socket != nullptr) 66 | { 67 | ScopedPointer clientSocket (socket->waitForNextConnection()); 68 | 69 | if (clientSocket != nullptr) 70 | if (InterprocessConnection* newConnection = createConnectionObject()) 71 | newConnection->initialiseWithSocket (clientSocket.release()); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/juce_events.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_EVENTS_H_INCLUDED 26 | #define JUCE_EVENTS_H_INCLUDED 27 | 28 | //============================================================================= 29 | #include "../juce_core/juce_core.h" 30 | 31 | namespace juce 32 | { 33 | 34 | #include "messages/juce_MessageManager.h" 35 | #include "messages/juce_Message.h" 36 | #include "messages/juce_MessageListener.h" 37 | #include "messages/juce_CallbackMessage.h" 38 | #include "messages/juce_DeletedAtShutdown.h" 39 | #include "messages/juce_NotificationType.h" 40 | #include "messages/juce_ApplicationBase.h" 41 | #include "messages/juce_Initialisation.h" 42 | #include "messages/juce_MountedVolumeListChangeDetector.h" 43 | #include "broadcasters/juce_ActionBroadcaster.h" 44 | #include "broadcasters/juce_ActionListener.h" 45 | #include "broadcasters/juce_AsyncUpdater.h" 46 | #include "broadcasters/juce_ChangeListener.h" 47 | #include "broadcasters/juce_ChangeBroadcaster.h" 48 | #include "timers/juce_Timer.h" 49 | #include "timers/juce_MultiTimer.h" 50 | #include "interprocess/juce_InterprocessConnection.h" 51 | #include "interprocess/juce_InterprocessConnectionServer.h" 52 | #include "interprocess/juce_ConnectedChildProcess.h" 53 | #include "native/juce_ScopedXLock.h" 54 | 55 | } 56 | 57 | #endif // JUCE_EVENTS_H_INCLUDED 58 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/juce_events.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_events.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_events", 3 | "name": "JUCE message and event handling classes", 4 | "version": "4.1.0", 5 | "description": "Classes for running an application's main event loop and sending/receiving messages, timers, etc.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_core", "version": "matching" } ], 10 | 11 | "include": "juce_events.h", 12 | 13 | "compile": [ { "file": "juce_events.cpp", "target": "! xcode" }, 14 | { "file": "juce_events.mm", "target": "xcode" } ], 15 | 16 | "browse": [ "messages/*", 17 | "timers/*", 18 | "broadcasters/*", 19 | "interprocess/*", 20 | "native/*" ], 21 | 22 | "LinuxLibs": "X11" 23 | } 24 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_DELETEDATSHUTDOWN_H_INCLUDED 26 | #define JUCE_DELETEDATSHUTDOWN_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Classes derived from this will be automatically deleted when the application exits. 32 | 33 | After JUCEApplicationBase::shutdown() has been called, any objects derived from 34 | DeletedAtShutdown which are still in existence will be deleted in the reverse 35 | order to that in which they were created. 36 | 37 | So if you've got a singleton and don't want to have to explicitly delete it, just 38 | inherit from this and it'll be taken care of. 39 | */ 40 | class JUCE_API DeletedAtShutdown 41 | { 42 | protected: 43 | /** Creates a DeletedAtShutdown object. */ 44 | DeletedAtShutdown(); 45 | 46 | /** Destructor. 47 | 48 | It's ok to delete these objects explicitly - it's only the ones left 49 | dangling at the end that will be deleted automatically. 50 | */ 51 | virtual ~DeletedAtShutdown(); 52 | 53 | 54 | public: 55 | /** Deletes all extant objects. 56 | 57 | This shouldn't be used by applications, as it's called automatically 58 | in the shutdown code of the JUCEApplicationBase class. 59 | */ 60 | static void deleteAll(); 61 | 62 | private: 63 | static Array & getObjects(); 64 | 65 | JUCE_DECLARE_NON_COPYABLE (DeletedAtShutdown) 66 | }; 67 | 68 | #endif // JUCE_DELETEDATSHUTDOWN_H_INCLUDED 69 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/messages/juce_Message.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_MESSAGE_H_INCLUDED 26 | #define JUCE_MESSAGE_H_INCLUDED 27 | 28 | class MessageListener; 29 | 30 | 31 | //============================================================================== 32 | /** The base class for objects that can be sent to a MessageListener. 33 | 34 | If you want to send a message that carries some kind of custom data, just 35 | create a subclass of Message with some appropriate member variables to hold 36 | your data. 37 | 38 | Always create a new instance of a Message object on the heap, as it will be 39 | deleted automatically after the message has been delivered. 40 | 41 | @see MessageListener, MessageManager, ActionListener, ChangeListener 42 | */ 43 | class JUCE_API Message : public MessageManager::MessageBase 44 | { 45 | public: 46 | //============================================================================== 47 | /** Creates an uninitialised message. */ 48 | Message() noexcept; 49 | ~Message(); 50 | 51 | typedef ReferenceCountedObjectPtr Ptr; 52 | 53 | //============================================================================== 54 | private: 55 | friend class MessageListener; 56 | WeakReference recipient; 57 | void messageCallback() override; 58 | 59 | // Avoid the leak-detector because for plugins, the host can unload our DLL with undelivered 60 | // messages still in the system event queue. These aren't harmful, but can cause annoying assertions. 61 | JUCE_DECLARE_NON_COPYABLE (Message) 62 | }; 63 | 64 | 65 | #endif // JUCE_MESSAGE_H_INCLUDED 66 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | Message::Message() noexcept {} 26 | Message::~Message() {} 27 | 28 | void Message::messageCallback() 29 | { 30 | if (MessageListener* const r = recipient) 31 | r->handleMessage (*this); 32 | } 33 | 34 | MessageListener::MessageListener() noexcept 35 | { 36 | // Are you trying to create a messagelistener before or after juce has been intialised?? 37 | jassert (MessageManager::getInstanceWithoutCreating() != nullptr); 38 | } 39 | 40 | MessageListener::~MessageListener() 41 | { 42 | masterReference.clear(); 43 | } 44 | 45 | void MessageListener::postMessage (Message* const message) const 46 | { 47 | message->recipient = const_cast (this); 48 | message->post(); 49 | } 50 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_MOUNTEDVOLUMELISTCHANGEDETECTOR_H_INCLUDED 26 | #define JUCE_MOUNTEDVOLUMELISTCHANGEDETECTOR_H_INCLUDED 27 | 28 | #if JUCE_MAC || JUCE_WINDOWS || defined (DOXYGEN) 29 | 30 | //============================================================================== 31 | /** 32 | An instance of this class will provide callbacks when drives are 33 | mounted or unmounted on the system. 34 | 35 | Just inherit from this class and implement the pure virtual method 36 | to get the callbacks, there's no need to do anything else. 37 | 38 | @see File::findFileSystemRoots() 39 | */ 40 | class JUCE_API MountedVolumeListChangeDetector 41 | { 42 | public: 43 | MountedVolumeListChangeDetector(); 44 | virtual ~MountedVolumeListChangeDetector(); 45 | 46 | /** This method is called when a volume is mounted or unmounted. */ 47 | virtual void mountedVolumeListChanged() = 0; 48 | 49 | private: 50 | JUCE_PUBLIC_IN_DLL_BUILD (struct Pimpl) 51 | friend struct ContainerDeletePolicy; 52 | ScopedPointer pimpl; 53 | 54 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MountedVolumeListChangeDetector) 55 | }; 56 | 57 | #endif 58 | 59 | #endif // JUCE_MOUNTEDVOLUMELISTCHANGEDETECTOR_H_INCLUDED 60 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/messages/juce_NotificationType.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_NOTIFICATIONTYPE_H_INCLUDED 26 | #define JUCE_NOTIFICATIONTYPE_H_INCLUDED 27 | 28 | //============================================================================== 29 | /** 30 | These enums are used in various classes to indicate whether a notification 31 | event should be sent out. 32 | */ 33 | enum NotificationType 34 | { 35 | dontSendNotification = 0, /**< No notification message should be sent. */ 36 | sendNotification = 1, /**< Requests a notification message, either synchronous or not. */ 37 | sendNotificationSync, /**< Requests a synchronous notification. */ 38 | sendNotificationAsync, /**< Requests an asynchronous notification. */ 39 | }; 40 | 41 | 42 | #endif // JUCE_NOTIFICATIONTYPE_H_INCLUDED 43 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/native/juce_ScopedXLock.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_SCOPEDXLOCK_H_INCLUDED 26 | #define JUCE_SCOPEDXLOCK_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | #if JUCE_LINUX || DOXYGEN 31 | 32 | /** A handy class that uses XLockDisplay and XUnlockDisplay to lock the X server 33 | using RAII (Only available in Linux!). 34 | */ 35 | class ScopedXLock 36 | { 37 | public: 38 | /** Creating a ScopedXLock object locks the X display. 39 | This uses XLockDisplay() to grab the display that Juce is using. 40 | */ 41 | ScopedXLock(); 42 | 43 | /** Deleting a ScopedXLock object unlocks the X display. 44 | This calls XUnlockDisplay() to release the lock. 45 | */ 46 | ~ScopedXLock(); 47 | }; 48 | 49 | #endif 50 | #endif // JUCE_SCOPEDXLOCK_H_INCLUDED 51 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | LowLevelGraphicsSoftwareRenderer::LowLevelGraphicsSoftwareRenderer (const Image& image) 26 | : RenderingHelpers::StackBasedLowLevelGraphicsContext 27 | (new RenderingHelpers::SoftwareRendererSavedState (image, image.getBounds())) 28 | { 29 | } 30 | 31 | LowLevelGraphicsSoftwareRenderer::LowLevelGraphicsSoftwareRenderer (const Image& image, Point origin, 32 | const RectangleList& initialClip) 33 | : RenderingHelpers::StackBasedLowLevelGraphicsContext 34 | (new RenderingHelpers::SoftwareRendererSavedState (image, initialClip, origin)) 35 | { 36 | } 37 | 38 | LowLevelGraphicsSoftwareRenderer::~LowLevelGraphicsSoftwareRenderer() {} 39 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_LOWLEVELGRAPHICSSOFTWARERENDERER_H_INCLUDED 26 | #define JUCE_LOWLEVELGRAPHICSSOFTWARERENDERER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A lowest-common-denominator implementation of LowLevelGraphicsContext that does all 32 | its rendering in memory. 33 | 34 | User code is not supposed to create instances of this class directly - do all your 35 | rendering via the Graphics class instead. 36 | */ 37 | class JUCE_API LowLevelGraphicsSoftwareRenderer : public RenderingHelpers::StackBasedLowLevelGraphicsContext 38 | { 39 | public: 40 | //============================================================================== 41 | /** Creates a context to render into an image. */ 42 | LowLevelGraphicsSoftwareRenderer (const Image& imageToRenderOnto); 43 | 44 | /** Creates a context to render into a clipped subsection of an image. */ 45 | LowLevelGraphicsSoftwareRenderer (const Image& imageToRenderOnto, Point origin, 46 | const RectangleList& initialClip); 47 | 48 | /** Destructor. */ 49 | ~LowLevelGraphicsSoftwareRenderer(); 50 | 51 | private: 52 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LowLevelGraphicsSoftwareRenderer) 53 | }; 54 | 55 | 56 | #endif // JUCE_LOWLEVELGRAPHICSSOFTWARERENDERER_H_INCLUDED 57 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | GlowEffect::GlowEffect() 26 | : radius (2.0f), 27 | colour (Colours::white) 28 | { 29 | } 30 | 31 | GlowEffect::~GlowEffect() 32 | { 33 | } 34 | 35 | void GlowEffect::setGlowProperties (const float newRadius, 36 | Colour newColour) 37 | { 38 | radius = newRadius; 39 | colour = newColour; 40 | } 41 | 42 | void GlowEffect::applyEffect (Image& image, Graphics& g, float scaleFactor, float alpha) 43 | { 44 | Image temp (image.getFormat(), image.getWidth(), image.getHeight(), true); 45 | 46 | ImageConvolutionKernel blurKernel (roundToInt (radius * scaleFactor * 2.0f)); 47 | 48 | blurKernel.createGaussianBlur (radius); 49 | blurKernel.rescaleAllValues (radius); 50 | 51 | blurKernel.applyToImage (temp, image, image.getBounds()); 52 | 53 | g.setColour (colour.withMultipliedAlpha (alpha)); 54 | g.drawImageAt (temp, 0, 0, true); 55 | 56 | g.setOpacity (alpha); 57 | g.drawImageAt (image, 0, 0, false); 58 | } 59 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt: -------------------------------------------------------------------------------- 1 | 2 | I've included libjpeg in the JUCE tree because loading jpegs is a pretty useful thing to 3 | be able to do, but I've left out as many files as possible to keep it lean-and-mean. 4 | 5 | If you want to get hold of the full version of libjpeg, it's freely available at: 6 | 7 | http://www.ijg.org/ 8 | 9 | 10 | Please note that part of the IJG's license for libjpeg states that: 11 | 12 | "If you use it in a program, you must acknowledge somewhere in 13 | your documentation that you've used the IJG code". 14 | 15 | ..so if you release a JUCE program that reads JPEGs, you should probably give them a mention. 16 | 17 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jchuff.h: -------------------------------------------------------------------------------- 1 | /* 2 | * jchuff.h 3 | * 4 | * Copyright (C) 1991-1997, Thomas G. Lane. 5 | * This file is part of the Independent JPEG Group's software. 6 | * For conditions of distribution and use, see the accompanying README file. 7 | * 8 | * This file contains declarations for Huffman entropy encoding routines 9 | * that are shared between the sequential encoder (jchuff.c) and the 10 | * progressive encoder (jcphuff.c). No other modules need to see these. 11 | */ 12 | 13 | /* The legal range of a DCT coefficient is 14 | * -1024 .. +1023 for 8-bit data; 15 | * -16384 .. +16383 for 12-bit data. 16 | * Hence the magnitude should always fit in 10 or 14 bits respectively. 17 | */ 18 | 19 | #ifndef _jchuff_h_ 20 | #define _jchuff_h_ 21 | 22 | #if BITS_IN_JSAMPLE == 8 23 | #define MAX_COEF_BITS 10 24 | #else 25 | #define MAX_COEF_BITS 14 26 | #endif 27 | 28 | /* Derived data constructed for each Huffman table */ 29 | 30 | typedef struct { 31 | unsigned int ehufco[256]; /* code for each symbol */ 32 | char ehufsi[256]; /* length of code for each symbol */ 33 | /* If no code has been allocated for a symbol S, ehufsi[S] contains 0 */ 34 | } c_derived_tbl; 35 | 36 | /* Short forms of external names for systems with brain-damaged linkers. */ 37 | 38 | #ifdef NEED_SHORT_EXTERNAL_NAMES 39 | #define jpeg_make_c_derived_tbl jMkCDerived 40 | #define jpeg_gen_optimal_table jGenOptTbl 41 | #endif /* NEED_SHORT_EXTERNAL_NAMES */ 42 | 43 | /* Expand a Huffman table definition into the derived format */ 44 | EXTERN(void) jpeg_make_c_derived_tbl 45 | JPP((j_compress_ptr cinfo, boolean isDC, int tblno, 46 | c_derived_tbl ** pdtbl)); 47 | 48 | /* Generate an optimal table definition given the specified counts */ 49 | EXTERN(void) jpeg_gen_optimal_table 50 | JPP((j_compress_ptr cinfo, JHUFF_TBL * htbl, long freq[])); 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jconfig.h: -------------------------------------------------------------------------------- 1 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ 2 | /* see jconfig.doc for explanations */ 3 | 4 | // disable all the warnings under MSVC 5 | #ifdef _MSC_VER 6 | #pragma warning (disable: 4996 4267 4100 4127 4702 4244) 7 | #endif 8 | 9 | #ifdef __BORLANDC__ 10 | #pragma warn -8057 11 | #pragma warn -8019 12 | #pragma warn -8004 13 | #pragma warn -8008 14 | #endif 15 | 16 | #define HAVE_PROTOTYPES 17 | #define HAVE_UNSIGNED_CHAR 18 | #define HAVE_UNSIGNED_SHORT 19 | /* #define void char */ 20 | /* #define const */ 21 | #undef CHAR_IS_UNSIGNED 22 | #define HAVE_STDDEF_H 23 | #define HAVE_STDLIB_H 24 | #undef NEED_BSD_STRINGS 25 | #undef NEED_SYS_TYPES_H 26 | #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ 27 | #undef NEED_SHORT_EXTERNAL_NAMES 28 | #undef INCOMPLETE_TYPES_BROKEN 29 | 30 | /* Define "boolean" as unsigned char, not int, per Windows custom */ 31 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 32 | typedef unsigned char boolean; 33 | #endif 34 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 35 | 36 | 37 | #ifdef JPEG_INTERNALS 38 | 39 | #undef RIGHT_SHIFT_IS_UNSIGNED 40 | 41 | #endif /* JPEG_INTERNALS */ 42 | 43 | #ifdef JPEG_CJPEG_DJPEG 44 | 45 | #define BMP_SUPPORTED /* BMP image file format */ 46 | #define GIF_SUPPORTED /* GIF image file format */ 47 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 48 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 49 | #define TARGA_SUPPORTED /* Targa image file format */ 50 | 51 | #define TWO_FILE_COMMANDLINE /* optional */ 52 | #define USE_SETMODE /* Microsoft has setmode() */ 53 | #undef NEED_SIGNAL_CATCHER 54 | #undef DONT_USE_B_MODE 55 | #undef PROGRESS_REPORT /* optional */ 56 | 57 | #endif /* JPEG_CJPEG_DJPEG */ 58 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jversion.h: -------------------------------------------------------------------------------- 1 | /* 2 | * jversion.h 3 | * 4 | * Copyright (C) 1991-1998, Thomas G. Lane. 5 | * This file is part of the Independent JPEG Group's software. 6 | * For conditions of distribution and use, see the accompanying README file. 7 | * 8 | * This file contains software version identification. 9 | */ 10 | 11 | 12 | #define JVERSION "6b 27-Mar-1998" 13 | 14 | #define JCOPYRIGHT "Copyright (C) 1998, Thomas G. Lane" 15 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/libpng_readme.txt: -------------------------------------------------------------------------------- 1 | 2 | These files are from the libpng library - http://www.libpng.org/ 3 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/juce_graphics.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_graphics.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_graphics", 3 | "name": "JUCE graphics classes", 4 | "version": "4.1.0", 5 | "description": "Classes for 2D vector graphics, image loading/saving, font handling, etc.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_core", "version": "matching" }, 10 | { "id": "juce_events", "version": "matching" } ], 11 | 12 | "include": "juce_graphics.h", 13 | 14 | "compile": [ { "file": "juce_graphics.cpp", "target": "! xcode" }, 15 | { "file": "juce_graphics.mm", "target": "xcode" } ], 16 | 17 | "browse": [ "colour/*", 18 | "contexts/*", 19 | "images/*", 20 | "image_formats/*", 21 | "geometry/*", 22 | "placement/*", 23 | "fonts/*", 24 | "effects/*", 25 | "native/*" ], 26 | 27 | "OSXFrameworks": "Cocoa QuartzCore", 28 | "iOSFrameworks": "CoreGraphics CoreText QuartzCore", 29 | "LinuxLibs": "X11 Xinerama Xext freetype" 30 | } 31 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/native/juce_android_GraphicsContext.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | namespace GraphicsHelpers 26 | { 27 | jobject createPaint (Graphics::ResamplingQuality quality) 28 | { 29 | jint constructorFlags = 1 /*ANTI_ALIAS_FLAG*/ 30 | | 4 /*DITHER_FLAG*/ 31 | | 128 /*SUBPIXEL_TEXT_FLAG*/; 32 | 33 | if (quality > Graphics::lowResamplingQuality) 34 | constructorFlags |= 2; /*FILTER_BITMAP_FLAG*/ 35 | 36 | return getEnv()->NewObject (Paint, Paint.constructor, constructorFlags); 37 | } 38 | 39 | const jobject createMatrix (JNIEnv* env, const AffineTransform& t) 40 | { 41 | jobject m = env->NewObject (Matrix, Matrix.constructor); 42 | 43 | jfloat values[9] = { t.mat00, t.mat01, t.mat02, 44 | t.mat10, t.mat11, t.mat12, 45 | 0.0f, 0.0f, 1.0f }; 46 | 47 | jfloatArray javaArray = env->NewFloatArray (9); 48 | env->SetFloatArrayRegion (javaArray, 0, 9, values); 49 | 50 | env->CallVoidMethod (m, Matrix.setValues, javaArray); 51 | env->DeleteLocalRef (javaArray); 52 | 53 | return m; 54 | } 55 | } 56 | 57 | ImagePixelData::Ptr NativeImageType::create (Image::PixelFormat format, int width, int height, bool clearImage) const 58 | { 59 | return SoftwareImageType().create (format, width, height, clearImage); 60 | } 61 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_MAC_COREGRAPHICSHELPERS_H_INCLUDED 26 | #define JUCE_MAC_COREGRAPHICSHELPERS_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | namespace 31 | { 32 | template 33 | Rectangle convertToRectInt (RectType r) noexcept 34 | { 35 | return Rectangle ((int) r.origin.x, (int) r.origin.y, (int) r.size.width, (int) r.size.height); 36 | } 37 | 38 | template 39 | Rectangle convertToRectFloat (RectType r) noexcept 40 | { 41 | return Rectangle (r.origin.x, r.origin.y, r.size.width, r.size.height); 42 | } 43 | 44 | template 45 | CGRect convertToCGRect (RectType r) noexcept 46 | { 47 | return CGRectMake ((CGFloat) r.getX(), (CGFloat) r.getY(), (CGFloat) r.getWidth(), (CGFloat) r.getHeight()); 48 | } 49 | 50 | template 51 | CGPoint convertToCGPoint (PointType p) noexcept 52 | { 53 | return CGPointMake ((CGFloat) p.x, (CGFloat) p.y); 54 | } 55 | } 56 | 57 | extern CGImageRef juce_createCoreGraphicsImage (const Image&, CGColorSpaceRef, bool mustOutliveSource); 58 | extern CGContextRef juce_getImageContext (const Image&); 59 | 60 | #endif // JUCE_MAC_COREGRAPHICSHELPERS_H_INCLUDED 61 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ArrowButton::ArrowButton (const String& name, float arrowDirectionInRadians, Colour arrowColour) 26 | : Button (name), colour (arrowColour) 27 | { 28 | path.addTriangle (0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f); 29 | path.applyTransform (AffineTransform::rotation (float_Pi * 2.0f * arrowDirectionInRadians, 0.5f, 0.5f)); 30 | } 31 | 32 | ArrowButton::~ArrowButton() {} 33 | 34 | void ArrowButton::paintButton (Graphics& g, bool /*isMouseOverButton*/, bool isButtonDown) 35 | { 36 | Path p (path); 37 | 38 | const float offset = isButtonDown ? 1.0f : 0.0f; 39 | p.applyTransform (path.getTransformToScaleToFit (offset, offset, getWidth() - 3.0f, getHeight() - 3.0f, false)); 40 | 41 | DropShadow (Colours::black.withAlpha (0.3f), isButtonDown ? 2 : 4, Point()).drawForPath (g, p); 42 | 43 | g.setColour (colour); 44 | g.fillPath (p); 45 | } 46 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_ARROWBUTTON_H_INCLUDED 26 | #define JUCE_ARROWBUTTON_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A button with an arrow in it. 32 | 33 | @see Button 34 | */ 35 | class JUCE_API ArrowButton : public Button 36 | { 37 | public: 38 | //============================================================================== 39 | /** Creates an ArrowButton. 40 | 41 | @param buttonName the name to give the button 42 | @param arrowDirection the direction the arrow should point in, where 0.0 is 43 | pointing right, 0.25 is down, 0.5 is left, 0.75 is up 44 | @param arrowColour the colour to use for the arrow 45 | */ 46 | ArrowButton (const String& buttonName, 47 | float arrowDirection, 48 | Colour arrowColour); 49 | 50 | /** Destructor. */ 51 | ~ArrowButton(); 52 | 53 | /** @internal */ 54 | void paintButton (Graphics&, bool isMouseOverButton, bool isButtonDown) override; 55 | 56 | private: 57 | Colour colour; 58 | Path path; 59 | 60 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ArrowButton) 61 | }; 62 | 63 | 64 | #endif // JUCE_ARROWBUTTON_H_INCLUDED 65 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | TextButton::TextButton() : Button (String()) 26 | { 27 | } 28 | 29 | TextButton::TextButton (const String& name) : Button (name) 30 | { 31 | } 32 | 33 | TextButton::TextButton (const String& name, const String& toolTip) : Button (name) 34 | { 35 | setTooltip (toolTip); 36 | } 37 | 38 | TextButton::~TextButton() 39 | { 40 | } 41 | 42 | void TextButton::paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown) 43 | { 44 | LookAndFeel& lf = getLookAndFeel(); 45 | 46 | lf.drawButtonBackground (g, *this, 47 | findColour (getToggleState() ? buttonOnColourId : buttonColourId), 48 | isMouseOverButton, isButtonDown); 49 | 50 | lf.drawButtonText (g, *this, isMouseOverButton, isButtonDown); 51 | } 52 | 53 | void TextButton::colourChanged() 54 | { 55 | repaint(); 56 | } 57 | 58 | void TextButton::changeWidthToFitText() 59 | { 60 | changeWidthToFitText (getHeight()); 61 | } 62 | 63 | void TextButton::changeWidthToFitText (const int newHeight) 64 | { 65 | setSize (getBestWidthForHeight (newHeight), newHeight); 66 | } 67 | 68 | int TextButton::getBestWidthForHeight (int buttonHeight) 69 | { 70 | return getLookAndFeel().getTextButtonWidthToFitText (*this, buttonHeight); 71 | } 72 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ToggleButton::ToggleButton() 26 | : Button (String::empty) 27 | { 28 | setClickingTogglesState (true); 29 | } 30 | 31 | ToggleButton::ToggleButton (const String& buttonText) 32 | : Button (buttonText) 33 | { 34 | setClickingTogglesState (true); 35 | } 36 | 37 | ToggleButton::~ToggleButton() 38 | { 39 | } 40 | 41 | void ToggleButton::paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown) 42 | { 43 | getLookAndFeel().drawToggleButton (g, *this, isMouseOverButton, isButtonDown); 44 | } 45 | 46 | void ToggleButton::changeWidthToFitText() 47 | { 48 | getLookAndFeel().changeToggleButtonWidthToFitText (*this); 49 | } 50 | 51 | void ToggleButton::colourChanged() 52 | { 53 | repaint(); 54 | } 55 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ApplicationCommandInfo::ApplicationCommandInfo (const CommandID cid) noexcept 26 | : commandID (cid), flags (0) 27 | { 28 | } 29 | 30 | void ApplicationCommandInfo::setInfo (const String& shortName_, 31 | const String& description_, 32 | const String& categoryName_, 33 | const int flags_) noexcept 34 | { 35 | shortName = shortName_; 36 | description = description_; 37 | categoryName = categoryName_; 38 | flags = flags_; 39 | } 40 | 41 | void ApplicationCommandInfo::setActive (const bool b) noexcept 42 | { 43 | if (b) 44 | flags &= ~isDisabled; 45 | else 46 | flags |= isDisabled; 47 | } 48 | 49 | void ApplicationCommandInfo::setTicked (const bool b) noexcept 50 | { 51 | if (b) 52 | flags |= isTicked; 53 | else 54 | flags &= ~isTicked; 55 | } 56 | 57 | void ApplicationCommandInfo::addDefaultKeypress (const int keyCode, ModifierKeys modifiers) noexcept 58 | { 59 | defaultKeypresses.add (KeyPress (keyCode, modifiers, 0)); 60 | } 61 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | void ComponentListener::componentMovedOrResized (Component&, bool, bool) {} 26 | void ComponentListener::componentBroughtToFront (Component&) {} 27 | void ComponentListener::componentVisibilityChanged (Component&) {} 28 | void ComponentListener::componentChildrenChanged (Component&) {} 29 | void ComponentListener::componentParentHierarchyChanged (Component&) {} 30 | void ComponentListener::componentNameChanged (Component&) {} 31 | void ComponentListener::componentBeingDeleted (Component&) {} 32 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_FILEBROWSERLISTENER_H_INCLUDED 26 | #define JUCE_FILEBROWSERLISTENER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A listener for user selection events in a file browser. 32 | 33 | This is used by a FileBrowserComponent or FileListComponent. 34 | */ 35 | class JUCE_API FileBrowserListener 36 | { 37 | public: 38 | //============================================================================== 39 | /** Destructor. */ 40 | virtual ~FileBrowserListener(); 41 | 42 | //============================================================================== 43 | /** Callback when the user selects a different file in the browser. */ 44 | virtual void selectionChanged() = 0; 45 | 46 | /** Callback when the user clicks on a file in the browser. */ 47 | virtual void fileClicked (const File& file, const MouseEvent& e) = 0; 48 | 49 | /** Callback when the user double-clicks on a file in the browser. */ 50 | virtual void fileDoubleClicked (const File& file) = 0; 51 | 52 | /** Callback when the browser's root folder changes. */ 53 | virtual void browserRootChanged (const File& newRoot) = 0; 54 | }; 55 | 56 | 57 | #endif // JUCE_FILEBROWSERLISTENER_H_INCLUDED 58 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_FILEPREVIEWCOMPONENT_H_INCLUDED 26 | #define JUCE_FILEPREVIEWCOMPONENT_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Base class for components that live inside a file chooser dialog box and 32 | show previews of the files that get selected. 33 | 34 | One of these allows special extra information to be displayed for files 35 | in a dialog box as the user selects them. Each time the current file or 36 | directory is changed, the selectedFileChanged() method will be called 37 | to allow it to update itself appropriately. 38 | 39 | @see FileChooser, ImagePreviewComponent 40 | */ 41 | class JUCE_API FilePreviewComponent : public Component 42 | { 43 | public: 44 | //============================================================================== 45 | /** Creates a FilePreviewComponent. */ 46 | FilePreviewComponent(); 47 | 48 | /** Destructor. */ 49 | ~FilePreviewComponent(); 50 | 51 | /** Called to indicate that the user's currently selected file has changed. 52 | 53 | @param newSelectedFile the newly selected file or directory, which may be 54 | File::nonexistent if none is selected. 55 | */ 56 | virtual void selectedFileChanged (const File& newSelectedFile) = 0; 57 | 58 | 59 | private: 60 | //============================================================================== 61 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FilePreviewComponent) 62 | }; 63 | 64 | 65 | #endif // JUCE_FILEPREVIEWCOMPONENT_H_INCLUDED 66 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_IMAGEPREVIEWCOMPONENT_H_INCLUDED 26 | #define JUCE_IMAGEPREVIEWCOMPONENT_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A simple preview component that shows thumbnails of image files. 32 | 33 | @see FileChooserDialogBox, FilePreviewComponent 34 | */ 35 | class JUCE_API ImagePreviewComponent : public FilePreviewComponent, 36 | private Timer 37 | { 38 | public: 39 | //============================================================================== 40 | /** Creates an ImagePreviewComponent. */ 41 | ImagePreviewComponent(); 42 | 43 | /** Destructor. */ 44 | ~ImagePreviewComponent(); 45 | 46 | 47 | //============================================================================== 48 | /** @internal */ 49 | void selectedFileChanged (const File& newSelectedFile) override; 50 | /** @internal */ 51 | void paint (Graphics&) override; 52 | /** @internal */ 53 | void timerCallback() override; 54 | 55 | private: 56 | File fileToLoad; 57 | Image currentThumbnail; 58 | String currentDetails; 59 | 60 | void getThumbSize (int& w, int& h) const; 61 | 62 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ImagePreviewComponent) 63 | }; 64 | 65 | 66 | #endif // JUCE_IMAGEPREVIEWCOMPONENT_H_INCLUDED 67 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_gui_basics.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_gui_basics", 3 | "name": "JUCE GUI core classes", 4 | "version": "4.1.0", 5 | "description": "Basic user-interface components and related classes.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_core", "version": "matching" }, 10 | { "id": "juce_events", "version": "matching" }, 11 | { "id": "juce_graphics", "version": "matching" }, 12 | { "id": "juce_data_structures", "version": "matching" } ], 13 | 14 | "include": "juce_gui_basics.h", 15 | 16 | "compile": [ { "file": "juce_gui_basics.cpp", "target": "! xcode" }, 17 | { "file": "juce_gui_basics.mm", "target": "xcode" } ], 18 | 19 | "browse": [ "components/*", 20 | "mouse/*", 21 | "keyboard/*", 22 | "widgets/*", 23 | "windows/*", 24 | "menus/*", 25 | "layout/*", 26 | "buttons/*", 27 | "positioning/*", 28 | "drawables/*", 29 | "properties/*", 30 | "lookandfeel/*", 31 | "filebrowser/*", 32 | "commands/*", 33 | "misc/*", 34 | "application/*", 35 | "native/*" ], 36 | 37 | "OSXFrameworks": "Cocoa Carbon QuartzCore", 38 | "iOSFrameworks": "UIKit", 39 | "LinuxLibs": "X11 Xinerama Xext" 40 | } 41 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | CaretComponent::CaretComponent (Component* const keyFocusOwner) 26 | : owner (keyFocusOwner) 27 | { 28 | setPaintingIsUnclipped (true); 29 | setInterceptsMouseClicks (false, false); 30 | } 31 | 32 | CaretComponent::~CaretComponent() 33 | { 34 | } 35 | 36 | void CaretComponent::paint (Graphics& g) 37 | { 38 | g.setColour (findColour (caretColourId, true)); 39 | g.fillRect (getLocalBounds()); 40 | } 41 | 42 | void CaretComponent::timerCallback() 43 | { 44 | setVisible (shouldBeShown() && ! isVisible()); 45 | } 46 | 47 | void CaretComponent::setCaretPosition (const Rectangle& characterArea) 48 | { 49 | startTimer (380); 50 | setVisible (shouldBeShown()); 51 | setBounds (characterArea.withWidth (2)); 52 | } 53 | 54 | bool CaretComponent::shouldBeShown() const 55 | { 56 | return owner == nullptr || (owner->hasKeyboardFocus (false) 57 | && ! owner->isCurrentlyBlockedByAnotherModalComponent()); 58 | } 59 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | bool KeyListener::keyStateChanged (const bool, Component*) 26 | { 27 | return false; 28 | } 29 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ModifierKeys::ModifierKeys() noexcept : flags (0) {} 26 | ModifierKeys::ModifierKeys (int rawFlags) noexcept : flags (rawFlags) {} 27 | ModifierKeys::ModifierKeys (const ModifierKeys& other) noexcept : flags (other.flags) {} 28 | 29 | ModifierKeys& ModifierKeys::operator= (const ModifierKeys other) noexcept 30 | { 31 | flags = other.flags; 32 | return *this; 33 | } 34 | 35 | ModifierKeys ModifierKeys::currentModifiers; 36 | 37 | ModifierKeys ModifierKeys::getCurrentModifiers() noexcept 38 | { 39 | return currentModifiers; 40 | } 41 | 42 | int ModifierKeys::getNumMouseButtonsDown() const noexcept 43 | { 44 | int num = 0; 45 | 46 | if (isLeftButtonDown()) ++num; 47 | if (isRightButtonDown()) ++num; 48 | if (isMiddleButtonDown()) ++num; 49 | 50 | return num; 51 | } 52 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_SYSTEMCLIPBOARD_H_INCLUDED 26 | #define JUCE_SYSTEMCLIPBOARD_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Handles reading/writing to the system's clipboard. 32 | */ 33 | class JUCE_API SystemClipboard 34 | { 35 | public: 36 | /** Copies a string of text onto the clipboard */ 37 | static void copyTextToClipboard (const String& text); 38 | 39 | /** Gets the current clipboard's contents. 40 | 41 | Obviously this might have come from another app, so could contain 42 | anything.. 43 | */ 44 | static String getTextFromClipboard(); 45 | }; 46 | 47 | #endif // JUCE_SYSTEMCLIPBOARD_H_INCLUDED 48 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | GroupComponent::GroupComponent (const String& name, 26 | const String& labelText) 27 | : Component (name), 28 | text (labelText), 29 | justification (Justification::left) 30 | { 31 | setInterceptsMouseClicks (false, true); 32 | } 33 | 34 | GroupComponent::~GroupComponent() {} 35 | 36 | void GroupComponent::setText (const String& newText) 37 | { 38 | if (text != newText) 39 | { 40 | text = newText; 41 | repaint(); 42 | } 43 | } 44 | 45 | String GroupComponent::getText() const 46 | { 47 | return text; 48 | } 49 | 50 | void GroupComponent::setTextLabelPosition (Justification newJustification) 51 | { 52 | if (justification != newJustification) 53 | { 54 | justification = newJustification; 55 | repaint(); 56 | } 57 | } 58 | 59 | void GroupComponent::paint (Graphics& g) 60 | { 61 | getLookAndFeel().drawGroupComponentOutline (g, getWidth(), getHeight(), 62 | text, justification, *this); 63 | } 64 | 65 | void GroupComponent::enablementChanged() { repaint(); } 66 | void GroupComponent::colourChanged() { repaint(); } 67 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | MouseInactivityDetector::MouseInactivityDetector (Component& c) 26 | : targetComp (c), delayMs (1500), toleranceDistance (15), isActive (true) 27 | { 28 | targetComp.addMouseListener (this, true); 29 | } 30 | 31 | MouseInactivityDetector::~MouseInactivityDetector() 32 | { 33 | targetComp.removeMouseListener (this); 34 | } 35 | 36 | void MouseInactivityDetector::setDelay (int newDelay) noexcept { delayMs = newDelay; } 37 | void MouseInactivityDetector::setMouseMoveTolerance (int newDistance) noexcept { toleranceDistance = newDistance; } 38 | 39 | void MouseInactivityDetector::addListener (Listener* l) { listenerList.add (l); } 40 | void MouseInactivityDetector::removeListener (Listener* l) { listenerList.remove (l); } 41 | 42 | void MouseInactivityDetector::timerCallback() 43 | { 44 | setActive (false); 45 | } 46 | 47 | void MouseInactivityDetector::wakeUp (const MouseEvent& e, bool alwaysWake) 48 | { 49 | const Point newPos (e.getEventRelativeTo (&targetComp).getPosition()); 50 | 51 | if ((! isActive) && (alwaysWake || e.source.isTouch() || newPos.getDistanceFrom (lastMousePos) > toleranceDistance)) 52 | setActive (true); 53 | 54 | if (lastMousePos != newPos) 55 | { 56 | lastMousePos = newPos; 57 | startTimer (delayMs); 58 | } 59 | } 60 | 61 | void MouseInactivityDetector::setActive (bool b) 62 | { 63 | if (isActive != b) 64 | { 65 | isActive = b; 66 | 67 | listenerList.call (b ? &Listener::mouseBecameActive 68 | : &Listener::mouseBecameInactive); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | void MouseListener::mouseEnter (const MouseEvent&) {} 26 | void MouseListener::mouseExit (const MouseEvent&) {} 27 | void MouseListener::mouseDown (const MouseEvent&) {} 28 | void MouseListener::mouseUp (const MouseEvent&) {} 29 | void MouseListener::mouseDrag (const MouseEvent&) {} 30 | void MouseListener::mouseMove (const MouseEvent&) {} 31 | void MouseListener::mouseDoubleClick (const MouseEvent&) {} 32 | void MouseListener::mouseWheelMove (const MouseEvent&, const MouseWheelDetails&) {} 33 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/native/juce_MultiTouchMapper.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_MULTITOUCHMAPPER_H_INCLUDED 26 | #define JUCE_MULTITOUCHMAPPER_H_INCLUDED 27 | 28 | template 29 | class MultiTouchMapper 30 | { 31 | public: 32 | MultiTouchMapper() {} 33 | 34 | int getIndexOfTouch (IDType touchID) 35 | { 36 | jassert (touchID != 0); // need to rethink this if IDs can be 0! 37 | 38 | int touchIndex = currentTouches.indexOf (touchID); 39 | 40 | if (touchIndex < 0) 41 | { 42 | for (touchIndex = 0; touchIndex < currentTouches.size(); ++touchIndex) 43 | if (currentTouches.getUnchecked (touchIndex) == 0) 44 | break; 45 | 46 | currentTouches.set (touchIndex, touchID); 47 | } 48 | 49 | return touchIndex; 50 | } 51 | 52 | void clear() 53 | { 54 | currentTouches.clear(); 55 | } 56 | 57 | void clearTouch (int index) 58 | { 59 | currentTouches.set (index, 0); 60 | } 61 | 62 | bool areAnyTouchesActive() const noexcept 63 | { 64 | for (int i = currentTouches.size(); --i >= 0;) 65 | if (currentTouches.getUnchecked(i) != 0) 66 | return true; 67 | 68 | return false; 69 | } 70 | 71 | private: 72 | Array currentTouches; 73 | 74 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MultiTouchMapper) 75 | }; 76 | 77 | #endif // JUCE_MULTITOUCHMAPPER_H_INCLUDED 78 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/native/juce_android_FileChooser.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | void FileChooser::showPlatformDialog (Array& results, 26 | const String& title, 27 | const File& currentFileOrDirectory, 28 | const String& filter, 29 | bool selectsDirectory, 30 | bool selectsFiles, 31 | bool isSaveDialogue, 32 | bool warnAboutOverwritingExistingFiles, 33 | bool selectMultipleFiles, 34 | FilePreviewComponent* extraInfoComponent) 35 | { 36 | // TODO 37 | 38 | 39 | } 40 | 41 | bool FileChooser::isPlatformDialogAvailable() 42 | { 43 | return false; 44 | } 45 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ButtonPropertyComponent::ButtonPropertyComponent (const String& name, 26 | const bool triggerOnMouseDown) 27 | : PropertyComponent (name) 28 | { 29 | addAndMakeVisible (button); 30 | button.setTriggeredOnMouseDown (triggerOnMouseDown); 31 | button.addListener (this); 32 | } 33 | 34 | ButtonPropertyComponent::~ButtonPropertyComponent() 35 | { 36 | } 37 | 38 | void ButtonPropertyComponent::refresh() 39 | { 40 | button.setButtonText (getButtonText()); 41 | } 42 | 43 | void ButtonPropertyComponent::buttonClicked (Button*) 44 | { 45 | buttonClicked(); 46 | } 47 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | PropertyComponent::PropertyComponent (const String& name, const int preferredHeight_) 26 | : Component (name), preferredHeight (preferredHeight_) 27 | { 28 | jassert (name.isNotEmpty()); 29 | } 30 | 31 | PropertyComponent::~PropertyComponent() {} 32 | 33 | void PropertyComponent::paint (Graphics& g) 34 | { 35 | LookAndFeel& lf = getLookAndFeel(); 36 | 37 | lf.drawPropertyComponentBackground (g, getWidth(), getHeight(), *this); 38 | lf.drawPropertyComponentLabel (g, getWidth(), getHeight(), *this); 39 | } 40 | 41 | void PropertyComponent::resized() 42 | { 43 | if (Component* const c = getChildComponent(0)) 44 | c->setBounds (getLookAndFeel().getPropertyComponentContentPosition (*this)); 45 | } 46 | 47 | void PropertyComponent::enablementChanged() 48 | { 49 | repaint(); 50 | } 51 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | ImageComponent::ImageComponent (const String& name) 26 | : Component (name), 27 | placement (RectanglePlacement::centred) 28 | { 29 | } 30 | 31 | ImageComponent::~ImageComponent() 32 | { 33 | } 34 | 35 | void ImageComponent::setImage (const Image& newImage) 36 | { 37 | if (image != newImage) 38 | { 39 | image = newImage; 40 | repaint(); 41 | } 42 | } 43 | 44 | void ImageComponent::setImage (const Image& newImage, RectanglePlacement placementToUse) 45 | { 46 | if (image != newImage || placement != placementToUse) 47 | { 48 | image = newImage; 49 | placement = placementToUse; 50 | repaint(); 51 | } 52 | } 53 | 54 | void ImageComponent::setImagePlacement (RectanglePlacement newPlacement) 55 | { 56 | if (placement != newPlacement) 57 | { 58 | placement = newPlacement; 59 | repaint(); 60 | } 61 | } 62 | 63 | const Image& ImageComponent::getImage() const 64 | { 65 | return image; 66 | } 67 | 68 | RectanglePlacement ImageComponent::getImagePlacement() const 69 | { 70 | return placement; 71 | } 72 | 73 | void ImageComponent::paint (Graphics& g) 74 | { 75 | g.setOpacity (1.0f); 76 | g.drawImageWithin (image, 0, 0, getWidth(), getHeight(), placement, false); 77 | } 78 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_CODETOKENISER_H_INCLUDED 26 | #define JUCE_CODETOKENISER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A base class for tokenising code so that the syntax can be displayed in a 32 | code editor. 33 | 34 | @see CodeDocument, CodeEditorComponent 35 | */ 36 | class JUCE_API CodeTokeniser 37 | { 38 | public: 39 | CodeTokeniser() {} 40 | virtual ~CodeTokeniser() {} 41 | 42 | //============================================================================== 43 | /** Reads the next token from the source and returns its token type. 44 | 45 | This must leave the source pointing to the first character in the 46 | next token. 47 | */ 48 | virtual int readNextToken (CodeDocument::Iterator& source) = 0; 49 | 50 | /** Returns a suggested syntax highlighting colour scheme. */ 51 | virtual CodeEditorComponent::ColourScheme getDefaultColourScheme() = 0; 52 | 53 | private: 54 | JUCE_LEAK_DETECTOR (CodeTokeniser) 55 | }; 56 | 57 | 58 | #endif // JUCE_CODETOKENISER_H_INCLUDED 59 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_LUACODETOKENISER_H_INCLUDED 26 | #define JUCE_LUACODETOKENISER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | */ 32 | class JUCE_API LuaTokeniser : public CodeTokeniser 33 | { 34 | public: 35 | //============================================================================== 36 | LuaTokeniser(); 37 | ~LuaTokeniser(); 38 | 39 | //============================================================================== 40 | int readNextToken (CodeDocument::Iterator&) override; 41 | CodeEditorComponent::ColourScheme getDefaultColourScheme() override; 42 | 43 | /** The token values returned by this tokeniser. */ 44 | enum TokenType 45 | { 46 | tokenType_error = 0, 47 | tokenType_comment, 48 | tokenType_keyword, 49 | tokenType_operator, 50 | tokenType_identifier, 51 | tokenType_integer, 52 | tokenType_float, 53 | tokenType_string, 54 | tokenType_bracket, 55 | tokenType_punctuation 56 | }; 57 | 58 | private: 59 | //============================================================================== 60 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LuaTokeniser) 61 | }; 62 | 63 | #endif // JUCE_LUACODETOKENISER_H_INCLUDED 64 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_XMLCODETOKENISER_H_INCLUDED 26 | #define JUCE_XMLCODETOKENISER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | */ 32 | class JUCE_API XmlTokeniser : public CodeTokeniser 33 | { 34 | public: 35 | //============================================================================== 36 | XmlTokeniser(); 37 | ~XmlTokeniser(); 38 | 39 | //============================================================================== 40 | int readNextToken (CodeDocument::Iterator&) override; 41 | CodeEditorComponent::ColourScheme getDefaultColourScheme() override; 42 | 43 | /** The token values returned by this tokeniser. */ 44 | enum TokenType 45 | { 46 | tokenType_error = 0, 47 | tokenType_comment, 48 | tokenType_keyword, 49 | tokenType_operator, 50 | tokenType_identifier, 51 | tokenType_string, 52 | tokenType_bracket, 53 | tokenType_punctuation, 54 | tokenType_preprocessor 55 | }; 56 | 57 | private: 58 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (XmlTokeniser) 59 | }; 60 | 61 | 62 | #endif // JUCE_XMLCODETOKENISER_H_INCLUDED 63 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #include "juce_gui_extra.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_gui_extra", 3 | "name": "JUCE extended GUI classes", 4 | "version": "4.1.0", 5 | "description": "Miscellaneous GUI classes for specialised tasks.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_gui_basics", "version": "matching" } ], 10 | 11 | "include": "juce_gui_extra.h", 12 | 13 | "compile": [ { "file": "juce_gui_extra.cpp", "target": "! xcode" }, 14 | { "file": "juce_gui_extra.mm", "target": "xcode" } ], 15 | 16 | "browse": [ "code_editor/*", 17 | "documents/*", 18 | "embedding/*", 19 | "lookandfeel/*", 20 | "misc/*", 21 | "native/*" ], 22 | 23 | "OSXFrameworks": "WebKit" 24 | } 25 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | AnimatedAppComponent::AnimatedAppComponent() 26 | : lastUpdateTime (Time::getCurrentTime()), totalUpdates (0) 27 | { 28 | setOpaque (true); 29 | } 30 | 31 | void AnimatedAppComponent::setFramesPerSecond (int framesPerSecond) 32 | { 33 | jassert (framesPerSecond > 0 && framesPerSecond < 1000); 34 | startTimerHz (framesPerSecond); 35 | } 36 | 37 | int AnimatedAppComponent::getMillisecondsSinceLastUpdate() const noexcept 38 | { 39 | return (int) (Time::getCurrentTime() - lastUpdateTime).inMilliseconds(); 40 | } 41 | 42 | void AnimatedAppComponent::timerCallback() 43 | { 44 | ++totalUpdates; 45 | update(); 46 | repaint(); 47 | lastUpdateTime = Time::getCurrentTime(); 48 | } 49 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2015 - ROLI Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #if JUCE_WINDOWS || JUCE_LINUX || JUCE_MAC 26 | 27 | SystemTrayIconComponent::SystemTrayIconComponent() 28 | { 29 | addToDesktop (0); 30 | } 31 | 32 | SystemTrayIconComponent::~SystemTrayIconComponent() 33 | { 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_osc/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_osc", 3 | "name": "JUCE OSC classes", 4 | "version": "4.1.0", 5 | "description": "Open Sound Control implementation", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_core", "version": "matching" } ], 10 | 11 | "include": "juce_osc.h", 12 | 13 | "compile": [ { "file": "juce_osc.cpp" } ], 14 | 15 | "browse": [ "osc/*" ] 16 | } 17 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_osc/juce_osc.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #if defined (JUCE_OSC_H_INCLUDED) && ! JUCE_AMALGAMATED_INCLUDE 26 | /* When you add this cpp file to your project, you mustn't include it in a file where you've 27 | already included any other headers - just put it inside a file on its own, possibly with your config 28 | flags preceding it, but don't include anything else. That also includes avoiding any automatic prefix 29 | header files that the compiler may be using. 30 | */ 31 | #error "Incorrect use of JUCE cpp file" 32 | #endif 33 | 34 | // Your project must contain an AppConfig.h file with your project-specific settings in it, 35 | // and your header search path must make it accessible to the module's files. 36 | #include "AppConfig.h" 37 | 38 | #include "juce_osc.h" 39 | 40 | 41 | namespace juce 42 | { 43 | #include "osc/juce_OSCTypes.cpp" 44 | #include "osc/juce_OSCTimeTag.cpp" 45 | #include "osc/juce_OSCArgument.cpp" 46 | #include "osc/juce_OSCAddress.cpp" 47 | #include "osc/juce_OSCMessage.cpp" 48 | #include "osc/juce_OSCBundle.cpp" 49 | #include "osc/juce_OSCReceiver.cpp" 50 | #include "osc/juce_OSCSender.cpp" 51 | } 52 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_osc/juce_osc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | #ifndef JUCE_OSC_H_INCLUDED 26 | #define JUCE_OSC_H_INCLUDED 27 | 28 | #include "../juce_core/juce_core.h" 29 | #include "../juce_events/juce_events.h" 30 | 31 | 32 | //============================================================================= 33 | namespace juce 34 | { 35 | 36 | #include "osc/juce_OSCTypes.h" 37 | #include "osc/juce_OSCTimeTag.h" 38 | #include "osc/juce_OSCArgument.h" 39 | #include "osc/juce_OSCAddress.h" 40 | #include "osc/juce_OSCMessage.h" 41 | #include "osc/juce_OSCBundle.h" 42 | #include "osc/juce_OSCReceiver.h" 43 | #include "osc/juce_OSCSender.h" 44 | 45 | } 46 | 47 | #endif // JUCE_OSC_H_INCLUDED 48 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_osc/osc/juce_OSCTypes.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software Ltd. 6 | 7 | Permission is granted to use this software under the terms of either: 8 | a) the GPL v2 (or any later version) 9 | b) the Affero GPL v3 10 | 11 | Details of these licenses can be found at: www.gnu.org/licenses 12 | 13 | JUCE is distributed in the hope that it will be useful, but WITHOUT ANY 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 | A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 | 17 | ------------------------------------------------------------------------------ 18 | 19 | To release a closed-source product which uses JUCE, commercial licenses are 20 | available: visit www.juce.com for more information. 21 | 22 | ============================================================================== 23 | */ 24 | 25 | const OSCType OSCTypes::int32 = 'i'; 26 | const OSCType OSCTypes::float32 = 'f'; 27 | const OSCType OSCTypes::string = 's'; 28 | const OSCType OSCTypes::blob = 'b'; 29 | -------------------------------------------------------------------------------- /Matlab/buildCoefs.m: -------------------------------------------------------------------------------- 1 | 2 | firorder = 127; % must be odd 3 | maxdistance = 1000; 4 | distanceMultipler = 2; 5 | 6 | samplerates = [ 32000, 44100, 48000, 88200, 96000, 176400, 192000 ]; 7 | %samplerates = [ 44100 ]; 8 | distances = linspace(0, maxdistance, maxdistance+1); 9 | 10 | fileID = fopen('_firs.h','w'); 11 | 12 | fprintf(fileID,'const int kFirSize = %d;\n', firorder); 13 | fprintf(fileID,'const int kMaxOffset = %d;\n', maxdistance); 14 | fprintf(fileID,'const int kDistanceMultipler = %d;\n', distanceMultipler); 15 | fprintf(fileID,'const int kSampleRates[%d] = { ', length(samplerates)); 16 | fprintf(fileID,'%d, ', samplerates); 17 | fprintf(fileID,'};\n'); 18 | 19 | fprintf(fileID,'const float kFirs[%d][%d][%d] = {', length(samplerates), length(distances), firorder); 20 | 21 | for sr = samplerates 22 | fprintf(fileID,'{'); 23 | 24 | start_a = []; 25 | for distance = distances 26 | f = linspace(0, 1, 100); 27 | m = []; 28 | for nf = f 29 | fhz = nf * sr/2; 30 | lfhz = log(fhz); 31 | ldb = 1.2584*lfhz - 9.5422; 32 | db = -((distance * distanceMultipler)/100 * exp(ldb)); 33 | if (db >= 0) 34 | m = [m 1]; 35 | elseif (db <= -120) 36 | m = [m 0]; 37 | else 38 | m = [m db2mag(db)]; 39 | end 40 | end 41 | 42 | m2 = m(1:end-1); 43 | up = m2 + 0.00001; 44 | lo = m2 - 0.00001; 45 | [b, start_a, it] = fircls(firorder-1,f,m2,up,lo, 'none', start_a); 46 | if (distance == 0) 47 | start_a = []; 48 | end 49 | 50 | if any(isnan(b)) 51 | fprintf('got NaN sr: %d distance: %d it: %d\n', sr, distance, it); 52 | return; 53 | end 54 | 55 | fprintf('done sr: %d distance: %d it: %d\n', sr, distance, it); 56 | 57 | fprintf(fileID,'{'); 58 | fprintf(fileID,'%12.12g,', b); 59 | fprintf(fileID,'}\n,'); 60 | end 61 | fprintf(fileID,'},'); 62 | end 63 | 64 | fprintf(fileID,'};\n'); 65 | fclose(fileID); 66 | 67 | -------------------------------------------------------------------------------- /Matlab/note.txt: -------------------------------------------------------------------------------- 1 | Backup and replace: 2 | /Applications/MATLAB_R2010b.app/toolbox/signal/signal/fircls.m 3 | with the one provided here. 4 | 5 | - Added a limit on the number of iterations (it would go in an infinite loop if unable to meet the constraints) 6 | - Changed to return the best filter found instead of the last one 7 | - Added possibility of providing a starting point 8 | - Changed error calculation a bit 9 | 10 | -------------------------------------------------------------------------------- /Matlab/varifilter.m: -------------------------------------------------------------------------------- 1 | 2 | type = 0; % filter type (0 = fir, 1 = iir) 3 | 4 | firorder = 127; % filter order 5 | iirorder = 8; 6 | sr = 96000; % sampling rate 7 | distance = 981; % in meters 8 | 9 | 10 | f = linspace(0, 1, 100); 11 | m = []; 12 | start_a = []; 13 | 14 | for nf = f 15 | fhz = nf * sr/2; 16 | lfhz = log(fhz); 17 | ldb = 1.2584*lfhz - 9.5422; 18 | db = -(distance/100 * exp(ldb)); 19 | if (db >= 0) 20 | m = [m 1]; 21 | elseif (db <= -120) 22 | m = [m 0]; 23 | else 24 | m = [m db2mag(db)]; 25 | end 26 | 27 | end 28 | 29 | if (type == 0) 30 | % http://www.mathworks.com/help/signal/ref/fircls.html 31 | m2 = m(1:end-1); 32 | up = m2 + 0.00001; 33 | lo = m2 - 0.00001; 34 | [b, start_a] = fircls(firorder-1,f,m2,up,lo,'trace', start_a); 35 | 36 | % http://www.mathworks.com/help/signal/ref/firls.html 37 | %b = firls(firorder,f,m); 38 | 39 | % http://www.mathworks.com/help/signal/ref/firpm.html 40 | %b = firpm(firorder,f,m); 41 | 42 | a = 1; 43 | stype = 'FIR'; 44 | else 45 | 46 | % http://www.mathworks.com/help/signal/ref/yulewalk.html 47 | [b,a] = yulewalk(iirorder,f,m); 48 | stype = 'Yule-Walker'; 49 | end 50 | 51 | [h,w] = freqz(b,a,128); 52 | %figure; 53 | plot(w/pi,mag2db(abs(h)),f,mag2db(m),'--') 54 | xlabel 'Radian frequency (\omega/\pi)', ylabel Magnitude 55 | legend(stype,'Ideal'), legend boxoff 56 | fvtool(b, a); 57 | %length(b) 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #Octogris2 2 | 3 | Octogris2 is a multichannel sound spatialization plug-in (up to 8 sources / 16 speakers) available in Audio Unit and VST formats. The free and open-source plug-in allows movement of multichannel sound sources on a variable set of speakers. Modes of grouped movement and a trajectory system are provided for spatialization of stereo and multichannel sources. 4 | 5 | You can find the manual at this address: 6 | https://sourceforge.net/projects/octogris/files/Manuals/ 7 | 8 | ======== 9 | 10 | Copyright (C) 2014 GRIS-UdeM, octogris@gmail.com 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | 25 | -------------------------------------------------------------------------------- /Source/FieldComponent.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | FieldComponent.h 8 | Created: 15 Jan 2014 10:59:44am 9 | 10 | Developers: Antoine Missout, Vincent Berthiaume 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | ============================================================================== 25 | */ 26 | 27 | #ifndef FIELDCOMPONENT_H_INCLUDED 28 | #define FIELDCOMPONENT_H_INCLUDED 29 | 30 | #include "PluginProcessor.h" 31 | #include "SourceMover.h" 32 | #include "deque" 33 | 34 | typedef enum 35 | { 36 | kNoSelection, 37 | kSelectedSource, 38 | kSelectedSpeaker 39 | } SelectionType; 40 | 41 | class FieldComponent : public Component 42 | { 43 | public: 44 | FieldComponent(OctogrisAudioProcessor* filter, SourceMover *mover); 45 | ~FieldComponent(); 46 | 47 | void paint (Graphics&); 48 | 49 | void mouseDown (const MouseEvent &event); 50 | void mouseDrag (const MouseEvent &event); 51 | void mouseUp (const MouseEvent &event); 52 | 53 | FPoint getSourcePoint(int i); 54 | FPoint getSpeakerPoint(int i); 55 | float getDistance(int source, int speaker); 56 | 57 | void clearTrajectoryPath(); 58 | void updatePositionTrace(float p_fX, float p_fY); 59 | private: 60 | OctogrisAudioProcessor *mFilter; 61 | SourceMover *mMover; 62 | 63 | SelectionType mSelectionType; 64 | int mSelectedItem; 65 | 66 | ModifierKeys mLastKeys; 67 | float mSavedValue; 68 | 69 | FPoint convertSourceRT(float r, float t); 70 | int m_iCurPathLines; 71 | int m_iMaxPathLines; 72 | std::deque m_dqAllPathPoints; 73 | 74 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FieldComponent) 75 | }; 76 | 77 | 78 | #endif // FIELDCOMPONENT_H_INCLUDED 79 | -------------------------------------------------------------------------------- /Source/FirFilter.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | FirFilter.cpp 8 | Created: 2 Aug 2014 10:24:24am 9 | 10 | Developers: Antoine Missout, Vincent Berthiaume 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | ============================================================================== 25 | */ 26 | 27 | #include 28 | 29 | #include "FirFilter.h" 30 | 31 | #include "../JuceLibraryCode/JuceHeader.h" 32 | #if JUCE_MSVC 33 | #pragma warning (disable: 4305) // (truncation warning) 34 | #endif 35 | 36 | #include "_firs.h" 37 | 38 | void FirFilter::reset() 39 | { 40 | mPos = kFirSize - 1; 41 | memset(mBuf, 0, sizeof(mBuf)); 42 | } 43 | 44 | void FirFilter::setSampleRate(int sr) 45 | { 46 | for (int i = 0; i < sizeof(kSampleRates)/sizeof(kSampleRates[0]); i++) 47 | { 48 | if (kSampleRates[i] == sr) 49 | { 50 | mFir = i; 51 | return; 52 | } 53 | } 54 | 55 | if (sr) fprintf(stderr, "Octogris: unsupported sample rate %d for filtering...\n", sr); 56 | mFir = -1; 57 | } 58 | 59 | float FirFilter::process(float sample, int distance) 60 | { 61 | if (mPos == kBufferSize) 62 | { 63 | memcpy(mBuf, mBuf + kBufferSize - (kFirSize - 1), (kFirSize - 1) * sizeof(float)); 64 | mPos = kFirSize - 1; 65 | } 66 | mBuf[mPos++] = sample; 67 | 68 | if (distance < 0 || mFir < 0) 69 | return sample; 70 | 71 | distance /= kDistanceMultipler; 72 | 73 | if (distance > kMaxOffset) 74 | distance = kMaxOffset; 75 | 76 | // apply fir 77 | const float *b = mBuf + mPos - kFirSize; 78 | const float *fir = kFirs[mFir][distance]; 79 | 80 | float sum = 0; 81 | for (int i = 0; i < kFirSize; i++) 82 | sum += fir[i] * *b++; 83 | return sum; 84 | } 85 | 86 | -------------------------------------------------------------------------------- /Source/FirFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | FirFilter.h 8 | Created: 2 Aug 2014 10:24:24am 9 | 10 | Developers: Antoine Missout, Vincent Berthiaume 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | ============================================================================== 25 | */ 26 | 27 | 28 | #ifndef FIRFILTER_H_INCLUDED 29 | #define FIRFILTER_H_INCLUDED 30 | 31 | #include 32 | 33 | #define kBufferSize (256) 34 | 35 | class FirFilter 36 | { 37 | public: 38 | FirFilter():mFir(0), mPos(0) { reset(); setSampleRate(0); } 39 | 40 | void reset(); 41 | void setSampleRate(int sr); 42 | float process(float sample, int distance); 43 | 44 | private: 45 | int mFir; 46 | int mPos; 47 | float mBuf[kBufferSize]; 48 | }; 49 | 50 | 51 | 52 | #endif // FIRFILTER_H_INCLUDED 53 | -------------------------------------------------------------------------------- /Source/LevelComponent.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | LevelComponent.h 8 | Created: 23 Jan 2014 8:09:25am 9 | 10 | Developers: Antoine Missout, Vincent Berthiaume 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | ============================================================================== 25 | */ 26 | 27 | #ifndef LEVELCOMPONENT_H_INCLUDED 28 | #define LEVELCOMPONENT_H_INCLUDED 29 | 30 | #include "../JuceLibraryCode/JuceHeader.h" 31 | #include "PluginProcessor.h" 32 | 33 | //============================================================================== 34 | /* 35 | */ 36 | class LevelComponent : public Component 37 | { 38 | public: 39 | LevelComponent(OctogrisAudioProcessor* filter, int index); 40 | ~LevelComponent(); 41 | 42 | void paint (Graphics&); 43 | void refreshIfNeeded(); 44 | 45 | private: 46 | OctogrisAudioProcessor *mFilter; 47 | int mIndex; 48 | float mLevelAdjustment; 49 | float mShowLevel; 50 | uint64_t mLastProcessCounter; 51 | 52 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LevelComponent) 53 | }; 54 | 55 | 56 | #endif // LEVELCOMPONENT_H_INCLUDED 57 | -------------------------------------------------------------------------------- /Source/OscComponent.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | OscComponent.h 8 | Created: 8 Aug 2014 9:27:08am 9 | 10 | Developers: Antoine Missout, Vincent Berthiaume 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | ============================================================================== 25 | */ 26 | 27 | #ifndef OSCCOMPONENT_H_INCLUDED 28 | #define OSCCOMPONENT_H_INCLUDED 29 | 30 | #include "PluginEditor.h" 31 | 32 | class OscComponent; 33 | 34 | HeartbeatComponent * CreateOscComponent(OctogrisAudioProcessor *filter, OctogrisAudioProcessorEditor *editor); 35 | void updateOscComponent(HeartbeatComponent* oscComponent); 36 | 37 | #endif // OSCCOMPONENT_H_INCLUDED 38 | -------------------------------------------------------------------------------- /Source/Routing.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | PluginEditor.h 8 | 9 | Developers: Antoine Missout, Vincent Berthiaume 10 | 11 | This program is free software: you can redistribute it and/or modify 12 | it under the terms of the GNU General Public License as published by 13 | the Free Software Foundation, either version 3 of the License, or 14 | (at your option) any later version. 15 | 16 | This program is distributed in the hope that it will be useful, 17 | but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | GNU General Public License for more details. 20 | 21 | You should have received a copy of the GNU General Public License 22 | along with this program. If not, see . 23 | ============================================================================== 24 | */ 25 | 26 | #include "Routing.h" 27 | 28 | Router & Router::instance() 29 | { 30 | static Router r; 31 | return r; 32 | } 33 | 34 | Router::Router() 35 | : 36 | mOutputs(kChannels, kMaxSize) 37 | { 38 | 39 | } 40 | 41 | Router::~Router() 42 | { 43 | 44 | } 45 | 46 | void Router::accumulate(int channels, int frames, const AudioSampleBuffer &buffer) 47 | { 48 | SpinLock::ScopedLockType guard(mLock); 49 | for (int c = 0; c < channels; c++) 50 | mOutputs.addFrom(c, 0, buffer, c, 0, frames); 51 | } 52 | 53 | float ** Router::outputBuffers(int frames) 54 | { 55 | if (frames > kMaxSize) 56 | { 57 | printf("unexpected frames size: %d\n", frames); 58 | jassertfalse; 59 | return NULL; 60 | } 61 | 62 | return mOutputs.getArrayOfWritePointers(); 63 | } 64 | 65 | -------------------------------------------------------------------------------- /Source/Routing.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | PluginEditor.h 8 | 9 | Developers: Antoine Missout, Vincent Berthiaume 10 | 11 | This program is free software: you can redistribute it and/or modify 12 | it under the terms of the GNU General Public License as published by 13 | the Free Software Foundation, either version 3 of the License, or 14 | (at your option) any later version. 15 | 16 | This program is distributed in the hope that it will be useful, 17 | but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | GNU General Public License for more details. 20 | 21 | You should have received a copy of the GNU General Public License 22 | along with this program. If not, see . 23 | ============================================================================== 24 | */ 25 | 26 | #ifndef ROUTING_H_INCLUDED 27 | #define ROUTING_H_INCLUDED 28 | 29 | #include "../JuceLibraryCode/JuceHeader.h" 30 | 31 | #define kChannels (16) 32 | #define kMaxSize (1024) 33 | 34 | class Router 35 | { 36 | private: 37 | Router(); 38 | ~Router(); 39 | 40 | AudioSampleBuffer mOutputs; 41 | SpinLock mLock; 42 | 43 | public: 44 | static Router & instance(); 45 | 46 | void accumulate(int channels, int frames, const AudioSampleBuffer &buffer); 47 | void reset() { mOutputs.clear(); } 48 | void clear(int channel) { mOutputs.clear(channel, 0, mOutputs.getNumSamples()); } 49 | 50 | float ** outputBuffers(int frames); 51 | }; 52 | 53 | #endif // ROUTING_H_INCLUDED 54 | -------------------------------------------------------------------------------- /Source/SourceMover.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | Octogris2: multichannel sound spatialization plug-in. 4 | 5 | Copyright (C) 2015 GRIS-UdeM 6 | 7 | SourceMover.h 8 | Created: 8 Aug 2014 1:04:53pm 9 | 10 | Developers: Antoine Missout, Vincent Berthiaume 11 | 12 | This program is free software: you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation, either version 3 of the License, or 15 | (at your option) any later version. 16 | 17 | This program is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | GNU General Public License for more details. 21 | 22 | You should have received a copy of the GNU General Public License 23 | along with this program. If not, see . 24 | ============================================================================== 25 | */ 26 | 27 | 28 | #ifndef SOURCEMOVER_H_INCLUDED 29 | #define SOURCEMOVER_H_INCLUDED 30 | 31 | #include "PluginProcessor.h" 32 | 33 | class FieldComponent; 34 | 35 | typedef enum 36 | { 37 | kVacant, 38 | kField, 39 | kOsc, 40 | kLeap, 41 | kHID, 42 | kSourceThread, 43 | kTrajectory 44 | } MoverType; 45 | 46 | class SourceMover 47 | { 48 | public: 49 | SourceMover(OctogrisAudioProcessor *filter); 50 | void updateNumberOfSources(); 51 | 52 | void begin(int s, MoverType mt); 53 | void sortAngles(); 54 | void setEqualRadius(); 55 | void setEqualAngles(); 56 | void setEqualRadiusAndAngles(); 57 | void setSymmetricX(); 58 | void setSymmetricY(); 59 | void move(FPoint p, MoverType mt); 60 | void end(MoverType mt); 61 | 62 | void setFieldComponent(FieldComponent* field){ 63 | mField = field; 64 | } 65 | 66 | private: 67 | OctogrisAudioProcessor *mFilter; 68 | MoverType mMoverType; 69 | int mSelectedSrc; 70 | 71 | Array mSourcesDownXY; 72 | Array mSourcesDownRT; 73 | Array mSourcesAngularOrder; 74 | FieldComponent* mField; 75 | }; 76 | 77 | 78 | 79 | 80 | #endif // SOURCEMOVER_H_INCLUDED 81 | -------------------------------------------------------------------------------- /TouchOSC/Octogris.touchosc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/TouchOSC/Octogris.touchosc -------------------------------------------------------------------------------- /copyPlugins.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | VERSION="$1" 4 | 5 | pushd ~/Library/Audio/Plug-Ins/Components/ 6 | zip -r ~/Desktop/Octogris$VERSION.zip ./Octogris3.component 7 | popd 8 | 9 | pushd ~/Library/Audio/Plug-Ins/VST/ 10 | zip -r ~/Desktop/Octogris$VERSION.zip ./Octogris3.vst 11 | popd 12 | 13 | #zip -rj ~/Desktop/ZirkOSC.zip ~/Library/Audio/Plug-Ins/Components/ZirkOSC3.component ~/Library/Audio/Plug-Ins/VST/ZirkOSC3.vst 14 | 15 | echo "Created zip file Octogris$VERSION.zip" 16 | -------------------------------------------------------------------------------- /logoGris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/logoGris.png -------------------------------------------------------------------------------- /timings.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GRIS-UdeM/Octogris/209be7d7c4aea538382fc7a859141d369629d1c8/timings.xlsx --------------------------------------------------------------------------------