├── .gitignore ├── Builds ├── Linux │ └── Makefile └── VisualStudio2012 │ ├── opengl_spectrogram.sln │ ├── opengl_spectrogram.vcxproj │ ├── opengl_spectrogram.vcxproj.filters │ └── resources.rc ├── JuceLibraryCode ├── AppConfig.h ├── JuceHeader.h ├── ReadMe.txt └── modules │ ├── juce_audio_basics │ ├── buffers │ │ ├── juce_AudioDataConverters.cpp │ │ ├── juce_AudioDataConverters.h │ │ ├── juce_AudioSampleBuffer.cpp │ │ ├── juce_AudioSampleBuffer.h │ │ ├── juce_FloatVectorOperations.cpp │ │ └── juce_FloatVectorOperations.h │ ├── effects │ │ ├── juce_Decibels.h │ │ ├── juce_IIRFilter.cpp │ │ ├── juce_IIRFilter.h │ │ ├── juce_LagrangeInterpolator.cpp │ │ ├── juce_LagrangeInterpolator.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 │ ├── 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_devices │ ├── audio_cd │ │ ├── juce_AudioCDBurner.h │ │ ├── juce_AudioCDReader.cpp │ │ └── juce_AudioCDReader.h │ ├── audio_io │ │ ├── juce_AudioDeviceManager.cpp │ │ ├── juce_AudioDeviceManager.h │ │ ├── juce_AudioIODevice.cpp │ │ ├── juce_AudioIODevice.h │ │ ├── juce_AudioIODeviceType.cpp │ │ ├── juce_AudioIODeviceType.h │ │ └── juce_SystemAudioVolume.h │ ├── juce_audio_devices.cpp │ ├── juce_audio_devices.h │ ├── juce_audio_devices.mm │ ├── juce_module_info │ ├── midi_io │ │ ├── juce_MidiInput.h │ │ ├── juce_MidiMessageCollector.cpp │ │ ├── juce_MidiMessageCollector.h │ │ ├── juce_MidiOutput.cpp │ │ └── juce_MidiOutput.h │ ├── native │ │ ├── juce_MidiDataConcatenator.h │ │ ├── juce_android_Audio.cpp │ │ ├── juce_android_Midi.cpp │ │ ├── juce_android_OpenSL.cpp │ │ ├── juce_ios_Audio.cpp │ │ ├── juce_linux_ALSA.cpp │ │ ├── juce_linux_AudioCDReader.cpp │ │ ├── juce_linux_JackAudio.cpp │ │ ├── juce_linux_Midi.cpp │ │ ├── juce_mac_AudioCDBurner.mm │ │ ├── juce_mac_AudioCDReader.mm │ │ ├── juce_mac_CoreAudio.cpp │ │ ├── juce_mac_CoreMidi.cpp │ │ ├── juce_win32_ASIO.cpp │ │ ├── juce_win32_AudioCDBurner.cpp │ │ ├── juce_win32_AudioCDReader.cpp │ │ ├── juce_win32_DirectSound.cpp │ │ ├── juce_win32_Midi.cpp │ │ └── juce_win32_WASAPI.cpp │ └── sources │ │ ├── juce_AudioSourcePlayer.cpp │ │ ├── juce_AudioSourcePlayer.h │ │ ├── juce_AudioTransportSource.cpp │ │ └── juce_AudioTransportSource.h │ ├── juce_audio_formats │ ├── codecs │ │ ├── flac │ │ │ ├── Flac Licence.txt │ │ │ ├── all.h │ │ │ ├── alloc.h │ │ │ ├── assert.h │ │ │ ├── callback.h │ │ │ ├── export.h │ │ │ ├── format.h │ │ │ ├── libFLAC │ │ │ │ ├── bitmath.c │ │ │ │ ├── bitreader.c │ │ │ │ ├── bitwriter.c │ │ │ │ ├── cpu.c │ │ │ │ ├── crc.c │ │ │ │ ├── fixed.c │ │ │ │ ├── float.c │ │ │ │ ├── format.c │ │ │ │ ├── include │ │ │ │ │ ├── private │ │ │ │ │ │ ├── all.h │ │ │ │ │ │ ├── bitmath.h │ │ │ │ │ │ ├── bitreader.h │ │ │ │ │ │ ├── bitwriter.h │ │ │ │ │ │ ├── cpu.h │ │ │ │ │ │ ├── crc.h │ │ │ │ │ │ ├── fixed.h │ │ │ │ │ │ ├── float.h │ │ │ │ │ │ ├── format.h │ │ │ │ │ │ ├── lpc.h │ │ │ │ │ │ ├── md5.h │ │ │ │ │ │ ├── memory.h │ │ │ │ │ │ ├── metadata.h │ │ │ │ │ │ ├── stream_encoder_framing.h │ │ │ │ │ │ └── window.h │ │ │ │ │ └── protected │ │ │ │ │ │ ├── all.h │ │ │ │ │ │ ├── stream_decoder.h │ │ │ │ │ │ └── stream_encoder.h │ │ │ │ ├── lpc_flac.c │ │ │ │ ├── md5.c │ │ │ │ ├── memory.c │ │ │ │ ├── stream_decoder.c │ │ │ │ ├── stream_encoder.c │ │ │ │ ├── stream_encoder_framing.c │ │ │ │ └── window_flac.c │ │ │ ├── metadata.h │ │ │ ├── ordinals.h │ │ │ ├── stream_decoder.h │ │ │ └── stream_encoder.h │ │ ├── juce_AiffAudioFormat.cpp │ │ ├── juce_AiffAudioFormat.h │ │ ├── juce_CoreAudioFormat.cpp │ │ ├── juce_CoreAudioFormat.h │ │ ├── juce_FlacAudioFormat.cpp │ │ ├── juce_FlacAudioFormat.h │ │ ├── juce_LAMEEncoderAudioFormat.cpp │ │ ├── juce_LAMEEncoderAudioFormat.h │ │ ├── juce_MP3AudioFormat.cpp │ │ ├── juce_MP3AudioFormat.h │ │ ├── juce_OggVorbisAudioFormat.cpp │ │ ├── juce_OggVorbisAudioFormat.h │ │ ├── juce_QuickTimeAudioFormat.cpp │ │ ├── juce_QuickTimeAudioFormat.h │ │ ├── juce_WavAudioFormat.cpp │ │ ├── juce_WavAudioFormat.h │ │ ├── juce_WindowsMediaAudioFormat.cpp │ │ ├── juce_WindowsMediaAudioFormat.h │ │ └── oggvorbis │ │ │ ├── Ogg Vorbis Licence.txt │ │ │ ├── bitwise.c │ │ │ ├── codec.h │ │ │ ├── config_types.h │ │ │ ├── framing.c │ │ │ ├── libvorbis-1.3.2 │ │ │ ├── AUTHORS │ │ │ ├── CHANGES │ │ │ ├── COPYING │ │ │ ├── README │ │ │ └── lib │ │ │ │ ├── analysis.c │ │ │ │ ├── backends.h │ │ │ │ ├── bitrate.c │ │ │ │ ├── bitrate.h │ │ │ │ ├── block.c │ │ │ │ ├── books │ │ │ │ ├── coupled │ │ │ │ │ ├── res_books_51.h │ │ │ │ │ └── res_books_stereo.h │ │ │ │ ├── floor │ │ │ │ │ └── floor_books.h │ │ │ │ └── uncoupled │ │ │ │ │ └── res_books_uncoupled.h │ │ │ │ ├── codebook.c │ │ │ │ ├── codebook.h │ │ │ │ ├── codec_internal.h │ │ │ │ ├── envelope.c │ │ │ │ ├── envelope.h │ │ │ │ ├── floor0.c │ │ │ │ ├── floor1.c │ │ │ │ ├── highlevel.h │ │ │ │ ├── info.c │ │ │ │ ├── lookup.c │ │ │ │ ├── lookup.h │ │ │ │ ├── lookup_data.h │ │ │ │ ├── lpc.c │ │ │ │ ├── lpc.h │ │ │ │ ├── lsp.c │ │ │ │ ├── lsp.h │ │ │ │ ├── mapping0.c │ │ │ │ ├── masking.h │ │ │ │ ├── mdct.c │ │ │ │ ├── mdct.h │ │ │ │ ├── misc.h │ │ │ │ ├── modes │ │ │ │ ├── floor_all.h │ │ │ │ ├── psych_11.h │ │ │ │ ├── psych_16.h │ │ │ │ ├── psych_44.h │ │ │ │ ├── psych_8.h │ │ │ │ ├── residue_16.h │ │ │ │ ├── residue_44.h │ │ │ │ ├── residue_44p51.h │ │ │ │ ├── residue_44u.h │ │ │ │ ├── residue_8.h │ │ │ │ ├── setup_11.h │ │ │ │ ├── setup_16.h │ │ │ │ ├── setup_22.h │ │ │ │ ├── setup_32.h │ │ │ │ ├── setup_44.h │ │ │ │ ├── setup_44p51.h │ │ │ │ ├── setup_44u.h │ │ │ │ ├── setup_8.h │ │ │ │ └── setup_X.h │ │ │ │ ├── os.h │ │ │ │ ├── psy.c │ │ │ │ ├── psy.h │ │ │ │ ├── registry.c │ │ │ │ ├── registry.h │ │ │ │ ├── res0.c │ │ │ │ ├── scales.h │ │ │ │ ├── sharedbook.c │ │ │ │ ├── smallft.c │ │ │ │ ├── smallft.h │ │ │ │ ├── synthesis.c │ │ │ │ ├── vorbisenc.c │ │ │ │ ├── vorbisfile.c │ │ │ │ ├── window.c │ │ │ │ └── window.h │ │ │ ├── ogg.h │ │ │ ├── os_types.h │ │ │ ├── vorbisenc.h │ │ │ └── vorbisfile.h │ ├── format │ │ ├── juce_AudioFormat.cpp │ │ ├── juce_AudioFormat.h │ │ ├── juce_AudioFormatManager.cpp │ │ ├── juce_AudioFormatManager.h │ │ ├── juce_AudioFormatReader.cpp │ │ ├── juce_AudioFormatReader.h │ │ ├── juce_AudioFormatReaderSource.cpp │ │ ├── juce_AudioFormatReaderSource.h │ │ ├── juce_AudioFormatWriter.cpp │ │ ├── juce_AudioFormatWriter.h │ │ ├── juce_AudioSubsectionReader.cpp │ │ ├── juce_AudioSubsectionReader.h │ │ ├── juce_BufferingAudioFormatReader.cpp │ │ ├── juce_BufferingAudioFormatReader.h │ │ └── juce_MemoryMappedAudioFormatReader.h │ ├── juce_audio_formats.cpp │ ├── juce_audio_formats.h │ ├── juce_audio_formats.mm │ ├── juce_module_info │ └── sampler │ │ ├── juce_Sampler.cpp │ │ └── juce_Sampler.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_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_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_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 │ ├── 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_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_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 │ ├── 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_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_Singleton.h │ │ └── juce_WeakReference.h │ ├── misc │ │ ├── juce_Result.cpp │ │ ├── juce_Result.h │ │ ├── juce_Uuid.cpp │ │ ├── juce_Uuid.h │ │ └── juce_WindowsRegistry.h │ ├── native │ │ ├── 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_linux_CommonFile.cpp │ │ ├── juce_linux_Files.cpp │ │ ├── juce_linux_Network.cpp │ │ ├── juce_linux_SystemStats.cpp │ │ ├── juce_linux_Threads.cpp │ │ ├── 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_PlatformDefs.h │ │ ├── juce_StandardHeader.h │ │ ├── juce_SystemStats.cpp │ │ ├── juce_SystemStats.h │ │ └── juce_TargetPlatform.h │ ├── text │ │ ├── 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_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 │ │ └── juce_ListenerList.h │ ├── interprocess │ │ ├── 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_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_FileFilter.cpp │ │ ├── juce_FileFilter.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_WildcardFileFilter.cpp │ │ └── juce_WildcardFileFilter.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 │ ├── 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_AppleRemote.h │ │ ├── juce_BubbleMessageComponent.cpp │ │ ├── juce_BubbleMessageComponent.h │ │ ├── juce_ColourSelector.cpp │ │ ├── juce_ColourSelector.h │ │ ├── juce_KeyMappingEditorComponent.cpp │ │ ├── juce_KeyMappingEditorComponent.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_opengl │ ├── juce_module_info │ ├── juce_opengl.cpp │ ├── juce_opengl.h │ ├── juce_opengl.mm │ ├── native │ ├── juce_MissingGLDefinitions.h │ ├── juce_OpenGLExtensions.h │ ├── juce_OpenGL_android.h │ ├── juce_OpenGL_ios.h │ ├── juce_OpenGL_linux.h │ ├── juce_OpenGL_osx.h │ └── juce_OpenGL_win32.h │ └── opengl │ ├── juce_Draggable3DOrientation.h │ ├── juce_Matrix3D.h │ ├── juce_OpenGLContext.cpp │ ├── juce_OpenGLContext.h │ ├── juce_OpenGLFrameBuffer.cpp │ ├── juce_OpenGLFrameBuffer.h │ ├── juce_OpenGLGraphicsContext.cpp │ ├── juce_OpenGLGraphicsContext.h │ ├── juce_OpenGLHelpers.cpp │ ├── juce_OpenGLHelpers.h │ ├── juce_OpenGLImage.cpp │ ├── juce_OpenGLImage.h │ ├── juce_OpenGLPixelFormat.cpp │ ├── juce_OpenGLPixelFormat.h │ ├── juce_OpenGLRenderer.h │ ├── juce_OpenGLShaderProgram.cpp │ ├── juce_OpenGLShaderProgram.h │ ├── juce_OpenGLTexture.cpp │ ├── juce_OpenGLTexture.h │ ├── juce_Quaternion.h │ └── juce_Vector3D.h ├── README.md ├── Source ├── Main.cpp ├── audio_util.cpp ├── audio_util.h ├── dependencies │ └── kiss_fft130 │ │ ├── .hg_archival.txt │ │ ├── .hgignore │ │ ├── .hgtags │ │ ├── CHANGELOG │ │ ├── COPYING │ │ ├── Makefile │ │ ├── README │ │ ├── README.simd │ │ ├── TIPS │ │ ├── _kiss_fft_guts.h │ │ ├── kiss_fft.c │ │ ├── kiss_fft.h │ │ ├── kissfft.hh │ │ ├── test │ │ ├── Makefile │ │ ├── benchfftw.c │ │ ├── benchkiss.c │ │ ├── compfft.py │ │ ├── doit.c │ │ ├── fastfir.py │ │ ├── fft.py │ │ ├── mk_test.py │ │ ├── pstats.c │ │ ├── pstats.h │ │ ├── tailscrap.m │ │ ├── test_real.c │ │ ├── test_vs_dft.c │ │ ├── testcpp.cc │ │ ├── testkiss.py │ │ └── twotonetest.c │ │ └── tools │ │ ├── Makefile │ │ ├── fftutil.c │ │ ├── kfc.c │ │ ├── kfc.h │ │ ├── kiss_fastfir.c │ │ ├── kiss_fftnd.c │ │ ├── kiss_fftnd.h │ │ ├── kiss_fftndr.c │ │ ├── kiss_fftndr.h │ │ ├── kiss_fftr.c │ │ ├── kiss_fftr.h │ │ └── psdpng.c ├── open_gl_component.cpp ├── open_gl_component.h ├── open_gl_juce_demo_structs.h ├── spectrogram_component.cpp └── spectrogram_component.h ├── deswp.sh ├── graph_04_mod ├── Makefile ├── audio_util.cpp ├── audio_util.h ├── graph.cpp ├── graph.f.glsl ├── graph.v.glsl ├── shader_utils.cpp └── shader_utils.h ├── images ├── button_down_pause.png ├── button_down_play.png ├── button_down_stop.png ├── button_hover_pause.png ├── button_hover_play.png ├── button_hover_stop.png ├── button_pause.png ├── button_play.png └── button_stop.png ├── opengl_spectrogram.jucer ├── test_sound.wav └── todo.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.swp 3 | Builds/Linux/build/* 4 | Builds/VisualStudio2012/Debug/* 5 | Builds/VisualStudio2012/opengl_spectrogram.sdf 6 | Builds/VisualStudio2012/opengl_spectrogram.v11.suo -------------------------------------------------------------------------------- /Builds/VisualStudio2012/opengl_spectrogram.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 11.00 2 | # Visual Studio 2012 3 | Project("{24DF93E2-3C32-432C-B2B1-8D83813D5625}") = "opengl_spectrogram", "opengl_spectrogram.vcxproj", "{AC80F59D-3798-360F-F136-ECCB2B6C0C68}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Win32 = Debug|Win32 8 | Release|Win32 = Release|Win32 9 | EndGlobalSection 10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 11 | {AC80F59D-3798-360F-F136-ECCB2B6C0C68}.Debug|Win32.ActiveCfg = Debug|Win32 12 | {AC80F59D-3798-360F-F136-ECCB2B6C0C68}.Debug|Win32.Build.0 = Debug|Win32 13 | {AC80F59D-3798-360F-F136-ECCB2B6C0C68}.Release|Win32.ActiveCfg = Release|Win32 14 | {AC80F59D-3798-360F-F136-ECCB2B6C0C68}.Release|Win32.Build.0 = Release|Win32 15 | EndGlobalSection 16 | GlobalSection(SolutionProperties) = preSolution 17 | HideSolutionNode = FALSE 18 | EndGlobalSection 19 | EndGlobal 20 | -------------------------------------------------------------------------------- /Builds/VisualStudio2012/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 1,0,0,0 11 | BEGIN 12 | BLOCK "StringFileInfo" 13 | BEGIN 14 | BLOCK "040904E4" 15 | BEGIN 16 | VALUE "FileDescription", "opengl_spectrogram\0" 17 | VALUE "FileVersion", "1.0.0\0" 18 | VALUE "ProductName", "opengl_spectrogram\0" 19 | VALUE "ProductVersion", "1.0.0\0" 20 | END 21 | END 22 | 23 | BLOCK "VarFileInfo" 24 | BEGIN 25 | VALUE "Translation", 0x409, 65001 26 | END 27 | END 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /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_VC46LC__ 14 | #define __APPHEADERFILE_VC46LC__ 15 | 16 | #include "AppConfig.h" 17 | #include "modules/juce_audio_basics/juce_audio_basics.h" 18 | #include "modules/juce_audio_devices/juce_audio_devices.h" 19 | #include "modules/juce_audio_formats/juce_audio_formats.h" 20 | #include "modules/juce_audio_processors/juce_audio_processors.h" 21 | #include "modules/juce_core/juce_core.h" 22 | #include "modules/juce_data_structures/juce_data_structures.h" 23 | #include "modules/juce_events/juce_events.h" 24 | #include "modules/juce_graphics/juce_graphics.h" 25 | #include "modules/juce_gui_basics/juce_gui_basics.h" 26 | #include "modules/juce_gui_extra/juce_gui_extra.h" 27 | #include "modules/juce_opengl/juce_opengl.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 | namespace ProjectInfo 36 | { 37 | const char* const projectName = "opengl_spectrogram"; 38 | const char* const versionString = "1.0.0"; 39 | const int versionNumber = 0x10000; 40 | } 41 | 42 | #endif // __APPHEADERFILE_VC46LC__ 43 | -------------------------------------------------------------------------------- /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.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_AUDIO_BASICS_H_INCLUDED 26 | #define JUCE_AUDIO_BASICS_H_INCLUDED 27 | 28 | #include "../juce_core/juce_core.h" 29 | 30 | //============================================================================= 31 | namespace juce 32 | { 33 | 34 | #include "buffers/juce_AudioDataConverters.h" 35 | #include "buffers/juce_AudioSampleBuffer.h" 36 | #include "buffers/juce_FloatVectorOperations.h" 37 | #include "effects/juce_Decibels.h" 38 | #include "effects/juce_IIRFilter.h" 39 | #include "effects/juce_LagrangeInterpolator.h" 40 | #include "effects/juce_Reverb.h" 41 | #include "midi/juce_MidiMessage.h" 42 | #include "midi/juce_MidiBuffer.h" 43 | #include "midi/juce_MidiMessageSequence.h" 44 | #include "midi/juce_MidiFile.h" 45 | #include "midi/juce_MidiKeyboardState.h" 46 | #include "sources/juce_AudioSource.h" 47 | #include "sources/juce_PositionableAudioSource.h" 48 | #include "sources/juce_BufferingAudioSource.h" 49 | #include "sources/juce_ChannelRemappingAudioSource.h" 50 | #include "sources/juce_IIRFilterAudioSource.h" 51 | #include "sources/juce_MixerAudioSource.h" 52 | #include "sources/juce_ResamplingAudioSource.h" 53 | #include "sources/juce_ReverbAudioSource.h" 54 | #include "sources/juce_ToneGeneratorAudioSource.h" 55 | #include "synthesisers/juce_Synthesiser.h" 56 | 57 | } 58 | 59 | #endif // JUCE_AUDIO_BASICS_H_INCLUDED 60 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.mm: -------------------------------------------------------------------------------- 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 | #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": "3.0.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 | "midi/*", 18 | "effects/*", 19 | "sources/*", 20 | "synthesisers/*" ], 21 | 22 | "OSXFrameworks": "Accelerate", 23 | "iOSFrameworks": "Accelerate" 24 | } 25 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.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 JUCE_USE_CDREADER 26 | 27 | int AudioCDReader::getNumTracks() const 28 | { 29 | return trackStartSamples.size() - 1; 30 | } 31 | 32 | int AudioCDReader::getPositionOfTrackStart (int trackNum) const 33 | { 34 | return trackStartSamples [trackNum]; 35 | } 36 | 37 | const Array& AudioCDReader::getTrackOffsets() const 38 | { 39 | return trackStartSamples; 40 | } 41 | 42 | int AudioCDReader::getCDDBId() 43 | { 44 | int checksum = 0; 45 | const int numTracks = getNumTracks(); 46 | 47 | for (int i = 0; i < numTracks; ++i) 48 | for (int offset = (trackStartSamples.getUnchecked(i) + 88200) / 44100; offset > 0; offset /= 10) 49 | checksum += offset % 10; 50 | 51 | const int length = (trackStartSamples.getLast() - trackStartSamples.getFirst()) / 44100; 52 | 53 | // CCLLLLTT: checksum, length, tracks 54 | return ((checksum & 0xff) << 24) | (length << 8) | numTracks; 55 | } 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.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 | AudioIODevice::AudioIODevice (const String& deviceName, const String& typeName_) 26 | : name (deviceName), 27 | typeName (typeName_) 28 | { 29 | } 30 | 31 | AudioIODevice::~AudioIODevice() 32 | { 33 | } 34 | 35 | bool AudioIODevice::hasControlPanel() const 36 | { 37 | return false; 38 | } 39 | 40 | bool AudioIODevice::showControlPanel() 41 | { 42 | jassertfalse; // this should only be called for devices which return true from 43 | // their hasControlPanel() method. 44 | return false; 45 | } 46 | 47 | //============================================================================== 48 | void AudioIODeviceCallback::audioDeviceError (const String&) {} 49 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.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_SYSTEMAUDIOVOLUME_H_INCLUDED 26 | #define JUCE_SYSTEMAUDIOVOLUME_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Contains functions to control the system's master volume. 32 | */ 33 | class JUCE_API SystemAudioVolume 34 | { 35 | public: 36 | //============================================================================== 37 | /** Returns the operating system's current volume level in the range 0 to 1.0 */ 38 | static float JUCE_CALLTYPE getGain(); 39 | 40 | /** Attempts to set the operating system's current volume level. 41 | @param newGain the level, between 0 and 1.0 42 | @returns true if the operation succeeds 43 | */ 44 | static bool JUCE_CALLTYPE setGain (float newGain); 45 | 46 | /** Returns true if the system's audio output is currently muted. */ 47 | static bool JUCE_CALLTYPE isMuted(); 48 | 49 | /** Attempts to mute the operating system's audio output. 50 | @param shouldBeMuted true if you want it to be muted 51 | @returns true if the operation succeeds 52 | */ 53 | static bool JUCE_CALLTYPE setMuted (bool shouldBeMuted); 54 | 55 | private: 56 | SystemAudioVolume(); // Don't instantiate this class, just call its static fns. 57 | JUCE_DECLARE_NON_COPYABLE (SystemAudioVolume) 58 | }; 59 | 60 | 61 | #endif // JUCE_SYSTEMAUDIOVOLUME_H_INCLUDED 62 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.mm: -------------------------------------------------------------------------------- 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 | #include "juce_audio_devices.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_audio_devices", 3 | "name": "JUCE audio and midi I/O device classes", 4 | "version": "3.0.0", 5 | "description": "Classes to play and record from audio and midi i/o devices.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_audio_basics", "version": "matching" }, 10 | { "id": "juce_audio_formats", "version": "matching" }, 11 | { "id": "juce_events", "version": "matching" } ], 12 | 13 | "include": "juce_audio_devices.h", 14 | 15 | "compile": [ { "file": "juce_audio_devices.cpp", "target": "! xcode" }, 16 | { "file": "juce_audio_devices.mm", "target": "xcode" } ], 17 | 18 | "browse": [ "audio_io/*", 19 | "midi_io/*", 20 | "sources/*", 21 | "audio_cd/*", 22 | "native/*" ], 23 | 24 | "OSXFrameworks": "CoreAudio CoreMIDI DiscRecording", 25 | "iOSFrameworks": "AudioToolbox CoreMIDI", 26 | "LinuxLibs": "asound", 27 | "mingwLibs": "winmm" 28 | } 29 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/native/juce_android_Midi.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 | StringArray MidiOutput::getDevices() 26 | { 27 | StringArray devices; 28 | 29 | return devices; 30 | } 31 | 32 | int MidiOutput::getDefaultDeviceIndex() 33 | { 34 | return 0; 35 | } 36 | 37 | MidiOutput* MidiOutput::openDevice (int index) 38 | { 39 | return nullptr; 40 | } 41 | 42 | MidiOutput::~MidiOutput() 43 | { 44 | } 45 | 46 | void MidiOutput::sendMessageNow (const MidiMessage&) 47 | { 48 | } 49 | 50 | //============================================================================== 51 | MidiInput::MidiInput (const String& name_) 52 | : name (name_), 53 | internal (0) 54 | { 55 | } 56 | 57 | MidiInput::~MidiInput() 58 | { 59 | } 60 | 61 | void MidiInput::start() 62 | { 63 | } 64 | 65 | void MidiInput::stop() 66 | { 67 | } 68 | 69 | int MidiInput::getDefaultDeviceIndex() 70 | { 71 | return 0; 72 | } 73 | 74 | StringArray MidiInput::getDevices() 75 | { 76 | StringArray devs; 77 | 78 | return devs; 79 | } 80 | 81 | MidiInput* MidiInput::openDevice (int index, MidiInputCallback* callback) 82 | { 83 | return nullptr; 84 | } 85 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_AudioCDReader.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 | AudioCDReader::AudioCDReader() 26 | : AudioFormatReader (0, "CD Audio") 27 | { 28 | } 29 | 30 | StringArray AudioCDReader::getAvailableCDNames() 31 | { 32 | StringArray names; 33 | return names; 34 | } 35 | 36 | AudioCDReader* AudioCDReader::createReaderForCD (const int index) 37 | { 38 | return nullptr; 39 | } 40 | 41 | AudioCDReader::~AudioCDReader() 42 | { 43 | } 44 | 45 | void AudioCDReader::refreshTrackLengths() 46 | { 47 | } 48 | 49 | bool AudioCDReader::readSamples (int** destSamples, int numDestChannels, int startOffsetInDestBuffer, 50 | int64 startSampleInFile, int numSamples) 51 | { 52 | return false; 53 | } 54 | 55 | bool AudioCDReader::isCDStillPresent() const 56 | { 57 | return false; 58 | } 59 | 60 | bool AudioCDReader::isTrackAudio (int trackNum) const 61 | { 62 | return false; 63 | } 64 | 65 | void AudioCDReader::enableIndexScanning (bool b) 66 | { 67 | } 68 | 69 | int AudioCDReader::getLastIndex() const 70 | { 71 | return 0; 72 | } 73 | 74 | Array AudioCDReader::findIndexesInTrack (const int trackNumber) 75 | { 76 | return Array(); 77 | } 78 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/flac/assert.h: -------------------------------------------------------------------------------- 1 | /* libFLAC - Free Lossless Audio Codec library 2 | * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * - Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in the 13 | * documentation and/or other materials provided with the distribution. 14 | * 15 | * - Neither the name of the Xiph.org Foundation nor the names of its 16 | * contributors may be used to endorse or promote products derived from 17 | * this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 23 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | #ifndef FLAC__ASSERT_H 33 | #define FLAC__ASSERT_H 34 | 35 | /* we need this since some compilers (like MSVC) leave assert()s on release code (and we don't want to use their ASSERT) */ 36 | #ifdef DEBUG 37 | #include 38 | #define FLAC__ASSERT(x) assert(x) 39 | #define FLAC__ASSERT_DECLARATION(x) x 40 | #else 41 | #define FLAC__ASSERT(x) 42 | #define FLAC__ASSERT_DECLARATION(x) 43 | #endif 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h: -------------------------------------------------------------------------------- 1 | /* libFLAC - Free Lossless Audio Codec library 2 | * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * - Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in the 13 | * documentation and/or other materials provided with the distribution. 14 | * 15 | * - Neither the name of the Xiph.org Foundation nor the names of its 16 | * contributors may be used to endorse or promote products derived from 17 | * this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 23 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | #ifndef FLAC__PRIVATE__ALL_H 33 | #define FLAC__PRIVATE__ALL_H 34 | 35 | #include "bitmath.h" 36 | #include "bitreader.h" 37 | #include "bitwriter.h" 38 | #include "cpu.h" 39 | #include "crc.h" 40 | #include "fixed.h" 41 | #include "float.h" 42 | #include "format.h" 43 | #include "lpc.h" 44 | #include "md5.h" 45 | #include "memory.h" 46 | #include "metadata.h" 47 | #include "stream_encoder_framing.h" 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h: -------------------------------------------------------------------------------- 1 | /* libFLAC - Free Lossless Audio Codec library 2 | * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * - Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in the 13 | * documentation and/or other materials provided with the distribution. 14 | * 15 | * - Neither the name of the Xiph.org Foundation nor the names of its 16 | * contributors may be used to endorse or promote products derived from 17 | * this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 23 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | #ifndef FLAC__PRIVATE__BITMATH_H 33 | #define FLAC__PRIVATE__BITMATH_H 34 | 35 | #include "../../../ordinals.h" 36 | 37 | unsigned FLAC__bitmath_ilog2(FLAC__uint32 v); 38 | unsigned FLAC__bitmath_ilog2_wide(FLAC__uint64 v); 39 | unsigned FLAC__bitmath_silog2(int v); 40 | unsigned FLAC__bitmath_silog2_wide(FLAC__int64 v); 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h: -------------------------------------------------------------------------------- 1 | #ifndef FLAC__PRIVATE__MD5_H 2 | #define FLAC__PRIVATE__MD5_H 3 | 4 | /* 5 | * This is the header file for the MD5 message-digest algorithm. 6 | * The algorithm is due to Ron Rivest. This code was 7 | * written by Colin Plumb in 1993, no copyright is claimed. 8 | * This code is in the public domain; do with it what you wish. 9 | * 10 | * Equivalent code is available from RSA Data Security, Inc. 11 | * This code has been tested against that, and is equivalent, 12 | * except that you don't need to include two pages of legalese 13 | * with every copy. 14 | * 15 | * To compute the message digest of a chunk of bytes, declare an 16 | * MD5Context structure, pass it to MD5Init, call MD5Update as 17 | * needed on buffers full of bytes, and then call MD5Final, which 18 | * will fill a supplied 16-byte array with the digest. 19 | * 20 | * Changed so as no longer to depend on Colin Plumb's `usual.h' 21 | * header definitions; now uses stuff from dpkg's config.h 22 | * - Ian Jackson . 23 | * Still in the public domain. 24 | * 25 | * Josh Coalson: made some changes to integrate with libFLAC. 26 | * Still in the public domain, with no warranty. 27 | */ 28 | 29 | #include "../../../ordinals.h" 30 | 31 | typedef struct { 32 | FLAC__uint32 in[16]; 33 | FLAC__uint32 buf[4]; 34 | FLAC__uint32 bytes[2]; 35 | FLAC__byte *internal_buf; 36 | size_t capacity; 37 | } FLAC__MD5Context; 38 | 39 | void FLAC__MD5Init(FLAC__MD5Context *context); 40 | void FLAC__MD5Final(FLAC__byte digest[16], FLAC__MD5Context *context); 41 | 42 | FLAC__bool FLAC__MD5Accumulate(FLAC__MD5Context *ctx, const FLAC__int32 * const signal[], unsigned channels, unsigned samples, unsigned bytes_per_sample); 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h: -------------------------------------------------------------------------------- 1 | /* libFLAC - Free Lossless Audio Codec library 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * - Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in the 13 | * documentation and/or other materials provided with the distribution. 14 | * 15 | * - Neither the name of the Xiph.org Foundation nor the names of its 16 | * contributors may be used to endorse or promote products derived from 17 | * this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 23 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | #ifndef FLAC__PRIVATE__METADATA_H 33 | #define FLAC__PRIVATE__METADATA_H 34 | 35 | #include "metadata.h" 36 | 37 | /* WATCHOUT: all malloc()ed data in the block is free()ed; this may not 38 | * be a consistent state (e.g. PICTURE) or equivalent to the initial 39 | * state after FLAC__metadata_object_new() 40 | */ 41 | void FLAC__metadata_object_delete_data(FLAC__StreamMetadata *object); 42 | 43 | void FLAC__metadata_object_cuesheet_track_delete_data(FLAC__StreamMetadata_CueSheet_Track *object); 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h: -------------------------------------------------------------------------------- 1 | /* libFLAC - Free Lossless Audio Codec library 2 | * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * - Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in the 13 | * documentation and/or other materials provided with the distribution. 14 | * 15 | * - Neither the name of the Xiph.org Foundation nor the names of its 16 | * contributors may be used to endorse or promote products derived from 17 | * this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 23 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | #ifndef FLAC__PROTECTED__ALL_H 33 | #define FLAC__PROTECTED__ALL_H 34 | 35 | #include "stream_decoder.h" 36 | #include "stream_encoder.h" 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.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 | #if JUCE_WINDOWS || DOXYGEN 26 | 27 | //============================================================================== 28 | /** 29 | Audio format which uses the Windows Media codecs (Windows only). 30 | */ 31 | class WindowsMediaAudioFormat : public AudioFormat 32 | { 33 | public: 34 | //============================================================================== 35 | WindowsMediaAudioFormat(); 36 | ~WindowsMediaAudioFormat(); 37 | 38 | //============================================================================== 39 | Array getPossibleSampleRates() override; 40 | Array getPossibleBitDepths() override; 41 | bool canDoStereo() override; 42 | bool canDoMono() override; 43 | 44 | //============================================================================== 45 | AudioFormatReader* createReaderFor (InputStream*, bool deleteStreamIfOpeningFails) override; 46 | 47 | AudioFormatWriter* createWriterFor (OutputStream*, double sampleRateToUse, 48 | unsigned int numberOfChannels, int bitsPerSample, 49 | const StringPairArray& metadataValues, int qualityOptionIndex) override; 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/config_types.h: -------------------------------------------------------------------------------- 1 | #ifndef __CONFIG_TYPES_H__ 2 | #define __CONFIG_TYPES_H__ 3 | 4 | typedef int16_t ogg_int16_t; 5 | typedef unsigned short ogg_uint16_t; 6 | typedef int32_t ogg_int32_t; 7 | typedef unsigned int ogg_uint32_t; 8 | typedef int64_t ogg_int64_t; 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/AUTHORS: -------------------------------------------------------------------------------- 1 | Monty 2 | 3 | and the rest of the Xiph.org Foundation. 4 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/COPYING: -------------------------------------------------------------------------------- 1 | Copyright (c) 2002-2008 Xiph.org Foundation 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 7 | - Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | - Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | - Neither the name of the Xiph.org Foundation nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION 22 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: bitrate tracking and management 14 | last mod: $Id: bitrate.h 13293 2007-07-24 00:09:47Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_BITRATE_H_ 19 | #define _V_BITRATE_H_ 20 | 21 | #include "../../codec.h" 22 | #include "codec_internal.h" 23 | #include "os.h" 24 | 25 | /* encode side bitrate tracking */ 26 | typedef struct bitrate_manager_state { 27 | int managed; 28 | 29 | long avg_reservoir; 30 | long minmax_reservoir; 31 | long avg_bitsper; 32 | long min_bitsper; 33 | long max_bitsper; 34 | 35 | long short_per_long; 36 | double avgfloat; 37 | 38 | vorbis_block *vb; 39 | int choice; 40 | } bitrate_manager_state; 41 | 42 | typedef struct bitrate_manager_info{ 43 | long avg_rate; 44 | long min_rate; 45 | long max_rate; 46 | long reservoir_bits; 47 | double reservoir_bias; 48 | 49 | double slew_damp; 50 | 51 | } bitrate_manager_info; 52 | 53 | extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs); 54 | extern void vorbis_bitrate_clear(bitrate_manager_state *bs); 55 | extern int vorbis_bitrate_managed(vorbis_block *vb); 56 | extern int vorbis_bitrate_addblock(vorbis_block *vb); 57 | extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op); 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: highlevel encoder setup struct separated out for vorbisenc clarity 14 | last mod: $Id: highlevel.h 17195 2010-05-05 21:49:51Z giles $ 15 | 16 | ********************************************************************/ 17 | 18 | typedef struct highlevel_byblocktype { 19 | double tone_mask_setting; 20 | double tone_peaklimit_setting; 21 | double noise_bias_setting; 22 | double noise_compand_setting; 23 | } highlevel_byblocktype; 24 | 25 | typedef struct highlevel_encode_setup { 26 | int set_in_stone; 27 | const void *setup; 28 | double base_setting; 29 | 30 | double impulse_noisetune; 31 | 32 | /* bitrate management below all settable */ 33 | float req; 34 | int managed; 35 | long bitrate_min; 36 | long bitrate_av; 37 | double bitrate_av_damp; 38 | long bitrate_max; 39 | long bitrate_reservoir; 40 | double bitrate_reservoir_bias; 41 | 42 | int impulse_block_p; 43 | int noise_normalize_p; 44 | int coupling_p; 45 | 46 | double stereo_point_setting; 47 | double lowpass_kHz; 48 | int lowpass_altered; 49 | 50 | double ath_floating_dB; 51 | double ath_absolute_dB; 52 | 53 | double amplitude_track_dBpersec; 54 | double trigger_setting; 55 | 56 | highlevel_byblocktype block[4]; /* padding, impulse, transition, long */ 57 | 58 | } highlevel_encode_setup; 59 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: lookup based functions 14 | last mod: $Id: lookup.h 16227 2009-07-08 06:58:46Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_LOOKUP_H_ 19 | 20 | #ifdef FLOAT_LOOKUP 21 | extern float vorbis_coslook(float a); 22 | extern float vorbis_invsqlook(float a); 23 | extern float vorbis_invsq2explook(int a); 24 | extern float vorbis_fromdBlook(float a); 25 | #endif 26 | #ifdef INT_LOOKUP 27 | extern long vorbis_invsqlook_i(long a,long e); 28 | extern long vorbis_coslook_i(long a); 29 | extern float vorbis_fromdBlook_i(long a); 30 | #endif 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: LPC low level routines 14 | last mod: $Id: lpc.h 16037 2009-05-26 21:10:58Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_LPC_H_ 19 | #define _V_LPC_H_ 20 | 21 | #include "../../codec.h" 22 | 23 | /* simple linear scale LPC code */ 24 | extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m); 25 | 26 | extern void vorbis_lpc_predict(float *coeff,float *prime,int m, 27 | float *data,long n); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: LSP (also called LSF) conversion routines 14 | last mod: $Id: lsp.h 16227 2009-07-08 06:58:46Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | 19 | #ifndef _V_LSP_H_ 20 | #define _V_LSP_H_ 21 | 22 | extern int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m); 23 | 24 | extern void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln, 25 | float *lsp,int m, 26 | float amp,float ampoffset); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: modified discrete cosine transform prototypes 14 | last mod: $Id: mdct.h 16227 2009-07-08 06:58:46Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _OGG_mdct_H_ 19 | #define _OGG_mdct_H_ 20 | 21 | #include "../../codec.h" 22 | 23 | 24 | 25 | 26 | 27 | /*#define MDCT_INTEGERIZED <- be warned there could be some hurt left here*/ 28 | #ifdef MDCT_INTEGERIZED 29 | 30 | #define DATA_TYPE int 31 | #define REG_TYPE register int 32 | #define TRIGBITS 14 33 | #define cPI3_8 6270 34 | #define cPI2_8 11585 35 | #define cPI1_8 15137 36 | 37 | #define FLOAT_CONV(x) ((int)((x)*(1<>TRIGBITS) 39 | #define HALVE(x) ((x)>>1) 40 | 41 | #else 42 | 43 | #define DATA_TYPE float 44 | #define REG_TYPE float 45 | #define cPI3_8 .38268343236508977175F 46 | #define cPI2_8 .70710678118654752441F 47 | #define cPI1_8 .92387953251128675613F 48 | 49 | #define FLOAT_CONV(x) (x) 50 | #define MULT_NORM(x) (x) 51 | #define HALVE(x) ((x)*.5f) 52 | 53 | #endif 54 | 55 | 56 | typedef struct { 57 | int n; 58 | int log2n; 59 | 60 | DATA_TYPE *trig; 61 | int *bitrev; 62 | 63 | DATA_TYPE scale; 64 | } mdct_lookup; 65 | 66 | extern void mdct_init(mdct_lookup *lookup,int n); 67 | extern void mdct_clear(mdct_lookup *l); 68 | extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out); 69 | extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out); 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: miscellaneous prototypes 14 | last mod: $Id: misc.h 16227 2009-07-08 06:58:46Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_RANDOM_H_ 19 | #define _V_RANDOM_H_ 20 | #include "../../codec.h" 21 | 22 | extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes); 23 | extern void _vorbis_block_ripcord(vorbis_block *vb); 24 | 25 | #ifdef ANALYSIS 26 | extern int analysis_noisy; 27 | extern void _analysis_output(char *base,int i,float *v,int n,int bark,int dB, 28 | ogg_int64_t off); 29 | extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB, 30 | ogg_int64_t off); 31 | #endif 32 | 33 | #ifdef DEBUG_MALLOC 34 | 35 | #define _VDBG_GRAPHFILE "malloc.m" 36 | #undef _VDBG_GRAPHFILE 37 | extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line); 38 | extern void _VDBG_free(void *ptr,char *file,long line); 39 | 40 | #ifndef MISC_C 41 | #undef _ogg_malloc 42 | #undef _ogg_calloc 43 | #undef _ogg_realloc 44 | #undef _ogg_free 45 | 46 | #define _ogg_malloc(x) _VDBG_malloc(NULL,(x),__FILE__,__LINE__) 47 | #define _ogg_calloc(x,y) _VDBG_malloc(NULL,(x)*(y),__FILE__,__LINE__) 48 | #define _ogg_realloc(x,y) _VDBG_malloc((x),(y),__FILE__,__LINE__) 49 | #define _ogg_free(x) _VDBG_free((x),__FILE__,__LINE__) 50 | #endif 51 | #endif 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: toplevel settings for 44.1/48kHz 5.1 surround modes 14 | last mod: $Id$ 15 | 16 | ********************************************************************/ 17 | 18 | #include "residue_44p51.h" 19 | 20 | static const double rate_mapping_44p51[12]={ 21 | 14000.,20000.,28000.,38000.,46000.,54000., 22 | 75000.,96000.,120000.,140000.,180000.,240001. 23 | }; 24 | 25 | static const ve_setup_data_template ve_setup_44_51={ 26 | 11, 27 | rate_mapping_44p51, 28 | quality_mapping_44, 29 | 6, 30 | 40000, 31 | 70000, 32 | 33 | blocksize_short_44, 34 | blocksize_long_44, 35 | 36 | _psy_tone_masteratt_44, 37 | _psy_tone_0dB, 38 | _psy_tone_suppress, 39 | 40 | _vp_tonemask_adj_otherblock, 41 | _vp_tonemask_adj_longblock, 42 | _vp_tonemask_adj_otherblock, 43 | 44 | _psy_noiseguards_44, 45 | _psy_noisebias_impulse, 46 | _psy_noisebias_padding, 47 | _psy_noisebias_trans, 48 | _psy_noisebias_long, 49 | _psy_noise_suppress, 50 | 51 | _psy_compand_44, 52 | _psy_compand_short_mapping, 53 | _psy_compand_long_mapping, 54 | 55 | {_noise_start_short_44,_noise_start_long_44}, 56 | {_noise_part_short_44,_noise_part_long_44}, 57 | _noise_thresh_44, 58 | 59 | _psy_ath_floater, 60 | _psy_ath_abs, 61 | 62 | _psy_lowpass_44, 63 | 64 | _psy_global_44, 65 | _global_mapping_44, 66 | _psy_stereo_modes_44, 67 | 68 | _floor_books, 69 | _floor, 70 | 3, 71 | _floor_mapping_44, 72 | 73 | _mapres_template_44_51 74 | }; 75 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: toplevel settings for 44.1/48kHz uncoupled modes 14 | last mod: $Id: setup_44u.h 16962 2010-03-11 07:30:34Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #include "residue_44u.h" 19 | 20 | static const double rate_mapping_44_un[12]={ 21 | 32000.,48000.,60000.,70000.,80000.,86000., 22 | 96000.,110000.,120000.,140000.,160000.,240001. 23 | }; 24 | 25 | static const ve_setup_data_template ve_setup_44_uncoupled={ 26 | 11, 27 | rate_mapping_44_un, 28 | quality_mapping_44, 29 | -1, 30 | 40000, 31 | 50000, 32 | 33 | blocksize_short_44, 34 | blocksize_long_44, 35 | 36 | _psy_tone_masteratt_44, 37 | _psy_tone_0dB, 38 | _psy_tone_suppress, 39 | 40 | _vp_tonemask_adj_otherblock, 41 | _vp_tonemask_adj_longblock, 42 | _vp_tonemask_adj_otherblock, 43 | 44 | _psy_noiseguards_44, 45 | _psy_noisebias_impulse, 46 | _psy_noisebias_padding, 47 | _psy_noisebias_trans, 48 | _psy_noisebias_long, 49 | _psy_noise_suppress, 50 | 51 | _psy_compand_44, 52 | _psy_compand_short_mapping, 53 | _psy_compand_long_mapping, 54 | 55 | {_noise_start_short_44,_noise_start_long_44}, 56 | {_noise_part_short_44,_noise_part_long_44}, 57 | _noise_thresh_44, 58 | 59 | _psy_ath_floater, 60 | _psy_ath_abs, 61 | 62 | _psy_lowpass_44, 63 | 64 | _psy_global_44, 65 | _global_mapping_44, 66 | _psy_stereo_modes_44, 67 | 68 | _floor_books, 69 | _floor, 70 | 2, 71 | _floor_mapping_44, 72 | 73 | _mapres_template_44_uncoupled 74 | }; 75 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: registry for time, floor, res backends and channel mappings 14 | last mod: $Id: registry.c 16227 2009-07-08 06:58:46Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #include "../../codec.h" 19 | #include "codec_internal.h" 20 | #include "registry.h" 21 | #include "misc.h" 22 | /* seems like major overkill now; the backend numbers will grow into 23 | the infrastructure soon enough */ 24 | 25 | extern const vorbis_func_floor floor0_exportbundle; 26 | extern const vorbis_func_floor floor1_exportbundle; 27 | extern const vorbis_func_residue residue0_exportbundle; 28 | extern const vorbis_func_residue residue1_exportbundle; 29 | extern const vorbis_func_residue residue2_exportbundle; 30 | extern const vorbis_func_mapping mapping0_exportbundle; 31 | 32 | const vorbis_func_floor *const _floor_P[]={ 33 | &floor0_exportbundle, 34 | &floor1_exportbundle, 35 | }; 36 | 37 | const vorbis_func_residue *const _residue_P[]={ 38 | &residue0_exportbundle, 39 | &residue1_exportbundle, 40 | &residue2_exportbundle, 41 | }; 42 | 43 | const vorbis_func_mapping *const _mapping_P[]={ 44 | &mapping0_exportbundle, 45 | }; 46 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: registry for time, floor, res backends and channel mappings 14 | last mod: $Id: registry.h 15531 2008-11-24 23:50:06Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_REG_H_ 19 | #define _V_REG_H_ 20 | 21 | #define VI_TRANSFORMB 1 22 | #define VI_WINDOWB 1 23 | #define VI_TIMEB 1 24 | #define VI_FLOORB 2 25 | #define VI_RESB 3 26 | #define VI_MAPB 1 27 | 28 | extern const vorbis_func_floor *const _floor_P[]; 29 | extern const vorbis_func_residue *const _residue_P[]; 30 | extern const vorbis_func_mapping *const _mapping_P[]; 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: fft transform 14 | last mod: $Id: smallft.h 13293 2007-07-24 00:09:47Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_SMFT_H_ 19 | #define _V_SMFT_H_ 20 | 21 | #include "../../codec.h" 22 | 23 | typedef struct { 24 | int n; 25 | float *trigcache; 26 | int *splitcache; 27 | } drft_lookup; 28 | 29 | extern void drft_forward(drft_lookup *l,float *data); 30 | extern void drft_backward(drft_lookup *l,float *data); 31 | extern void drft_init(drft_lookup *l,int n); 32 | extern void drft_clear(drft_lookup *l); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 9 | * by the Xiph.Org Foundation http://www.xiph.org/ * 10 | * * 11 | ******************************************************************** 12 | 13 | function: window functions 14 | last mod: $Id: window.h 13293 2007-07-24 00:09:47Z xiphmont $ 15 | 16 | ********************************************************************/ 17 | 18 | #ifndef _V_WINDOW_ 19 | #define _V_WINDOW_ 20 | 21 | extern float *_vorbis_window_get(int n); 22 | extern void _vorbis_apply_window(float *d,int *winno,long *blocksizes, 23 | int lW,int W,int nW); 24 | 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.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 | AudioFormat::AudioFormat (String name, StringArray extensions) 26 | : formatName (name), fileExtensions (extensions) 27 | { 28 | } 29 | 30 | AudioFormat::AudioFormat (StringRef name, StringRef extensions) 31 | : formatName (name.text), fileExtensions (StringArray::fromTokens (extensions, false)) 32 | { 33 | } 34 | 35 | AudioFormat::~AudioFormat() 36 | { 37 | } 38 | 39 | bool AudioFormat::canHandleFile (const File& f) 40 | { 41 | for (int i = 0; i < fileExtensions.size(); ++i) 42 | if (f.hasFileExtension (fileExtensions[i])) 43 | return true; 44 | 45 | return false; 46 | } 47 | 48 | const String& AudioFormat::getFormatName() const { return formatName; } 49 | const StringArray& AudioFormat::getFileExtensions() const { return fileExtensions; } 50 | bool AudioFormat::isCompressed() { return false; } 51 | StringArray AudioFormat::getQualityOptions() { return StringArray(); } 52 | 53 | MemoryMappedAudioFormatReader* AudioFormat::createMemoryMappedReader (const File&) 54 | { 55 | return nullptr; 56 | } 57 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.mm: -------------------------------------------------------------------------------- 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 | #include "juce_audio_formats.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_formats/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_audio_formats", 3 | "name": "JUCE audio file format codecs", 4 | "version": "3.0.0", 5 | "description": "Classes for reading and writing various audio file formats.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_audio_basics", "version": "matching" } ], 10 | 11 | "include": "juce_audio_formats.h", 12 | 13 | "compile": [ { "file": "juce_audio_formats.cpp", "target": "! xcode" }, 14 | { "file": "juce_audio_formats.mm", "target": "xcode" } ], 15 | 16 | "browse": [ "format/*", 17 | "codecs/*", 18 | "sampler/*" ], 19 | 20 | "OSXFrameworks": "CoreAudio CoreMIDI QuartzCore AudioToolbox", 21 | "iOSFrameworks": "AudioToolbox QuartzCore" 22 | } 23 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.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 | AudioPluginFormat::AudioPluginFormat() noexcept {} 26 | AudioPluginFormat::~AudioPluginFormat() {} 27 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.mm: -------------------------------------------------------------------------------- 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 | #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": "3.0.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 | ], 22 | 23 | "OSXFrameworks": "CoreAudio CoreMIDI AudioToolbox", 24 | "iOSFrameworks": "AudioToolbox" 25 | } 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.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 | AudioProcessorEditor::AudioProcessorEditor (AudioProcessor* const p) 26 | : owner (p) 27 | { 28 | // the filter must be valid.. 29 | jassert (owner != nullptr); 30 | } 31 | 32 | AudioProcessorEditor::~AudioProcessorEditor() 33 | { 34 | // if this fails, then the wrapper hasn't called editorBeingDeleted() on the 35 | // filter for some reason.. 36 | jassert (owner->getActiveEditor() != this); 37 | } 38 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.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_AUDIOPROCESSOREDITOR_H_INCLUDED 26 | #define JUCE_AUDIOPROCESSOREDITOR_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Base class for the component that acts as the GUI for an AudioProcessor. 32 | 33 | Derive your editor component from this class, and create an instance of it 34 | by overriding the AudioProcessor::createEditor() method. 35 | 36 | @see AudioProcessor, GenericAudioProcessorEditor 37 | */ 38 | class JUCE_API AudioProcessorEditor : public Component 39 | { 40 | protected: 41 | //============================================================================== 42 | /** Creates an editor for the specified processor. 43 | */ 44 | AudioProcessorEditor (AudioProcessor* owner); 45 | 46 | public: 47 | /** Destructor. */ 48 | ~AudioProcessorEditor(); 49 | 50 | 51 | //============================================================================== 52 | /** Returns a pointer to the processor that this editor represents. */ 53 | AudioProcessor* getAudioProcessor() const noexcept { return owner; } 54 | 55 | 56 | private: 57 | //============================================================================== 58 | AudioProcessor* const owner; 59 | 60 | JUCE_DECLARE_NON_COPYABLE (AudioProcessorEditor) 61 | }; 62 | 63 | 64 | #endif // JUCE_AUDIOPROCESSOREDITOR_H_INCLUDED 65 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.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_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_core/juce_core.mm: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software 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": "3.0.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/memory/juce_ContainerDeletePolicy.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software 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 | #ifndef JUCE_CONTAINERDELETEPOLICY_H_INCLUDED 30 | #define JUCE_CONTAINERDELETEPOLICY_H_INCLUDED 31 | 32 | //============================================================================== 33 | /** 34 | Used by container classes as an indirect way to delete an object of a 35 | particular type. 36 | 37 | The generic implementation of this class simply calls 'delete', but you can 38 | create a specialised version of it for a particular class if you need to 39 | delete that type of object in a more appropriate way. 40 | 41 | @see ScopedPointer, OwnedArray 42 | */ 43 | template 44 | struct ContainerDeletePolicy 45 | { 46 | static void destroy (ObjectType* object) 47 | { 48 | delete object; 49 | } 50 | }; 51 | 52 | 53 | #endif // JUCE_CONTAINERDELETEPOLICY_H_INCLUDED 54 | -------------------------------------------------------------------------------- /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) 2013 - Raw Material Software 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/network/juce_NamedPipe.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file is part of the juce_core module of the JUCE library. 5 | Copyright (c) 2013 - Raw Material Software 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); 45 | } 46 | 47 | bool NamedPipe::isOpen() const 48 | { 49 | return pimpl != nullptr; 50 | } 51 | 52 | bool NamedPipe::createNewPipe (const String& pipeName) 53 | { 54 | close(); 55 | 56 | ScopedWriteLock sl (lock); 57 | currentPipeName = pipeName; 58 | return openInternal (pipeName, true); 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) 2013 - Raw Material Software 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) 2013 - Raw Material Software 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) 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_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 "undomanager/juce_UndoManager.cpp" 46 | #include "app_properties/juce_ApplicationProperties.cpp" 47 | #include "app_properties/juce_PropertiesFile.cpp" 48 | 49 | } 50 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_data_structures/juce_data_structures.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_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 "app_properties/juce_PropertiesFile.h" 39 | #include "app_properties/juce_ApplicationProperties.h" 40 | 41 | } 42 | 43 | #endif // JUCE_DATA_STRUCTURES_H_INCLUDED 44 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm: -------------------------------------------------------------------------------- 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 | #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": "3.0.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) 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_ACTIONLISTENER_H_INCLUDED 26 | #define JUCE_ACTIONLISTENER_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | Receives callbacks to indicate that some kind of event has occurred. 32 | 33 | Used by various classes, e.g. buttons when they are pressed, to tell listeners 34 | about something that's happened. 35 | 36 | @see ActionBroadcaster, ChangeListener 37 | */ 38 | class JUCE_API ActionListener 39 | { 40 | public: 41 | /** Destructor. */ 42 | virtual ~ActionListener() {} 43 | 44 | /** Overridden by your subclass to receive the callback. 45 | 46 | @param message the string that was specified when the event was triggered 47 | by a call to ActionBroadcaster::sendActionMessage() 48 | */ 49 | virtual void actionListenerCallback (const String& message) = 0; 50 | }; 51 | 52 | 53 | #endif // JUCE_ACTIONLISTENER_H_INCLUDED 54 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.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 | 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) 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_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 "broadcasters/juce_ListenerList.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 "native/juce_ScopedXLock.h" 53 | 54 | } 55 | 56 | #endif // JUCE_EVENTS_H_INCLUDED 57 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_events/juce_events.mm: -------------------------------------------------------------------------------- 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 | #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": "3.0.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_MessageListener.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 | 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_NotificationType.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_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 a 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) 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_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) 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 | 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) 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_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) 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 | 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) 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 | #include "juce_graphics.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_graphics/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_graphics", 3 | "name": "JUCE graphics classes", 4 | "version": "3.0.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) 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 | 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) 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_MAC_COREGRAPHICSHELPERS_H_INCLUDED 26 | #define JUCE_MAC_COREGRAPHICSHELPERS_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | namespace 31 | { 32 | template 33 | Rectangle convertToRectInt (const 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 (const 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 (const 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 (const 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) 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 | 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) 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_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) 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 | TextButton::TextButton (const String& name, const String& toolTip) 26 | : Button (name) 27 | { 28 | setTooltip (toolTip); 29 | } 30 | 31 | TextButton::~TextButton() 32 | { 33 | } 34 | 35 | void TextButton::paintButton (Graphics& g, 36 | bool isMouseOverButton, 37 | bool isButtonDown) 38 | { 39 | LookAndFeel& lf = getLookAndFeel(); 40 | 41 | lf.drawButtonBackground (g, *this, 42 | findColour (getToggleState() ? buttonOnColourId 43 | : buttonColourId), 44 | isMouseOverButton, 45 | isButtonDown); 46 | 47 | lf.drawButtonText (g, *this, 48 | isMouseOverButton, 49 | isButtonDown); 50 | } 51 | 52 | void TextButton::colourChanged() 53 | { 54 | repaint(); 55 | } 56 | 57 | Font TextButton::getFont() 58 | { 59 | return Font (jmin (15.0f, getHeight() * 0.6f)); 60 | } 61 | 62 | void TextButton::changeWidthToFitText (const int newHeight) 63 | { 64 | if (newHeight >= 0) 65 | setSize (jmax (1, getWidth()), newHeight); 66 | 67 | setSize (getFont().getStringWidth (getButtonText()) + getHeight(), 68 | getHeight()); 69 | } 70 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.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 | 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) 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 | 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) 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 | 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) 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_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_FileFilter.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 | FileFilter::FileFilter (const String& filterDescription) 26 | : description (filterDescription) 27 | { 28 | } 29 | 30 | FileFilter::~FileFilter() 31 | { 32 | } 33 | 34 | const String& FileFilter::getDescription() const noexcept 35 | { 36 | return description; 37 | } 38 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.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_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) 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 | #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": "3.0.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) 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 | 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) 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 | 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) 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 | 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) 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_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) 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 | 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) 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 | MouseInactivityDetector::MouseInactivityDetector (Component& c) 26 | : targetComp (c), delayMs (1500), 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 newDelayMilliseconds) 37 | { 38 | delayMs = newDelayMilliseconds; 39 | } 40 | 41 | 42 | void MouseInactivityDetector::addListener (Listener* l) { listenerList.add (l); } 43 | void MouseInactivityDetector::removeListener (Listener* l) { listenerList.remove (l); } 44 | 45 | void MouseInactivityDetector::timerCallback() 46 | { 47 | setActive (false); 48 | } 49 | 50 | void MouseInactivityDetector::wakeUp (const MouseEvent& e, bool alwaysWake) 51 | { 52 | const Point newPos (e.getEventRelativeTo (&targetComp).getPosition()); 53 | 54 | if ((! isActive) && (alwaysWake || e.source.isTouch() || newPos.getDistanceFrom (lastMousePos) > 15)) 55 | setActive (true); 56 | 57 | if (lastMousePos != newPos) 58 | { 59 | lastMousePos = newPos; 60 | startTimer (delayMs); 61 | } 62 | } 63 | 64 | void MouseInactivityDetector::setActive (bool b) 65 | { 66 | if (isActive != b) 67 | { 68 | isActive = b; 69 | 70 | listenerList.call (b ? &Listener::mouseBecameActive 71 | : &Listener::mouseBecameInactive); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.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 | 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) 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_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) 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 | 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) 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 | 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) 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 | 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) 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 | 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) 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_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/juce_gui_extra.mm: -------------------------------------------------------------------------------- 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 | #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": "3.0.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_SystemTrayIconComponent.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 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_opengl/juce_module_info: -------------------------------------------------------------------------------- 1 | { 2 | "id": "juce_opengl", 3 | "name": "JUCE OpenGL classes", 4 | "version": "3.0.0", 5 | "description": "Classes for rendering OpenGL in a JUCE window.", 6 | "website": "http://www.juce.com/juce", 7 | "license": "GPL/Commercial", 8 | 9 | "dependencies": [ { "id": "juce_gui_basics", "version": "matching" } ], 10 | 11 | "include": "juce_opengl.h", 12 | 13 | "compile": [ { "file": "juce_opengl.cpp", "target": "! xcode" }, 14 | { "file": "juce_opengl.mm", "target": "xcode" } ], 15 | 16 | "browse": [ "opengl/*", 17 | "native/*" ], 18 | 19 | "OSXFrameworks": "OpenGL", 20 | "iOSFrameworks": "OpenGLES", 21 | "LinuxLibs": "GL", 22 | "mingwLibs": "opengl32" 23 | } 24 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_opengl/juce_opengl.mm: -------------------------------------------------------------------------------- 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 | #include "juce_opengl.cpp" 26 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.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_OPENGLGRAPHICSCONTEXT_H_INCLUDED 26 | #define JUCE_OPENGLGRAPHICSCONTEXT_H_INCLUDED 27 | 28 | 29 | /** Creates a graphics context object that will render into the given OpenGL target. 30 | The caller is responsible for deleting this object when no longer needed. 31 | */ 32 | LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& target, 33 | int width, int height); 34 | 35 | /** Creates a graphics context object that will render into the given OpenGL target. 36 | The caller is responsible for deleting this object when no longer needed. 37 | */ 38 | LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& context, 39 | OpenGLFrameBuffer& target); 40 | 41 | /** Creates a graphics context object that will render into the given OpenGL target. 42 | The caller is responsible for deleting this object when no longer needed. 43 | */ 44 | LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& context, 45 | unsigned int frameBufferID, 46 | int width, int height); 47 | 48 | 49 | #endif // JUCE_OPENGLGRAPHICSCONTEXT_H_INCLUDED 50 | -------------------------------------------------------------------------------- /JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.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_OPENGLIMAGE_H_INCLUDED 26 | #define JUCE_OPENGLIMAGE_H_INCLUDED 27 | 28 | 29 | //============================================================================== 30 | /** 31 | A type of ImagePixelData that stores its image data in an OpenGL 32 | framebuffer, allowing a JUCE Image object to wrap a framebuffer. 33 | 34 | By creating an Image from an instance of an OpenGLFrameBufferImage, 35 | you can then use a Graphics object to draw into the framebuffer using normal 36 | JUCE 2D operations. 37 | 38 | @see Image, ImageType, ImagePixelData, OpenGLFrameBuffer 39 | */ 40 | class JUCE_API OpenGLImageType : public ImageType 41 | { 42 | public: 43 | OpenGLImageType(); 44 | ~OpenGLImageType(); 45 | 46 | ImagePixelData::Ptr create (Image::PixelFormat, int width, int height, bool shouldClearImage) const override; 47 | int getTypeID() const override; 48 | 49 | static OpenGLFrameBuffer* getFrameBufferFrom (const Image&); 50 | }; 51 | 52 | #endif // JUCE_OPENGLIMAGE_H_INCLUDED 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | opengl_spectrogram 2 | ================== 3 | 4 | using JUCE to create a 3D spectrogram drawn with OpenGL 5 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/.hg_archival.txt: -------------------------------------------------------------------------------- 1 | repo: d844c818f599aea64fe86745cdd2ef9b3d1910dc 2 | node: b354a59534b0a77c43c67deb1eb1bc39eb99b487 3 | branch: default 4 | tag: v130 5 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/.hgignore: -------------------------------------------------------------------------------- 1 | syntax:glob 2 | test/bm_* 3 | test/st_* 4 | test/tkfc_* 5 | test/tr_* 6 | tools/fastconv_* 7 | tools/fastconvr_* 8 | tools/fft_* 9 | *.swp 10 | *~ 11 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/.hgtags: -------------------------------------------------------------------------------- 1 | 32061530d4353ced38386a4578153954f46e5f8e v04_prehg 2 | 52a9ca23c9d9600794388912103e0f7d5f4c92ee v1_2_2_prehg 3 | 68e0375761a5789d72c4baa2f8265cec26fb546e v110_prehg 4 | 69a218df7458f0269a84b07f64678392edbff941 v111_prehg 5 | 702f90b11f060d45b23d563764a3b1bd8f851b7d about2do_real_multi_d_prehg 6 | 9c3041fb0677c071d7ca2797e22a63fe681d311b b4simd_prehg 7 | 9e532c64d324a0844f1efa7c32908fc2bc0cf350 v1_2_6_prehg 8 | a9797b79bf2c61f7c8259ec417a0189caa48b17a v1_2_3_prehg 9 | b1b2739c82378d6e04977440b2c31b7d1b34c266 aftersimd_prehg 10 | b8c210e0bccdeb66930423a528b11b3660491af8 v120_prehg 11 | c16172181d6aef63712a3f7bc31ef555ce7178bd help_prehg 12 | c16172181d6aef63712a3f7bc31ef555ce7178bd v1_2_3a_prehg 13 | c83c1ec6a5f21c40edf3bb9cbfd8ba1f862f1e0f half_bottle_o_wine_prehg 14 | dec01bc9c4c5f807e2e04aef3449031bc5c6b69e v1_2_5_prehg 15 | e6a840a1383ffc83c8ba17ed4b0bf5d6aefc9a34 v127_prehg 16 | ea3a56794d9326d5505b5bf02f98a70217a1b86d v101_prehg 17 | edd6236ecb25904b385856ffae608548ce3df4e5 v011_prehg 18 | f19b7bcef3f322d277d5b51b2b132657cf08c1a7 v1_2_8_prehg 19 | f73f8d58c37d52379e9d7f13d81f5391226209c1 v1_2_1_prehg 20 | 9e0bf8478cc337da0de18b7413d51c714aa0db46 v129 21 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/COPYING: -------------------------------------------------------------------------------- 1 | Copyright (c) 2003-2010 Mark Borgerding 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. 10 | 11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 12 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/Makefile: -------------------------------------------------------------------------------- 1 | KFVER=130 2 | 3 | doc: 4 | @echo "Start by reading the README file. If you want to build and test lots of stuff, do a 'make testall'" 5 | @echo "but be aware that 'make testall' has dependencies that the basic kissfft software does not." 6 | @echo "It is generally unneeded to run these tests yourself, unless you plan on changing the inner workings" 7 | @echo "of kissfft and would like to make use of its regression tests." 8 | 9 | testall: 10 | # The simd and int32_t types may or may not work on your machine 11 | make -C test DATATYPE=simd CFLAGADD="$(CFLAGADD)" test 12 | make -C test DATATYPE=int32_t CFLAGADD="$(CFLAGADD)" test 13 | make -C test DATATYPE=int16_t CFLAGADD="$(CFLAGADD)" test 14 | make -C test DATATYPE=float CFLAGADD="$(CFLAGADD)" test 15 | make -C test DATATYPE=double CFLAGADD="$(CFLAGADD)" test 16 | echo "all tests passed" 17 | 18 | tarball: clean 19 | hg archive -r v$(KFVER) -t tgz kiss_fft$(KFVER).tar.gz 20 | hg archive -r v$(KFVER) -t zip kiss_fft$(KFVER).zip 21 | 22 | clean: 23 | cd test && make clean 24 | cd tools && make clean 25 | rm -f kiss_fft*.tar.gz *~ *.pyc kiss_fft*.zip 26 | 27 | asm: kiss_fft.s 28 | 29 | kiss_fft.s: kiss_fft.c kiss_fft.h _kiss_fft_guts.h 30 | [ -e kiss_fft.s ] && mv kiss_fft.s kiss_fft.s~ || true 31 | gcc -S kiss_fft.c -O3 -mtune=native -ffast-math -fomit-frame-pointer -unroll-loops -dA -fverbose-asm 32 | gcc -o kiss_fft_short.s -S kiss_fft.c -O3 -mtune=native -ffast-math -fomit-frame-pointer -dA -fverbose-asm -DFIXED_POINT 33 | [ -e kiss_fft.s~ ] && diff kiss_fft.s~ kiss_fft.s || true 34 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/TIPS: -------------------------------------------------------------------------------- 1 | Speed: 2 | * If you want to use multiple cores, then compile with -openmp or -fopenmp (see your compiler docs). 3 | Realize that larger FFTs will reap more benefit than smaller FFTs. This generally uses more CPU time, but 4 | less wall time. 5 | 6 | * experiment with compiler flags 7 | Special thanks to Oscar Lesta. He suggested some compiler flags 8 | for gcc that make a big difference. They shave 10-15% off 9 | execution time on some systems. Try some combination of: 10 | -march=pentiumpro 11 | -ffast-math 12 | -fomit-frame-pointer 13 | 14 | * If the input data has no imaginary component, use the kiss_fftr code under tools/. 15 | Real ffts are roughly twice as fast as complex. 16 | 17 | * If you can rearrange your code to do 4 FFTs in parallel and you are on a recent Intel or AMD machine, 18 | then you might want to experiment with the USE_SIMD code. See README.simd 19 | 20 | 21 | Reducing code size: 22 | * remove some of the butterflies. There are currently butterflies optimized for radices 23 | 2,3,4,5. It is worth mentioning that you can still use FFT sizes that contain 24 | other factors, they just won't be quite as fast. You can decide for yourself 25 | whether to keep radix 2 or 4. If you do some work in this area, let me 26 | know what you find. 27 | 28 | * For platforms where ROM/code space is more plentiful than RAM, 29 | consider creating a hardcoded kiss_fft_state. In other words, decide which 30 | FFT size(s) you want and make a structure with the correct factors and twiddles. 31 | 32 | * Frank van der Hulst offered numerous suggestions for smaller code size and correct operation 33 | on embedded targets. "I'm happy to help anyone who is trying to implement KISSFFT on a micro" 34 | 35 | Some of these were rolled into the mainline code base: 36 | - using long casts to promote intermediate results of short*short multiplication 37 | - delaying allocation of buffers that are sometimes unused. 38 | In some cases, it may be desirable to limit capability in order to better suit the target: 39 | - predefining the twiddle tables for the desired fft size. 40 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/test/benchfftw.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include "pstats.h" 6 | 7 | #ifdef DATATYPEdouble 8 | 9 | #define CPXTYPE fftw_complex 10 | #define PLAN fftw_plan 11 | #define FFTMALLOC fftw_malloc 12 | #define MAKEPLAN fftw_plan_dft_1d 13 | #define DOFFT fftw_execute 14 | #define DESTROYPLAN fftw_destroy_plan 15 | #define FFTFREE fftw_free 16 | 17 | #elif defined(DATATYPEfloat) 18 | 19 | #define CPXTYPE fftwf_complex 20 | #define PLAN fftwf_plan 21 | #define FFTMALLOC fftwf_malloc 22 | #define MAKEPLAN fftwf_plan_dft_1d 23 | #define DOFFT fftwf_execute 24 | #define DESTROYPLAN fftwf_destroy_plan 25 | #define FFTFREE fftwf_free 26 | 27 | #endif 28 | 29 | #ifndef CPXTYPE 30 | int main(void) 31 | { 32 | fprintf(stderr,"Datatype not available in FFTW\n" ); 33 | return 0; 34 | } 35 | #else 36 | int main(int argc,char ** argv) 37 | { 38 | int nfft=1024; 39 | int isinverse=0; 40 | int numffts=1000,i; 41 | 42 | CPXTYPE * in=NULL; 43 | CPXTYPE * out=NULL; 44 | PLAN p; 45 | 46 | pstats_init(); 47 | 48 | while (1) { 49 | int c = getopt (argc, argv, "n:ix:h"); 50 | if (c == -1) 51 | break; 52 | switch (c) { 53 | case 'n': 54 | nfft = atoi (optarg); 55 | break; 56 | case 'x': 57 | numffts = atoi (optarg); 58 | break; 59 | case 'i': 60 | isinverse = 1; 61 | break; 62 | case 'h': 63 | case '?': 64 | default: 65 | fprintf(stderr,"options:\n-n N: complex fft length\n-i: inverse\n-x N: number of ffts to compute\n" 66 | ""); 67 | } 68 | } 69 | 70 | in=FFTMALLOC(sizeof(CPXTYPE) * nfft); 71 | out=FFTMALLOC(sizeof(CPXTYPE) * nfft); 72 | for (i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include "pstats.h" 8 | 9 | static struct tms tms_beg; 10 | static struct tms tms_end; 11 | static int has_times = 0; 12 | 13 | 14 | void pstats_init(void) 15 | { 16 | has_times = times(&tms_beg) != -1; 17 | } 18 | 19 | static void tms_report(void) 20 | { 21 | double cputime; 22 | if (! has_times ) 23 | return; 24 | times(&tms_end); 25 | cputime = ( ((float)tms_end.tms_utime + tms_end.tms_stime + tms_end.tms_cutime + tms_end.tms_cstime ) - 26 | ((float)tms_beg.tms_utime + tms_beg.tms_stime + tms_beg.tms_cutime + tms_beg.tms_cstime ) ) 27 | / sysconf(_SC_CLK_TCK); 28 | fprintf(stderr,"\tcputime=%.3f\n" , cputime); 29 | } 30 | 31 | static void ps_report(void) 32 | { 33 | char buf[1024]; 34 | #ifdef __APPLE__ /* MAC OS X */ 35 | sprintf(buf,"ps -o command,majflt,minflt,rss,pagein,vsz -p %d 1>&2",getpid() ); 36 | #else /* GNU/Linux */ 37 | sprintf(buf,"ps -o comm,majflt,minflt,rss,drs,pagein,sz,trs,vsz %d 1>&2",getpid() ); 38 | #endif 39 | if (system( buf )==-1) { 40 | perror("system call to ps failed"); 41 | } 42 | } 43 | 44 | void pstats_report() 45 | { 46 | ps_report(); 47 | tms_report(); 48 | } 49 | 50 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/test/pstats.h: -------------------------------------------------------------------------------- 1 | #ifndef PSTATS_H 2 | #define PSTATS_H 3 | 4 | void pstats_init(void); 5 | void pstats_report(void); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/test/tailscrap.m: -------------------------------------------------------------------------------- 1 | function maxabsdiff=tailscrap() 2 | % test code for circular convolution with the scrapped portion 3 | % at the tail of the buffer, rather than the front 4 | % 5 | % The idea is to rotate the zero-padded h (impulse response) buffer 6 | % to the left nh-1 samples, rotating the junk samples as well. 7 | % This could be very handy in avoiding buffer copies during fast filtering. 8 | nh=10; 9 | nfft=256; 10 | 11 | h=rand(1,nh); 12 | x=rand(1,nfft); 13 | 14 | hpad=[ h(nh) zeros(1,nfft-nh) h(1:nh-1) ]; 15 | 16 | % baseline comparison 17 | y1 = filter(h,1,x); 18 | y1_notrans = y1(nh:nfft); 19 | 20 | % fast convolution 21 | y2 = ifft( fft(hpad) .* fft(x) ); 22 | y2_notrans=y2(1:nfft-nh+1); 23 | 24 | maxabsdiff = max(abs(y2_notrans - y1_notrans)) 25 | 26 | end 27 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/test/test_vs_dft.c: -------------------------------------------------------------------------------- 1 | #include "kiss_fft.h" 2 | 3 | 4 | void check(kiss_fft_cpx * in,kiss_fft_cpx * out,int nfft,int isinverse) 5 | { 6 | int bin,k; 7 | double errpow=0,sigpow=0; 8 | 9 | for (bin=0;bin1) { 64 | int k; 65 | for (k=1;k 3 | #include 4 | #include 5 | 6 | #include 7 | static inline 8 | double curtime(void) 9 | { 10 | struct timeval tv; 11 | gettimeofday(&tv, NULL); 12 | return (double)tv.tv_sec + (double)tv.tv_usec*.000001; 13 | } 14 | 15 | using namespace std; 16 | 17 | template 18 | void dotest(int nfft) 19 | { 20 | typedef kissfft FFT; 21 | typedef std::complex cpx_type; 22 | 23 | cout << "type:" << typeid(T).name() << " nfft:" << nfft; 24 | 25 | FFT fft(nfft,false); 26 | 27 | vector inbuf(nfft); 28 | vector outbuf(nfft); 29 | for (int k=0;k acc = 0; 39 | long double phinc = 2*k0* M_PIl / nfft; 40 | for (int k1=0;k1 x(inbuf[k1].real(),inbuf[k1].imag()); 42 | acc += x * exp( complex(0,-k1*phinc) ); 43 | } 44 | totalpower += norm(acc); 45 | complex x(outbuf[k0].real(),outbuf[k0].imag()); 46 | complex dif = acc - x; 47 | difpower += norm(dif); 48 | } 49 | cout << " RMSE:" << sqrt(difpower/totalpower) << "\t"; 50 | 51 | double t0 = curtime(); 52 | int nits=20e6/nfft; 53 | for (int k=0;k1) { 63 | for (int k=1;k(nfft); dotest(nfft); dotest(nfft); 66 | } 67 | }else{ 68 | dotest(32); dotest(32); dotest(32); 69 | dotest(1024); dotest(1024); dotest(1024); 70 | dotest(840); dotest(840); dotest(840); 71 | } 72 | return 0; 73 | } 74 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/tools/Makefile: -------------------------------------------------------------------------------- 1 | WARNINGS=-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return \ 2 | -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast \ 3 | -Wwrite-strings 4 | 5 | ifeq "$(DATATYPE)" "" 6 | DATATYPE=float 7 | endif 8 | 9 | ifeq "$(DATATYPE)" "int32_t" 10 | TYPEFLAGS=-DFIXED_POINT=32 11 | endif 12 | 13 | ifeq "$(DATATYPE)" "int16_t" 14 | TYPEFLAGS=-DFIXED_POINT=16 15 | endif 16 | 17 | ifeq "$(DATATYPE)" "simd" 18 | TYPEFLAGS=-DUSE_SIMD=1 -msse 19 | endif 20 | 21 | ifeq "$(TYPEFLAGS)" "" 22 | TYPEFLAGS=-Dkiss_fft_scalar=$(DATATYPE) 23 | endif 24 | 25 | ifneq ("$(KISS_FFT_USE_ALLOCA)","") 26 | CFLAGS+= -DKISS_FFT_USE_ALLOCA=1 27 | endif 28 | CFLAGS+= $(CFLAGADD) 29 | 30 | 31 | FFTUTIL=fft_$(DATATYPE) 32 | FASTFILT=fastconv_$(DATATYPE) 33 | FASTFILTREAL=fastconvr_$(DATATYPE) 34 | PSDPNG=psdpng_$(DATATYPE) 35 | DUMPHDR=dumphdr_$(DATATYPE) 36 | 37 | all: $(FFTUTIL) $(FASTFILT) $(FASTFILTREAL) 38 | # $(PSDPNG) 39 | # $(DUMPHDR) 40 | 41 | #CFLAGS=-Wall -O3 -pedantic -march=pentiumpro -ffast-math -fomit-frame-pointer $(WARNINGS) 42 | # If the above flags do not work, try the following 43 | CFLAGS=-Wall -O3 $(WARNINGS) 44 | # tip: try -openmp or -fopenmp to use multiple cores 45 | 46 | $(FASTFILTREAL): ../kiss_fft.c kiss_fastfir.c kiss_fftr.c 47 | $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) -DREAL_FASTFIR $+ -DFAST_FILT_UTIL -lm 48 | 49 | $(FASTFILT): ../kiss_fft.c kiss_fastfir.c 50 | $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -DFAST_FILT_UTIL -lm 51 | 52 | $(FFTUTIL): ../kiss_fft.c fftutil.c kiss_fftnd.c kiss_fftr.c kiss_fftndr.c 53 | $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm 54 | 55 | $(PSDPNG): ../kiss_fft.c psdpng.c kiss_fftr.c 56 | $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lpng -lm 57 | 58 | $(DUMPHDR): ../kiss_fft.c dumphdr.c 59 | $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm 60 | 61 | clean: 62 | rm -f *~ fft fft_* fastconv fastconv_* fastconvr fastconvr_* psdpng psdpng_* 63 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/tools/kfc.h: -------------------------------------------------------------------------------- 1 | #ifndef KFC_H 2 | #define KFC_H 3 | #include "kiss_fft.h" 4 | 5 | #ifdef __cplusplus 6 | extern "C" { 7 | #endif 8 | 9 | /* 10 | KFC -- Kiss FFT Cache 11 | 12 | Not needing to deal with kiss_fft_alloc and a config 13 | object may be handy for a lot of programs. 14 | 15 | KFC uses the underlying KISS FFT functions, but caches the config object. 16 | The first time kfc_fft or kfc_ifft for a given FFT size, the cfg 17 | object is created for it. All subsequent calls use the cached 18 | configuration object. 19 | 20 | NOTE: 21 | You should probably not use this if your program will be using a lot 22 | of various sizes of FFTs. There is a linear search through the 23 | cached objects. If you are only using one or two FFT sizes, this 24 | will be negligible. Otherwise, you may want to use another method 25 | of managing the cfg objects. 26 | 27 | There is no automated cleanup of the cached objects. This could lead 28 | to large memory usage in a program that uses a lot of *DIFFERENT* 29 | sized FFTs. If you want to force all cached cfg objects to be freed, 30 | call kfc_cleanup. 31 | 32 | */ 33 | 34 | /*forward complex FFT */ 35 | void kfc_fft(int nfft, const kiss_fft_cpx * fin,kiss_fft_cpx * fout); 36 | /*reverse complex FFT */ 37 | void kfc_ifft(int nfft, const kiss_fft_cpx * fin,kiss_fft_cpx * fout); 38 | 39 | /*free all cached objects*/ 40 | void kfc_cleanup(void); 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/tools/kiss_fftnd.h: -------------------------------------------------------------------------------- 1 | #ifndef KISS_FFTND_H 2 | #define KISS_FFTND_H 3 | 4 | #include "kiss_fft.h" 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | typedef struct kiss_fftnd_state * kiss_fftnd_cfg; 11 | 12 | kiss_fftnd_cfg kiss_fftnd_alloc(const int *dims,int ndims,int inverse_fft,void*mem,size_t*lenmem); 13 | void kiss_fftnd(kiss_fftnd_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout); 14 | 15 | #ifdef __cplusplus 16 | } 17 | #endif 18 | #endif 19 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/tools/kiss_fftndr.h: -------------------------------------------------------------------------------- 1 | #ifndef KISS_NDR_H 2 | #define KISS_NDR_H 3 | 4 | #include "kiss_fft.h" 5 | #include "kiss_fftr.h" 6 | #include "kiss_fftnd.h" 7 | 8 | #ifdef __cplusplus 9 | extern "C" { 10 | #endif 11 | 12 | typedef struct kiss_fftndr_state *kiss_fftndr_cfg; 13 | 14 | 15 | kiss_fftndr_cfg kiss_fftndr_alloc(const int *dims,int ndims,int inverse_fft,void*mem,size_t*lenmem); 16 | /* 17 | dims[0] must be even 18 | 19 | If you don't care to allocate space, use mem = lenmem = NULL 20 | */ 21 | 22 | 23 | void kiss_fftndr( 24 | kiss_fftndr_cfg cfg, 25 | const kiss_fft_scalar *timedata, 26 | kiss_fft_cpx *freqdata); 27 | /* 28 | input timedata has dims[0] X dims[1] X ... X dims[ndims-1] scalar points 29 | output freqdata has dims[0] X dims[1] X ... X dims[ndims-1]/2+1 complex points 30 | */ 31 | 32 | void kiss_fftndri( 33 | kiss_fftndr_cfg cfg, 34 | const kiss_fft_cpx *freqdata, 35 | kiss_fft_scalar *timedata); 36 | /* 37 | input and output dimensions are the exact opposite of kiss_fftndr 38 | */ 39 | 40 | 41 | #define kiss_fftr_free free 42 | 43 | #ifdef __cplusplus 44 | } 45 | #endif 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /Source/dependencies/kiss_fft130/tools/kiss_fftr.h: -------------------------------------------------------------------------------- 1 | #ifndef KISS_FTR_H 2 | #define KISS_FTR_H 3 | 4 | #include "../kiss_fft.h" 5 | #ifdef __cplusplus 6 | extern "C" { 7 | #endif 8 | 9 | 10 | /* 11 | 12 | Real optimized version can save about 45% cpu time vs. complex fft of a real seq. 13 | 14 | 15 | 16 | */ 17 | 18 | typedef struct kiss_fftr_state *kiss_fftr_cfg; 19 | 20 | 21 | kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); 22 | /* 23 | nfft must be even 24 | 25 | If you don't care to allocate space, use mem = lenmem = NULL 26 | */ 27 | 28 | 29 | void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); 30 | /* 31 | input timedata has nfft scalar points 32 | output freqdata has nfft/2+1 complex points 33 | */ 34 | 35 | void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); 36 | /* 37 | input freqdata has nfft/2+1 complex points 38 | output timedata has nfft scalar points 39 | */ 40 | 41 | #define kiss_fftr_free free 42 | 43 | #ifdef __cplusplus 44 | } 45 | #endif 46 | #endif 47 | -------------------------------------------------------------------------------- /deswp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # WARNING: This is not a makefile! It is provided only to give a sense of the commands 4 | # necessary to build this whole project. 5 | 6 | set -e 7 | 8 | echo "Cleaning all *.sw* and *~ files" 9 | 10 | find . -name \*.sw* -type f -delete 11 | find . -name \*~ -type f -delete 12 | 13 | set +e 14 | -------------------------------------------------------------------------------- /graph_04_mod/Makefile: -------------------------------------------------------------------------------- 1 | LDLIBS=-lm -lglut -lGLEW -lGL 2 | all: graph 3 | clean: 4 | rm -f *.o graph 5 | graph: ../common/shader_utils.o 6 | .PHONY: all clean 7 | -------------------------------------------------------------------------------- /graph_04_mod/graph.f.glsl: -------------------------------------------------------------------------------- 1 | varying vec4 graph_coord; 2 | 3 | void main(void) { 4 | gl_FragColor = graph_coord / 2.0 + 0.5; 5 | } 6 | -------------------------------------------------------------------------------- /graph_04_mod/graph.v.glsl: -------------------------------------------------------------------------------- 1 | attribute vec2 coord2d; 2 | varying vec4 graph_coord; 3 | uniform mat4 texture_transform; 4 | uniform mat4 vertex_transform; 5 | uniform sampler2D mytexture; 6 | 7 | void main(void) { 8 | graph_coord = texture_transform * vec4(coord2d, 0, 1); 9 | graph_coord.z = (texture2D(mytexture, graph_coord.xy / 2.0 + 0.5).r); 10 | 11 | gl_Position = vertex_transform * vec4(coord2d, graph_coord.z, 1); 12 | } 13 | -------------------------------------------------------------------------------- /graph_04_mod/shader_utils.h: -------------------------------------------------------------------------------- 1 | /** 2 | * From the OpenGL Programming wikibook: http://en.wikibooks.org/wiki/OpenGL_Programming 3 | * This file is in the public domain. 4 | * Contributors: Sylvain Beucler 5 | */ 6 | #ifndef _CREATE_SHADER_H 7 | #define _CREATE_SHADER_H 8 | #include 9 | char* file_read(const char* filename); 10 | void print_log(GLuint object); 11 | GLuint create_shader(const char* filename, GLenum type); 12 | GLuint create_program(const char* vertexfile, const char *fragmentfile); 13 | GLuint create_gs_program(const char* vertexfile, const char *geometryfile, const char *fragmentfile, GLint input, GLint output, GLint vertices); 14 | GLint get_attrib(GLuint program, const char *name); 15 | GLint get_uniform(GLuint program, const char *name); 16 | #endif 17 | -------------------------------------------------------------------------------- /images/button_down_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_down_pause.png -------------------------------------------------------------------------------- /images/button_down_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_down_play.png -------------------------------------------------------------------------------- /images/button_down_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_down_stop.png -------------------------------------------------------------------------------- /images/button_hover_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_hover_pause.png -------------------------------------------------------------------------------- /images/button_hover_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_hover_play.png -------------------------------------------------------------------------------- /images/button_hover_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_hover_stop.png -------------------------------------------------------------------------------- /images/button_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_pause.png -------------------------------------------------------------------------------- /images/button_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_play.png -------------------------------------------------------------------------------- /images/button_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/images/button_stop.png -------------------------------------------------------------------------------- /test_sound.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chrisdonahue/opengl_spectrogram/f02436f52af9432b02bf9c40d0abd003a0e81097/test_sound.wav -------------------------------------------------------------------------------- /todo.txt: -------------------------------------------------------------------------------- 1 | links to read: 2 | http://www.lifeorange.com/SOFTWARE/audiocpptutorial.html 3 | --------------------------------------------------------------------------------