expo-juce 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1611) hide show
  1. package/README.md +34 -0
  2. package/build/index.d.ts +21 -24
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +44 -48
  5. package/build/index.js.map +1 -1
  6. package/ios/BeeperAudioEngine.h +45 -0
  7. package/ios/BeeperAudioEngine.mm +352 -0
  8. package/ios/ExpoJuce.podspec +31 -8
  9. package/ios/ExpoJuceBridge.h +12 -12
  10. package/ios/ExpoJuceBridge.m +35 -100
  11. package/ios/ExpoJuceModule.swift +33 -55
  12. package/ios/JuceConfig.h +49 -14
  13. package/ios/JuceModule_audio_basics.mm +2 -0
  14. package/ios/JuceModule_audio_devices.mm +2 -0
  15. package/ios/JuceModule_audio_formats.mm +2 -0
  16. package/ios/JuceModule_audio_processors.mm +2 -0
  17. package/ios/JuceModule_core.mm +5 -0
  18. package/ios/JuceModule_data_structures.mm +2 -0
  19. package/ios/JuceModule_dsp.mm +2 -0
  20. package/ios/JuceModule_events.mm +2 -0
  21. package/ios/JuceModule_graphics.mm +2 -0
  22. package/ios/JuceModule_gui_basics.mm +2 -0
  23. package/ios/JuceModule_gui_extra.mm +2 -0
  24. package/ios/JuceModule_harfbuzz.mm +4 -0
  25. package/ios/PolySynthProcessor.h +83 -0
  26. package/ios/PolySynthProcessor.mm +164 -0
  27. package/ios/TransportEngine.h +35 -0
  28. package/ios/TransportEngine.mm +50 -0
  29. package/ios/Voice.h +59 -0
  30. package/ios/Voice.mm +157 -0
  31. package/ios/VoiceAllocator.h +22 -0
  32. package/ios/VoiceAllocator.mm +88 -0
  33. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp +1957 -0
  34. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h +586 -0
  35. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp +65 -0
  36. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODevice.h +368 -0
  37. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp +152 -0
  38. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h +200 -0
  39. package/ios/juce_modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp +57 -0
  40. package/ios/juce_modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h +71 -0
  41. package/ios/juce_modules/juce_audio_devices/juce_audio_devices.cpp +277 -0
  42. package/ios/juce_modules/juce_audio_devices/juce_audio_devices.h +201 -0
  43. package/ios/juce_modules/juce_audio_devices/juce_audio_devices.mm +35 -0
  44. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp +246 -0
  45. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiDevices.h +482 -0
  46. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp +170 -0
  47. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h +125 -0
  48. package/ios/juce_modules/juce_audio_devices/midi_io/ump/juce_UMPBytestreamInputHandler.h +153 -0
  49. package/ios/juce_modules/juce_audio_devices/midi_io/ump/juce_UMPU32InputHandler.h +165 -0
  50. package/ios/juce_modules/juce_audio_devices/native/java/app/com/rmsl/juce/JuceMidiSupport.java +1121 -0
  51. package/ios/juce_modules/juce_audio_devices/native/juce_ALSA_linux.cpp +1313 -0
  52. package/ios/juce_modules/juce_audio_devices/native/juce_ASIO_windows.cpp +1654 -0
  53. package/ios/juce_modules/juce_audio_devices/native/juce_Audio_android.cpp +482 -0
  54. package/ios/juce_modules/juce_audio_devices/native/juce_Audio_ios.cpp +1508 -0
  55. package/ios/juce_modules/juce_audio_devices/native/juce_Audio_ios.h +106 -0
  56. package/ios/juce_modules/juce_audio_devices/native/juce_Bela_linux.cpp +612 -0
  57. package/ios/juce_modules/juce_audio_devices/native/juce_CoreAudio_mac.cpp +2315 -0
  58. package/ios/juce_modules/juce_audio_devices/native/juce_CoreMidi_mac.mm +1280 -0
  59. package/ios/juce_modules/juce_audio_devices/native/juce_DirectSound_windows.cpp +1304 -0
  60. package/ios/juce_modules/juce_audio_devices/native/juce_HighPerformanceAudioHelpers_android.h +137 -0
  61. package/ios/juce_modules/juce_audio_devices/native/juce_JackAudio_linux.cpp +681 -0
  62. package/ios/juce_modules/juce_audio_devices/native/juce_Midi_android.cpp +1183 -0
  63. package/ios/juce_modules/juce_audio_devices/native/juce_Midi_linux.cpp +788 -0
  64. package/ios/juce_modules/juce_audio_devices/native/juce_Midi_windows.cpp +2038 -0
  65. package/ios/juce_modules/juce_audio_devices/native/juce_Oboe_android.cpp +1440 -0
  66. package/ios/juce_modules/juce_audio_devices/native/juce_OpenSL_android.cpp +1306 -0
  67. package/ios/juce_modules/juce_audio_devices/native/juce_WASAPI_windows.cpp +2032 -0
  68. package/ios/juce_modules/juce_audio_devices/native/oboe/.clang-tidy +3 -0
  69. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStream.h +706 -0
  70. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBase.h +343 -0
  71. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBuilder.h +670 -0
  72. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamCallback.h +193 -0
  73. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Definitions.h +897 -0
  74. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/FifoBuffer.h +164 -0
  75. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/FifoControllerBase.h +112 -0
  76. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/FullDuplexStream.h +324 -0
  77. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/LatencyTuner.h +150 -0
  78. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Oboe.h +40 -0
  79. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/OboeExtensions.h +64 -0
  80. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/ResultWithValue.h +155 -0
  81. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/StabilizedCallback.h +75 -0
  82. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Utilities.h +99 -0
  83. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Version.h +92 -0
  84. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AAudioExtensions.h +180 -0
  85. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AAudioLoader.cpp +506 -0
  86. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AAudioLoader.h +299 -0
  87. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AudioStreamAAudio.cpp +868 -0
  88. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AudioStreamAAudio.h +152 -0
  89. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AdpfWrapper.cpp +124 -0
  90. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AdpfWrapper.h +85 -0
  91. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioClock.h +75 -0
  92. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioSourceCaller.cpp +38 -0
  93. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioSourceCaller.h +83 -0
  94. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioStream.cpp +222 -0
  95. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioStreamBuilder.cpp +224 -0
  96. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/DataConversionFlowGraph.cpp +266 -0
  97. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/DataConversionFlowGraph.h +86 -0
  98. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FilterAudioStream.cpp +106 -0
  99. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FilterAudioStream.h +227 -0
  100. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockAdapter.cpp +38 -0
  101. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockAdapter.h +67 -0
  102. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockReader.cpp +73 -0
  103. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockReader.h +60 -0
  104. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockWriter.cpp +73 -0
  105. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockWriter.h +54 -0
  106. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/LatencyTuner.cpp +108 -0
  107. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/MonotonicCounter.h +112 -0
  108. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/OboeDebug.h +41 -0
  109. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/OboeExtensions.cpp +36 -0
  110. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/QuirksManager.cpp +311 -0
  111. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/QuirksManager.h +134 -0
  112. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceFloatCaller.cpp +30 -0
  113. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceFloatCaller.h +44 -0
  114. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI16Caller.cpp +47 -0
  115. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI16Caller.h +49 -0
  116. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI24Caller.cpp +56 -0
  117. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI24Caller.h +53 -0
  118. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI32Caller.cpp +47 -0
  119. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI32Caller.h +53 -0
  120. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/StabilizedCallback.cpp +112 -0
  121. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Trace.cpp +75 -0
  122. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Trace.h +31 -0
  123. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Utilities.cpp +333 -0
  124. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Version.cpp +28 -0
  125. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoBuffer.cpp +178 -0
  126. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoController.cpp +30 -0
  127. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoController.h +62 -0
  128. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoControllerBase.cpp +68 -0
  129. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoControllerIndirect.cpp +32 -0
  130. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoControllerIndirect.h +66 -0
  131. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ChannelCountConverter.cpp +52 -0
  132. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ChannelCountConverter.h +52 -0
  133. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ClipToRange.cpp +38 -0
  134. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ClipToRange.h +68 -0
  135. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/FlowGraphNode.cpp +114 -0
  136. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/FlowGraphNode.h +450 -0
  137. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/FlowgraphUtilities.h +55 -0
  138. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/Limiter.cpp +67 -0
  139. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/Limiter.h +64 -0
  140. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ManyToMultiConverter.cpp +47 -0
  141. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ManyToMultiConverter.h +53 -0
  142. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoBlend.cpp +46 -0
  143. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoBlend.h +48 -0
  144. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoToMultiConverter.cpp +41 -0
  145. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoToMultiConverter.h +49 -0
  146. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToManyConverter.cpp +47 -0
  147. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToManyConverter.h +49 -0
  148. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToMonoConverter.cpp +41 -0
  149. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToMonoConverter.h +49 -0
  150. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/RampLinear.cpp +81 -0
  151. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/RampLinear.h +96 -0
  152. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.cpp +71 -0
  153. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h +63 -0
  154. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp +46 -0
  155. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h +45 -0
  156. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp +57 -0
  157. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h +43 -0
  158. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp +66 -0
  159. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.h +44 -0
  160. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.cpp +55 -0
  161. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h +40 -0
  162. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp +42 -0
  163. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h +44 -0
  164. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp +54 -0
  165. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h +42 -0
  166. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp +65 -0
  167. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.h +43 -0
  168. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI32.cpp +54 -0
  169. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI32.h +42 -0
  170. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/HyperbolicCosineWindow.h +71 -0
  171. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/IntegerRatio.cpp +50 -0
  172. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/IntegerRatio.h +54 -0
  173. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/KaiserWindow.h +90 -0
  174. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/LinearResampler.cpp +42 -0
  175. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/LinearResampler.h +47 -0
  176. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/MultiChannelResampler.cpp +171 -0
  177. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/MultiChannelResampler.h +281 -0
  178. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResampler.cpp +61 -0
  179. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResampler.h +53 -0
  180. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerMono.cpp +63 -0
  181. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerMono.h +41 -0
  182. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerStereo.cpp +79 -0
  183. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerStereo.h +41 -0
  184. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/ResamplerDefinitions.h +27 -0
  185. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResampler.cpp +72 -0
  186. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResampler.h +50 -0
  187. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResamplerStereo.cpp +81 -0
  188. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResamplerStereo.h +42 -0
  189. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioInputStreamOpenSLES.cpp +360 -0
  190. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioInputStreamOpenSLES.h +66 -0
  191. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioOutputStreamOpenSLES.cpp +462 -0
  192. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioOutputStreamOpenSLES.h +80 -0
  193. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamBuffered.cpp +285 -0
  194. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamBuffered.h +96 -0
  195. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamOpenSLES.cpp +499 -0
  196. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamOpenSLES.h +148 -0
  197. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/EngineOpenSLES.cpp +141 -0
  198. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/EngineOpenSLES.h +65 -0
  199. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OpenSLESUtilities.cpp +96 -0
  200. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OpenSLESUtilities.h +44 -0
  201. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OutputMixerOpenSLES.cpp +74 -0
  202. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OutputMixerOpenSLES.h +58 -0
  203. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp +193 -0
  204. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h +127 -0
  205. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp +295 -0
  206. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioTransportSource.h +192 -0
  207. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp +107 -0
  208. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormat.h +183 -0
  209. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp +212 -0
  210. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h +151 -0
  211. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py +175 -0
  212. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h +87 -0
  213. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/COPYING +13 -0
  214. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h +2117 -0
  215. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp +440 -0
  216. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c +240 -0
  217. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c +564 -0
  218. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h +182 -0
  219. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c +115 -0
  220. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c +127 -0
  221. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h +477 -0
  222. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c +413 -0
  223. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c +1140 -0
  224. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c +91 -0
  225. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c +272 -0
  226. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c +144 -0
  227. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c +53 -0
  228. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c +1541 -0
  229. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c +115 -0
  230. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c +291 -0
  231. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c +1249 -0
  232. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h +138 -0
  233. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c +727 -0
  234. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h +164 -0
  235. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h +42 -0
  236. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/COPYING +16 -0
  237. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c +73 -0
  238. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c +367 -0
  239. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h +260 -0
  240. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.meta.ttl +542 -0
  241. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.ttl +247 -0
  242. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c +235 -0
  243. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h +683 -0
  244. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/manifest.ttl +9 -0
  245. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h +523 -0
  246. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h +51 -0
  247. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.meta.ttl +157 -0
  248. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.ttl +67 -0
  249. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/manifest.ttl +9 -0
  250. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h +59 -0
  251. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h +484 -0
  252. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h +103 -0
  253. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.meta.ttl +905 -0
  254. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.ttl +674 -0
  255. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/manifest.ttl +15 -0
  256. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/meta.ttl +199 -0
  257. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/people.ttl +51 -0
  258. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h +73 -0
  259. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.meta.ttl +77 -0
  260. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.ttl +11 -0
  261. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/manifest.ttl +9 -0
  262. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h +160 -0
  263. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.meta.ttl +131 -0
  264. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.ttl +25 -0
  265. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/manifest.ttl +9 -0
  266. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h +255 -0
  267. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h +306 -0
  268. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.meta.ttl +246 -0
  269. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.ttl +86 -0
  270. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/manifest.ttl +9 -0
  271. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h +41 -0
  272. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.meta.ttl +75 -0
  273. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.ttl +11 -0
  274. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/manifest.ttl +9 -0
  275. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h +113 -0
  276. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.meta.ttl +126 -0
  277. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.ttl +48 -0
  278. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h +157 -0
  279. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/manifest.ttl +9 -0
  280. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/manifest.ttl +9 -0
  281. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h +248 -0
  282. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.meta.ttl +153 -0
  283. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.ttl +366 -0
  284. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/manifest.ttl +9 -0
  285. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h +48 -0
  286. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.meta.ttl +90 -0
  287. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.ttl +46 -0
  288. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/manifest.ttl +9 -0
  289. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h +149 -0
  290. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.meta.ttl +129 -0
  291. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.ttl +44 -0
  292. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/manifest.ttl +9 -0
  293. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h +68 -0
  294. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.meta.ttl +75 -0
  295. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.ttl +202 -0
  296. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/manifest.ttl +9 -0
  297. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h +73 -0
  298. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.meta.ttl +374 -0
  299. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.ttl +251 -0
  300. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/manifest.ttl +9 -0
  301. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h +77 -0
  302. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.meta.ttl +144 -0
  303. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.ttl +807 -0
  304. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/manifest.ttl +9 -0
  305. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h +53 -0
  306. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.meta.ttl +202 -0
  307. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.ttl +79 -0
  308. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/manifest.ttl +9 -0
  309. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h +48 -0
  310. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.meta.ttl +132 -0
  311. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.ttl +60 -0
  312. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/manifest.ttl +9 -0
  313. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h +89 -0
  314. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.meta.ttl +74 -0
  315. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.ttl +36 -0
  316. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/manifest.ttl +9 -0
  317. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h +392 -0
  318. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.meta.ttl +467 -0
  319. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.ttl +60 -0
  320. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/manifest.ttl +9 -0
  321. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h +59 -0
  322. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.meta.ttl +112 -0
  323. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.ttl +122 -0
  324. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/manifest.ttl +9 -0
  325. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h +543 -0
  326. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.meta.ttl +627 -0
  327. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.ttl +248 -0
  328. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/manifest.ttl +9 -0
  329. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h +75 -0
  330. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.meta.ttl +154 -0
  331. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.ttl +379 -0
  332. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/manifest.ttl +9 -0
  333. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h +121 -0
  334. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.meta.ttl +72 -0
  335. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.ttl +14 -0
  336. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/manifest.ttl +9 -0
  337. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h +140 -0
  338. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.meta.ttl +84 -0
  339. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.ttl +22 -0
  340. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/manifest.ttl +9 -0
  341. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h +183 -0
  342. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.meta.ttl +82 -0
  343. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.ttl +25 -0
  344. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/COPYING +13 -0
  345. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h +1059 -0
  346. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/.clang-tidy +18 -0
  347. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h +26 -0
  348. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c +132 -0
  349. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h +48 -0
  350. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h +98 -0
  351. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c +112 -0
  352. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h +120 -0
  353. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c +256 -0
  354. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c +1720 -0
  355. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c +393 -0
  356. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h +48 -0
  357. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c +425 -0
  358. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h +196 -0
  359. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h +98 -0
  360. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h +46 -0
  361. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c +377 -0
  362. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h +119 -0
  363. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c +179 -0
  364. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h +173 -0
  365. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c +82 -0
  366. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h +40 -0
  367. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c +506 -0
  368. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h +110 -0
  369. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c +1114 -0
  370. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h +42 -0
  371. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/COPYING +13 -0
  372. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h +642 -0
  373. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp +720 -0
  374. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c +1368 -0
  375. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h +61 -0
  376. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h +53 -0
  377. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c +767 -0
  378. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c +804 -0
  379. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c +216 -0
  380. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp +25 -0
  381. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c +203 -0
  382. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c +936 -0
  383. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h +187 -0
  384. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h +138 -0
  385. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c +141 -0
  386. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h +67 -0
  387. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c +230 -0
  388. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h +138 -0
  389. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h +42 -0
  390. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sratom/COPYING +13 -0
  391. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h +220 -0
  392. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c +919 -0
  393. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/VST3_License_Agreement.pdf +0 -0
  394. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/VST3_Usage_Guidelines.pdf +0 -0
  395. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp +52 -0
  396. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h +87 -0
  397. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp +641 -0
  398. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.h +306 -0
  399. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fcommandline.h +392 -0
  400. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.cpp +340 -0
  401. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.h +246 -0
  402. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.cpp +271 -0
  403. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.h +577 -0
  404. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.cpp +756 -0
  405. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.h +242 -0
  406. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.cpp +3962 -0
  407. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.h +767 -0
  408. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.cpp +737 -0
  409. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.h +150 -0
  410. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/thread/include/flock.h +184 -0
  411. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/thread/source/flock.cpp +146 -0
  412. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/helper.manifest +10 -0
  413. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/conststringtable.cpp +106 -0
  414. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/conststringtable.h +44 -0
  415. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/coreiids.cpp +40 -0
  416. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpop.h +25 -0
  417. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpush.h +40 -0
  418. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fplatform.h +333 -0
  419. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fstrdefs.h +291 -0
  420. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ftypes.h +176 -0
  421. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.cpp +502 -0
  422. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.h +564 -0
  423. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/futils.h +107 -0
  424. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fvariant.h +297 -0
  425. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ibstream.h +87 -0
  426. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/icloneable.h +41 -0
  427. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ipersistent.h +160 -0
  428. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ipluginbase.h +520 -0
  429. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/iplugincompatibility.h +122 -0
  430. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/istringresult.h +80 -0
  431. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/iupdatehandler.h +98 -0
  432. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/smartpointer.h +386 -0
  433. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/typesizecheck.h +55 -0
  434. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ustring.cpp +275 -0
  435. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ustring.h +116 -0
  436. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/gui/iplugview.h +287 -0
  437. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/gui/iplugviewcontentscalesupport.h +75 -0
  438. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstattributes.h +150 -0
  439. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstaudioprocessor.h +434 -0
  440. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstautomationstate.h +67 -0
  441. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstchannelcontextinfo.h +238 -0
  442. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstcomponent.h +205 -0
  443. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstcontextmenu.h +219 -0
  444. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstdataexchange.h +221 -0
  445. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsteditcontroller.h +657 -0
  446. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstevents.h +221 -0
  447. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsthostapplication.h +163 -0
  448. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstinterappaudio.h +142 -0
  449. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstmessage.h +97 -0
  450. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstmidicontrollers.h +118 -0
  451. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstmidilearn.h +106 -0
  452. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstnoteexpression.h +255 -0
  453. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstparameterchanges.h +145 -0
  454. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstparameterfunctionname.h +151 -0
  455. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstphysicalui.h +169 -0
  456. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstpluginterfacesupport.h +67 -0
  457. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstplugview.h +62 -0
  458. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstprefetchablesupport.h +99 -0
  459. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstprocesscontext.h +153 -0
  460. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstremapparamid.h +75 -0
  461. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstrepresentation.h +364 -0
  462. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsttestplugprovider.h +109 -0
  463. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstunits.h +271 -0
  464. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vstpshpack4.h +30 -0
  465. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vstspeaker.h +1318 -0
  466. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vsttypes.h +157 -0
  467. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/samples/vst-utilities/moduleinfotool/source/main.cpp +441 -0
  468. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.cpp +319 -0
  469. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.h +79 -0
  470. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.cpp +100 -0
  471. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.h +116 -0
  472. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/readfile.cpp +81 -0
  473. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/readfile.h +54 -0
  474. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.cpp +342 -0
  475. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.h +120 -0
  476. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module.cpp +340 -0
  477. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module.h +214 -0
  478. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module_linux.cpp +369 -0
  479. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module_mac.mm +395 -0
  480. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module_win32.cpp +647 -0
  481. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/pluginterfacesupport.cpp +134 -0
  482. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/pluginterfacesupport.h +70 -0
  483. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/json.h +3403 -0
  484. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/jsoncxx.h +427 -0
  485. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfo.h +100 -0
  486. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfocreator.cpp +309 -0
  487. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfocreator.h +67 -0
  488. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfoparser.cpp +537 -0
  489. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfoparser.h +68 -0
  490. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/optional.h +135 -0
  491. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/stringconvert.cpp +148 -0
  492. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/stringconvert.h +147 -0
  493. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/uid.h +286 -0
  494. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.cpp +99 -0
  495. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.h +172 -0
  496. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.cpp +216 -0
  497. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.h +118 -0
  498. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.cpp +180 -0
  499. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.h +110 -0
  500. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.cpp +701 -0
  501. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.h +374 -0
  502. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstinitiids.cpp +154 -0
  503. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.cpp +454 -0
  504. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.h +240 -0
  505. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.cpp +927 -0
  506. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.h +306 -0
  507. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARACommon.cpp +99 -0
  508. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARACommon.h +98 -0
  509. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARAHosting.cpp +490 -0
  510. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARAHosting.h +786 -0
  511. package/ios/juce_modules/juce_audio_processors/format_types/juce_AU_Shared.h +588 -0
  512. package/ios/juce_modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h +79 -0
  513. package/ios/juce_modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm +2947 -0
  514. package/ios/juce_modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp +728 -0
  515. package/ios/juce_modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h +79 -0
  516. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2Common.h +676 -0
  517. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp +5654 -0
  518. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h +87 -0
  519. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp +281 -0
  520. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2Resources.h +10241 -0
  521. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp +117 -0
  522. package/ios/juce_modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp +225 -0
  523. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3Common.h +1851 -0
  524. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3Headers.h +280 -0
  525. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp +4086 -0
  526. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h +95 -0
  527. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3PluginFormat_test.cpp +740 -0
  528. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTCommon.h +315 -0
  529. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h +229 -0
  530. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +3764 -0
  531. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h +141 -0
  532. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslcontextinfo.h +190 -0
  533. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipsleditcontroller.h +108 -0
  534. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslgainreduction.h +53 -0
  535. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslhostcommands.h +121 -0
  536. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslviewembedding.h +53 -0
  537. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslviewscaling.h +67 -0
  538. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/pslauextensions.h +57 -0
  539. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/pslvst2extensions.h +111 -0
  540. package/ios/juce_modules/juce_audio_processors/juce_audio_processors.cpp +246 -0
  541. package/ios/juce_modules/juce_audio_processors/juce_audio_processors.h +195 -0
  542. package/ios/juce_modules/juce_audio_processors/juce_audio_processors.mm +35 -0
  543. package/ios/juce_modules/juce_audio_processors/juce_audio_processors_ara.cpp +51 -0
  544. package/ios/juce_modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp +44 -0
  545. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp +294 -0
  546. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioPluginInstance.h +191 -0
  547. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessor.cpp +1655 -0
  548. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessor.h +1587 -0
  549. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp +230 -0
  550. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h +272 -0
  551. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorEditorHostContext.h +98 -0
  552. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp +2375 -0
  553. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h +453 -0
  554. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorListener.h +198 -0
  555. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h +370 -0
  556. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp +330 -0
  557. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h +263 -0
  558. package/ios/juce_modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp +633 -0
  559. package/ios/juce_modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h +74 -0
  560. package/ios/juce_modules/juce_audio_processors/processors/juce_HostedAudioProcessorParameter.h +61 -0
  561. package/ios/juce_modules/juce_audio_processors/processors/juce_PluginDescription.cpp +126 -0
  562. package/ios/juce_modules/juce_audio_processors/processors/juce_PluginDescription.h +189 -0
  563. package/ios/juce_modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp +651 -0
  564. package/ios/juce_modules/juce_audio_processors/scanning/juce_KnownPluginList.h +249 -0
  565. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp +148 -0
  566. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h +147 -0
  567. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp +690 -0
  568. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginListComponent.h +156 -0
  569. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADebug.h +76 -0
  570. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.cpp +985 -0
  571. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.h +538 -0
  572. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADocumentControllerCommon.cpp +80 -0
  573. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.cpp +302 -0
  574. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.h +983 -0
  575. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.cpp +123 -0
  576. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h +263 -0
  577. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.cpp +65 -0
  578. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.h +95 -0
  579. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp +163 -0
  580. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h +213 -0
  581. package/ios/juce_modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp +308 -0
  582. package/ios/juce_modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h +92 -0
  583. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp +104 -0
  584. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterBool.h +149 -0
  585. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp +145 -0
  586. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h +162 -0
  587. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp +113 -0
  588. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h +169 -0
  589. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp +146 -0
  590. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterInt.h +163 -0
  591. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp +56 -0
  592. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h +200 -0
  593. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp +997 -0
  594. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h +669 -0
  595. package/ios/juce_modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h +155 -0
  596. package/ios/juce_modules/juce_audio_processors/utilities/juce_FlagCache.h +191 -0
  597. package/ios/juce_modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp +442 -0
  598. package/ios/juce_modules/juce_audio_processors/utilities/juce_ParameterAttachments.h +400 -0
  599. package/ios/juce_modules/juce_audio_processors/utilities/juce_PluginHostType.cpp +328 -0
  600. package/ios/juce_modules/juce_audio_processors/utilities/juce_PluginHostType.h +265 -0
  601. package/ios/juce_modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp +60 -0
  602. package/ios/juce_modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h +129 -0
  603. package/ios/juce_modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp +48 -0
  604. package/ios/juce_modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h +83 -0
  605. package/ios/juce_modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h +119 -0
  606. package/ios/juce_modules/juce_core/native/juce_BasicNativeHeaders.h +6 -1
  607. package/ios/juce_modules/juce_graphics/colour/juce_Colour.cpp +726 -0
  608. package/ios/juce_modules/juce_graphics/colour/juce_Colour.h +429 -0
  609. package/ios/juce_modules/juce_graphics/colour/juce_ColourGradient.cpp +294 -0
  610. package/ios/juce_modules/juce_graphics/colour/juce_ColourGradient.h +255 -0
  611. package/ios/juce_modules/juce_graphics/colour/juce_Colours.cpp +205 -0
  612. package/ios/juce_modules/juce_graphics/colour/juce_Colours.h +200 -0
  613. package/ios/juce_modules/juce_graphics/colour/juce_FillType.cpp +166 -0
  614. package/ios/juce_modules/juce_graphics/colour/juce_FillType.h +165 -0
  615. package/ios/juce_modules/juce_graphics/colour/juce_PixelFormats.h +749 -0
  616. package/ios/juce_modules/juce_graphics/contexts/juce_GraphicsContext.cpp +857 -0
  617. package/ios/juce_modules/juce_graphics/contexts/juce_GraphicsContext.h +758 -0
  618. package/ios/juce_modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h +186 -0
  619. package/ios/juce_modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp +59 -0
  620. package/ios/juce_modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h +66 -0
  621. package/ios/juce_modules/juce_graphics/detail/juce_Ranges.cpp +793 -0
  622. package/ios/juce_modules/juce_graphics/detail/juce_Ranges.h +1014 -0
  623. package/ios/juce_modules/juce_graphics/effects/juce_DropShadowEffect.cpp +152 -0
  624. package/ios/juce_modules/juce_graphics/effects/juce_DropShadowEffect.h +122 -0
  625. package/ios/juce_modules/juce_graphics/effects/juce_GlowEffect.cpp +59 -0
  626. package/ios/juce_modules/juce_graphics/effects/juce_GlowEffect.h +86 -0
  627. package/ios/juce_modules/juce_graphics/effects/juce_ImageEffectFilter.h +80 -0
  628. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/CBDT/CBDT.hh +1031 -0
  629. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/COLR/COLR.hh +2745 -0
  630. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/COLR/colrv1-closure.hh +137 -0
  631. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/CPAL/CPAL.hh +358 -0
  632. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/sbix/sbix.hh +448 -0
  633. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/svg/svg.hh +152 -0
  634. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/Coverage.hh +352 -0
  635. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/CoverageFormat1.hh +133 -0
  636. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/CoverageFormat2.hh +239 -0
  637. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/RangeRecord.hh +97 -0
  638. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GDEF/GDEF.hh +1044 -0
  639. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/Anchor.hh +84 -0
  640. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorFormat1.hh +46 -0
  641. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorFormat2.hh +58 -0
  642. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorFormat3.hh +120 -0
  643. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorMatrix.hh +87 -0
  644. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ChainContextPos.hh +14 -0
  645. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/Common.hh +33 -0
  646. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ContextPos.hh +14 -0
  647. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/CursivePos.hh +35 -0
  648. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh +311 -0
  649. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ExtensionPos.hh +17 -0
  650. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/GPOS.hh +171 -0
  651. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/LigatureArray.hh +57 -0
  652. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkArray.hh +128 -0
  653. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkBasePos.hh +41 -0
  654. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkBasePosFormat1.hh +243 -0
  655. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkLigPos.hh +41 -0
  656. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkLigPosFormat1.hh +224 -0
  657. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkMarkPos.hh +42 -0
  658. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkMarkPosFormat1.hh +231 -0
  659. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkRecord.hh +51 -0
  660. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairPos.hh +46 -0
  661. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairPosFormat1.hh +233 -0
  662. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairPosFormat2.hh +365 -0
  663. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairSet.hh +210 -0
  664. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairValueRecord.hh +99 -0
  665. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PosLookup.hh +79 -0
  666. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PosLookupSubTable.hh +79 -0
  667. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/SinglePos.hh +98 -0
  668. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh +190 -0
  669. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/SinglePosFormat2.hh +213 -0
  670. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ValueFormat.hh +441 -0
  671. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/AlternateSet.hh +126 -0
  672. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/AlternateSubst.hh +62 -0
  673. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/AlternateSubstFormat1.hh +128 -0
  674. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ChainContextSubst.hh +18 -0
  675. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/Common.hh +19 -0
  676. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ContextSubst.hh +18 -0
  677. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ExtensionSubst.hh +22 -0
  678. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/GSUB.hh +61 -0
  679. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/Ligature.hh +203 -0
  680. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/LigatureSet.hh +188 -0
  681. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/LigatureSubst.hh +71 -0
  682. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/LigatureSubstFormat1.hh +166 -0
  683. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/MultipleSubst.hh +62 -0
  684. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/MultipleSubstFormat1.hh +130 -0
  685. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ReverseChainSingleSubst.hh +36 -0
  686. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh +245 -0
  687. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/Sequence.hh +165 -0
  688. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SingleSubst.hh +103 -0
  689. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SingleSubstFormat1.hh +204 -0
  690. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SingleSubstFormat2.hh +176 -0
  691. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SubstLookup.hh +220 -0
  692. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SubstLookupSubTable.hh +77 -0
  693. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/types.hh +66 -0
  694. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Var/VARC/VARC.cc +346 -0
  695. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Var/VARC/VARC.hh +193 -0
  696. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Var/VARC/coord-setter.hh +37 -0
  697. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/CompositeGlyph.hh +435 -0
  698. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/Glyph.hh +556 -0
  699. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/GlyphHeader.hh +52 -0
  700. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/SimpleGlyph.hh +348 -0
  701. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/SubsetGlyph.hh +141 -0
  702. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/composite-iter.hh +68 -0
  703. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/glyf-helpers.hh +127 -0
  704. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/glyf.hh +513 -0
  705. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/loca.hh +43 -0
  706. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/path-builder.hh +190 -0
  707. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/name/name.hh +589 -0
  708. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/failing-alloc.c +65 -0
  709. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/harfbuzz-subset.cc +64 -0
  710. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/harfbuzz.cc +63 -0
  711. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-ankr-table.hh +99 -0
  712. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-bsln-table.hh +159 -0
  713. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-common.hh +1076 -0
  714. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-feat-table.hh +224 -0
  715. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-just-table.hh +420 -0
  716. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-kerx-table.hh +1191 -0
  717. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-morx-table.hh +1443 -0
  718. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-opbd-table.hh +174 -0
  719. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-trak-table.hh +232 -0
  720. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout.cc +449 -0
  721. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout.h +795 -0
  722. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout.hh +77 -0
  723. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-ltag-table.hh +95 -0
  724. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-map.cc +172 -0
  725. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-map.hh +123 -0
  726. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat.h +38 -0
  727. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-algs.hh +1558 -0
  728. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-array.hh +504 -0
  729. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-atomic.hh +228 -0
  730. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bimap.hh +205 -0
  731. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bit-page.hh +352 -0
  732. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bit-set-invertible.hh +379 -0
  733. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bit-set.hh +982 -0
  734. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-blob.cc +794 -0
  735. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-blob.h +160 -0
  736. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-blob.hh +98 -0
  737. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-deserialize-json.hh +795 -0
  738. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-deserialize-text-glyphs.hh +692 -0
  739. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-deserialize-text-unicode.hh +332 -0
  740. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-serialize.cc +872 -0
  741. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-verify.cc +423 -0
  742. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer.cc +2266 -0
  743. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer.h +805 -0
  744. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer.hh +682 -0
  745. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cache.hh +99 -0
  746. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff-interp-common.hh +642 -0
  747. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff-interp-cs-common.hh +905 -0
  748. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff-interp-dict-common.hh +201 -0
  749. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff1-interp-cs.hh +160 -0
  750. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff2-interp-cs.hh +278 -0
  751. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-common.cc +1220 -0
  752. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-common.h +935 -0
  753. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-config.hh +212 -0
  754. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-coretext.cc +1197 -0
  755. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-coretext.h +96 -0
  756. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cplusplus.hh +220 -0
  757. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-debug.hh +491 -0
  758. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-deprecated.h +318 -0
  759. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-directwrite.cc +884 -0
  760. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-directwrite.h +40 -0
  761. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-dispatch.hh +60 -0
  762. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-draw.cc +458 -0
  763. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-draw.h +340 -0
  764. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-draw.hh +243 -0
  765. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face-builder.cc +246 -0
  766. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face.cc +664 -0
  767. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face.h +187 -0
  768. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face.hh +111 -0
  769. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-fallback-shape.cc +115 -0
  770. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-font.cc +3069 -0
  771. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-font.h +1153 -0
  772. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-font.hh +720 -0
  773. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ft-colr.hh +601 -0
  774. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ft.cc +1500 -0
  775. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ft.h +145 -0
  776. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gdi.cc +85 -0
  777. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gdi.h +39 -0
  778. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-geometry.hh +284 -0
  779. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-glib.cc +232 -0
  780. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-glib.h +56 -0
  781. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gobject-structs.cc +116 -0
  782. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gobject-structs.h +136 -0
  783. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gobject.h +40 -0
  784. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-graphite2.cc +455 -0
  785. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-graphite2.h +61 -0
  786. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-icu.cc +291 -0
  787. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-icu.h +52 -0
  788. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-iter.hh +1037 -0
  789. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-kern.hh +145 -0
  790. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-limits.hh +112 -0
  791. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-machinery.hh +332 -0
  792. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-map.cc +419 -0
  793. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-map.h +143 -0
  794. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-map.hh +568 -0
  795. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-meta.hh +238 -0
  796. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ms-feature-ranges.hh +232 -0
  797. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-multimap.hh +96 -0
  798. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-mutex.hh +122 -0
  799. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-null.hh +226 -0
  800. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-number-parser.hh +237 -0
  801. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-number.cc +79 -0
  802. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-number.hh +41 -0
  803. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-object.hh +357 -0
  804. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-open-file.hh +543 -0
  805. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-open-type.hh +1886 -0
  806. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff-common.hh +374 -0
  807. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff1-std-str.hh +425 -0
  808. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff1-table.cc +620 -0
  809. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff1-table.hh +1539 -0
  810. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff2-table.cc +227 -0
  811. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff2-table.hh +564 -0
  812. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cmap-table.hh +2154 -0
  813. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-color.cc +363 -0
  814. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-color.h +155 -0
  815. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-deprecated.h +147 -0
  816. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-face-table-list.hh +155 -0
  817. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-face.cc +60 -0
  818. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-face.hh +77 -0
  819. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-font.cc +662 -0
  820. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-font.h +45 -0
  821. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-gasp-table.hh +84 -0
  822. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-glyf-table.hh +35 -0
  823. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-hdmx-table.hh +177 -0
  824. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-head-table.hh +204 -0
  825. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-hhea-table.hh +106 -0
  826. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-hmtx-table.hh +502 -0
  827. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-kern-table.hh +425 -0
  828. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-base-table.hh +849 -0
  829. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-common.hh +4953 -0
  830. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gdef-table.hh +34 -0
  831. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gpos-table.hh +81 -0
  832. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gsub-table.hh +94 -0
  833. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gsubgpos.hh +4887 -0
  834. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-jstf-table.hh +236 -0
  835. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout.cc +2705 -0
  836. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout.h +549 -0
  837. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout.hh +611 -0
  838. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-map.cc +394 -0
  839. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-map.hh +298 -0
  840. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-math-table.hh +1132 -0
  841. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-math.cc +338 -0
  842. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-math.h +333 -0
  843. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-maxp-table.hh +156 -0
  844. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-meta-table.hh +131 -0
  845. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-meta.cc +79 -0
  846. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-meta.h +72 -0
  847. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-metrics.cc +436 -0
  848. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-metrics.h +129 -0
  849. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-metrics.hh +35 -0
  850. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name-language-static.hh +456 -0
  851. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name-language.hh +40 -0
  852. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name-table.hh +32 -0
  853. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name.cc +184 -0
  854. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name.h +164 -0
  855. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-os2-table.hh +405 -0
  856. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-os2-unicode-ranges.hh +231 -0
  857. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-post-macroman.hh +294 -0
  858. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-post-table-v2subset.hh +142 -0
  859. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-post-table.hh +352 -0
  860. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-fallback.cc +615 -0
  861. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-fallback.hh +54 -0
  862. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-normalize.cc +470 -0
  863. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-normalize.hh +104 -0
  864. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape.cc +1319 -0
  865. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape.h +53 -0
  866. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape.hh +171 -0
  867. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-fallback.hh +383 -0
  868. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-joining-list.hh +47 -0
  869. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-pua.hh +118 -0
  870. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-table.hh +556 -0
  871. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-win1256.hh +349 -0
  872. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic.cc +774 -0
  873. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic.hh +50 -0
  874. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-default.cc +75 -0
  875. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-hangul.cc +436 -0
  876. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-hebrew.cc +211 -0
  877. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic-machine.hh +627 -0
  878. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic-table.cc +561 -0
  879. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic.cc +1578 -0
  880. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic.hh +66 -0
  881. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-khmer-machine.hh +428 -0
  882. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-khmer.cc +387 -0
  883. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-myanmar-machine.hh +553 -0
  884. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-myanmar.cc +390 -0
  885. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-syllabic.cc +112 -0
  886. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-syllabic.hh +47 -0
  887. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-thai.cc +393 -0
  888. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-use-machine.hh +1079 -0
  889. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-use-table.hh +690 -0
  890. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-use.cc +514 -0
  891. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-vowel-constraints.cc +477 -0
  892. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-vowel-constraints.hh +39 -0
  893. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper.hh +404 -0
  894. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-stat-table.hh +619 -0
  895. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-tag-table.hh +3009 -0
  896. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-tag.cc +658 -0
  897. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-avar-table.hh +411 -0
  898. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-common.hh +1985 -0
  899. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-cvar-table.hh +220 -0
  900. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-fvar-table.hh +505 -0
  901. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-gvar-table.hh +890 -0
  902. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-hvar-table.hh +478 -0
  903. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-mvar-table.hh +184 -0
  904. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-varc-table.hh +32 -0
  905. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var.cc +328 -0
  906. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var.h +191 -0
  907. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-vorg-table.hh +137 -0
  908. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot.h +49 -0
  909. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-outline.cc +321 -0
  910. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-outline.hh +83 -0
  911. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint-extents.cc +330 -0
  912. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint-extents.hh +132 -0
  913. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint.cc +728 -0
  914. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint.h +1029 -0
  915. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint.hh +236 -0
  916. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-pool.hh +107 -0
  917. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-priority-queue.hh +174 -0
  918. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-repacker.hh +476 -0
  919. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-sanitize.hh +530 -0
  920. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-serialize.hh +832 -0
  921. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set-digest.hh +227 -0
  922. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set.cc +673 -0
  923. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set.h +203 -0
  924. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set.hh +186 -0
  925. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape-plan.cc +581 -0
  926. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape-plan.h +122 -0
  927. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape-plan.hh +77 -0
  928. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape.cc +445 -0
  929. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape.h +74 -0
  930. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper-impl.hh +38 -0
  931. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper-list.hh +65 -0
  932. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper.cc +102 -0
  933. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper.hh +134 -0
  934. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-static.cc +138 -0
  935. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-string-array.hh +85 -0
  936. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-style.cc +134 -0
  937. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-style.h +81 -0
  938. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-accelerator.hh +141 -0
  939. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff-common.cc +231 -0
  940. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff-common.hh +1228 -0
  941. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff1.cc +1001 -0
  942. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff2.cc +679 -0
  943. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-input.cc +748 -0
  944. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-input.hh +155 -0
  945. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-iup.cc +532 -0
  946. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-iup.hh +37 -0
  947. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-solver.cc +434 -0
  948. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-solver.hh +114 -0
  949. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-plan-member-list.hh +164 -0
  950. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-plan.cc +1570 -0
  951. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-plan.hh +302 -0
  952. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-repacker.cc +58 -0
  953. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-repacker.h +81 -0
  954. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset.cc +704 -0
  955. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset.h +260 -0
  956. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset.hh +74 -0
  957. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ucd-table.hh +5637 -0
  958. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ucd.cc +258 -0
  959. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode-emoji-table.hh +79 -0
  960. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode.cc +625 -0
  961. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode.h +643 -0
  962. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode.hh +403 -0
  963. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-uniscribe.cc +889 -0
  964. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-uniscribe.h +46 -0
  965. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-utf.hh +481 -0
  966. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-vector.hh +539 -0
  967. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-version.h +95 -0
  968. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-blob.hh +50 -0
  969. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-buffer.hh +217 -0
  970. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-common.hh +44 -0
  971. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-face.hh +109 -0
  972. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-font.hh +263 -0
  973. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-list.hh +109 -0
  974. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-shape.hh +70 -0
  975. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api.cc +46 -0
  976. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api.h +322 -0
  977. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api.hh +117 -0
  978. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-shape.cc +470 -0
  979. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb.h +51 -0
  980. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb.hh +555 -0
  981. package/ios/juce_modules/juce_graphics/fonts/juce_AttributedString.cpp +288 -0
  982. package/ios/juce_modules/juce_graphics/fonts/juce_AttributedString.h +219 -0
  983. package/ios/juce_modules/juce_graphics/fonts/juce_Font.cpp +1036 -0
  984. package/ios/juce_modules/juce_graphics/fonts/juce_Font.h +571 -0
  985. package/ios/juce_modules/juce_graphics/fonts/juce_FontOptions.cpp +111 -0
  986. package/ios/juce_modules/juce_graphics/fonts/juce_FontOptions.h +218 -0
  987. package/ios/juce_modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h +53 -0
  988. package/ios/juce_modules/juce_graphics/fonts/juce_GlyphArrangement.cpp +657 -0
  989. package/ios/juce_modules/juce_graphics/fonts/juce_GlyphArrangement.h +324 -0
  990. package/ios/juce_modules/juce_graphics/fonts/juce_JustifiedText.cpp +580 -0
  991. package/ios/juce_modules/juce_graphics/fonts/juce_LruCache.h +88 -0
  992. package/ios/juce_modules/juce_graphics/fonts/juce_ShapedText.cpp +210 -0
  993. package/ios/juce_modules/juce_graphics/fonts/juce_SimpleShapedText.cpp +1279 -0
  994. package/ios/juce_modules/juce_graphics/fonts/juce_TextLayout.cpp +512 -0
  995. package/ios/juce_modules/juce_graphics/fonts/juce_TextLayout.h +278 -0
  996. package/ios/juce_modules/juce_graphics/fonts/juce_Typeface.cpp +983 -0
  997. package/ios/juce_modules/juce_graphics/fonts/juce_Typeface.h +396 -0
  998. package/ios/juce_modules/juce_graphics/fonts/juce_TypefaceFileCache.h +74 -0
  999. package/ios/juce_modules/juce_graphics/fonts/juce_TypefaceTestData.cpp +6051 -0
  1000. package/ios/juce_modules/juce_graphics/geometry/juce_AffineTransform.cpp +307 -0
  1001. package/ios/juce_modules/juce_graphics/geometry/juce_AffineTransform.h +314 -0
  1002. package/ios/juce_modules/juce_graphics/geometry/juce_BorderSize.h +176 -0
  1003. package/ios/juce_modules/juce_graphics/geometry/juce_EdgeTable.cpp +848 -0
  1004. package/ios/juce_modules/juce_graphics/geometry/juce_EdgeTable.h +225 -0
  1005. package/ios/juce_modules/juce_graphics/geometry/juce_Line.h +454 -0
  1006. package/ios/juce_modules/juce_graphics/geometry/juce_Parallelogram.h +194 -0
  1007. package/ios/juce_modules/juce_graphics/geometry/juce_Parallelogram_test.cpp +75 -0
  1008. package/ios/juce_modules/juce_graphics/geometry/juce_Path.cpp +1531 -0
  1009. package/ios/juce_modules/juce_graphics/geometry/juce_Path.h +846 -0
  1010. package/ios/juce_modules/juce_graphics/geometry/juce_PathIterator.cpp +304 -0
  1011. package/ios/juce_modules/juce_graphics/geometry/juce_PathIterator.h +120 -0
  1012. package/ios/juce_modules/juce_graphics/geometry/juce_PathStrokeType.cpp +756 -0
  1013. package/ios/juce_modules/juce_graphics/geometry/juce_PathStrokeType.h +215 -0
  1014. package/ios/juce_modules/juce_graphics/geometry/juce_Point.h +269 -0
  1015. package/ios/juce_modules/juce_graphics/geometry/juce_Rectangle.h +1032 -0
  1016. package/ios/juce_modules/juce_graphics/geometry/juce_RectangleList.h +694 -0
  1017. package/ios/juce_modules/juce_graphics/geometry/juce_Rectangle_test.cpp +60 -0
  1018. package/ios/juce_modules/juce_graphics/image_formats/jpglib/README +385 -0
  1019. package/ios/juce_modules/juce_graphics/image_formats/jpglib/cderror.h +132 -0
  1020. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcapimin.c +280 -0
  1021. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcapistd.c +161 -0
  1022. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jccoefct.c +449 -0
  1023. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jccolor.c +459 -0
  1024. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcdctmgr.c +387 -0
  1025. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jchuff.c +909 -0
  1026. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jchuff.h +52 -0
  1027. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcinit.c +72 -0
  1028. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcmainct.c +293 -0
  1029. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcmarker.c +597 -0
  1030. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcmaster.c +590 -0
  1031. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcomapi.c +106 -0
  1032. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jconfig.h +59 -0
  1033. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcparam.c +610 -0
  1034. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcphuff.c +833 -0
  1035. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcprepct.c +354 -0
  1036. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcsample.c +519 -0
  1037. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jctrans.c +388 -0
  1038. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdapimin.c +395 -0
  1039. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdapistd.c +275 -0
  1040. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdatasrc.c +212 -0
  1041. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdcoefct.c +736 -0
  1042. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdcolor.c +396 -0
  1043. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdct.h +182 -0
  1044. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jddctmgr.c +269 -0
  1045. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdhuff.c +625 -0
  1046. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdhuff.h +206 -0
  1047. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdinput.c +381 -0
  1048. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmainct.c +512 -0
  1049. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmarker.c +1292 -0
  1050. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmaster.c +557 -0
  1051. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmerge.c +400 -0
  1052. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdphuff.c +642 -0
  1053. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdpostct.c +290 -0
  1054. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdsample.c +478 -0
  1055. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdtrans.c +143 -0
  1056. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jerror.c +252 -0
  1057. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jerror.h +291 -0
  1058. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jfdctflt.c +168 -0
  1059. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jfdctfst.c +224 -0
  1060. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jfdctint.c +283 -0
  1061. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctflt.c +242 -0
  1062. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctfst.c +368 -0
  1063. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctint.c +389 -0
  1064. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctred.c +398 -0
  1065. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jinclude.h +197 -0
  1066. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmemmgr.c +1118 -0
  1067. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmemnobs.c +109 -0
  1068. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmemsys.h +203 -0
  1069. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmorecfg.h +363 -0
  1070. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jpegint.h +392 -0
  1071. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jpeglib.h +1096 -0
  1072. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jquant1.c +856 -0
  1073. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jquant2.c +1310 -0
  1074. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jutils.c +179 -0
  1075. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jversion.h +14 -0
  1076. package/ios/juce_modules/juce_graphics/image_formats/jpglib/transupp.c +928 -0
  1077. package/ios/juce_modules/juce_graphics/image_formats/jpglib/transupp.h +135 -0
  1078. package/ios/juce_modules/juce_graphics/image_formats/juce_GIFLoader.cpp +464 -0
  1079. package/ios/juce_modules/juce_graphics/image_formats/juce_JPEGLoader.cpp +456 -0
  1080. package/ios/juce_modules/juce_graphics/image_formats/juce_PNGLoader.cpp +635 -0
  1081. package/ios/juce_modules/juce_graphics/image_formats/pnglib/png.c +4607 -0
  1082. package/ios/juce_modules/juce_graphics/image_formats/pnglib/png.h +3251 -0
  1083. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngconf.h +623 -0
  1084. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngdebug.h +153 -0
  1085. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngerror.c +963 -0
  1086. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngget.c +1249 -0
  1087. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pnginfo.h +267 -0
  1088. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngmem.c +284 -0
  1089. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngpread.c +1096 -0
  1090. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngpriv.h +2156 -0
  1091. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngread.c +4225 -0
  1092. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngrio.c +120 -0
  1093. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngrtran.c +5102 -0
  1094. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngrutil.c +4681 -0
  1095. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngset.c +1802 -0
  1096. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngstruct.h +491 -0
  1097. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngtrans.c +864 -0
  1098. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwio.c +168 -0
  1099. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwrite.c +2395 -0
  1100. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwtran.c +587 -0
  1101. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwutil.c +2781 -0
  1102. package/ios/juce_modules/juce_graphics/images/juce_Image.cpp +851 -0
  1103. package/ios/juce_modules/juce_graphics/images/juce_Image.h +630 -0
  1104. package/ios/juce_modules/juce_graphics/images/juce_ImageCache.cpp +183 -0
  1105. package/ios/juce_modules/juce_graphics/images/juce_ImageCache.h +136 -0
  1106. package/ios/juce_modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp +209 -0
  1107. package/ios/juce_modules/juce_graphics/images/juce_ImageConvolutionKernel.h +121 -0
  1108. package/ios/juce_modules/juce_graphics/images/juce_ImageFileFormat.cpp +120 -0
  1109. package/ios/juce_modules/juce_graphics/images/juce_ImageFileFormat.h +232 -0
  1110. package/ios/juce_modules/juce_graphics/images/juce_ScaledImage.h +93 -0
  1111. package/ios/juce_modules/juce_graphics/juce_graphics.cpp +230 -0
  1112. package/ios/juce_modules/juce_graphics/juce_graphics.h +162 -0
  1113. package/ios/juce_modules/juce_graphics/juce_graphics.mm +35 -0
  1114. package/ios/juce_modules/juce_graphics/juce_graphics_Harfbuzz.cpp +100 -0
  1115. package/ios/juce_modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h +153 -0
  1116. package/ios/juce_modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm +969 -0
  1117. package/ios/juce_modules/juce_graphics/native/juce_CoreGraphicsHelpers_mac.h +117 -0
  1118. package/ios/juce_modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp +1807 -0
  1119. package/ios/juce_modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h +174 -0
  1120. package/ios/juce_modules/juce_graphics/native/juce_Direct2DHelpers_windows.cpp +456 -0
  1121. package/ios/juce_modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp +784 -0
  1122. package/ios/juce_modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h +73 -0
  1123. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp +124 -0
  1124. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImageContext_windows.h +55 -0
  1125. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImage_windows.cpp +732 -0
  1126. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImage_windows.h +94 -0
  1127. package/ios/juce_modules/juce_graphics/native/juce_Direct2DMetrics_windows.cpp +132 -0
  1128. package/ios/juce_modules/juce_graphics/native/juce_Direct2DMetrics_windows.h +320 -0
  1129. package/ios/juce_modules/juce_graphics/native/juce_Direct2DResources_windows.cpp +661 -0
  1130. package/ios/juce_modules/juce_graphics/native/juce_DirectWriteTypeface_windows.cpp +920 -0
  1131. package/ios/juce_modules/juce_graphics/native/juce_DirectX_windows.h +330 -0
  1132. package/ios/juce_modules/juce_graphics/native/juce_EventTracing.h +310 -0
  1133. package/ios/juce_modules/juce_graphics/native/juce_Fonts_android.cpp +636 -0
  1134. package/ios/juce_modules/juce_graphics/native/juce_Fonts_freetype.cpp +589 -0
  1135. package/ios/juce_modules/juce_graphics/native/juce_Fonts_linux.cpp +208 -0
  1136. package/ios/juce_modules/juce_graphics/native/juce_Fonts_mac.mm +416 -0
  1137. package/ios/juce_modules/juce_graphics/native/juce_GraphicsContext_android.cpp +43 -0
  1138. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_android.cpp +39 -0
  1139. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_linux.cpp +39 -0
  1140. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_mac.cpp +150 -0
  1141. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_windows.cpp +39 -0
  1142. package/ios/juce_modules/juce_graphics/native/juce_RenderingHelpers.h +2696 -0
  1143. package/ios/juce_modules/juce_graphics/placement/juce_Justification.h +196 -0
  1144. package/ios/juce_modules/juce_graphics/placement/juce_RectanglePlacement.cpp +131 -0
  1145. package/ios/juce_modules/juce_graphics/placement/juce_RectanglePlacement.h +183 -0
  1146. package/ios/juce_modules/juce_graphics/unicode/juce_Unicode.cpp +331 -0
  1147. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeBidi.cpp +1139 -0
  1148. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeBrackets.cpp +142 -0
  1149. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeGenerated.cpp +1380 -0
  1150. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeLine.cpp +273 -0
  1151. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeScript.cpp +235 -0
  1152. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeUtils.cpp +104 -0
  1153. package/ios/juce_modules/juce_gui_basics/accessibility/enums/juce_AccessibilityActions.h +128 -0
  1154. package/ios/juce_modules/juce_gui_basics/accessibility/enums/juce_AccessibilityEvent.h +90 -0
  1155. package/ios/juce_modules/juce_gui_basics/accessibility/enums/juce_AccessibilityRole.h +80 -0
  1156. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityCellInterface.h +61 -0
  1157. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTableInterface.h +106 -0
  1158. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTextInterface.h +93 -0
  1159. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityValueInterface.h +231 -0
  1160. package/ios/juce_modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp +412 -0
  1161. package/ios/juce_modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.h +354 -0
  1162. package/ios/juce_modules/juce_gui_basics/accessibility/juce_AccessibilityState.h +236 -0
  1163. package/ios/juce_modules/juce_gui_basics/application/juce_Application.cpp +109 -0
  1164. package/ios/juce_modules/juce_gui_basics/application/juce_Application.h +202 -0
  1165. package/ios/juce_modules/juce_gui_basics/buttons/juce_ArrowButton.cpp +60 -0
  1166. package/ios/juce_modules/juce_gui_basics/buttons/juce_ArrowButton.h +74 -0
  1167. package/ios/juce_modules/juce_gui_basics/buttons/juce_Button.cpp +730 -0
  1168. package/ios/juce_modules/juce_gui_basics/buttons/juce_Button.h +559 -0
  1169. package/ios/juce_modules/juce_gui_basics/buttons/juce_DrawableButton.cpp +250 -0
  1170. package/ios/juce_modules/juce_gui_basics/buttons/juce_DrawableButton.h +206 -0
  1171. package/ios/juce_modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp +138 -0
  1172. package/ios/juce_modules/juce_gui_basics/buttons/juce_HyperlinkButton.h +139 -0
  1173. package/ios/juce_modules/juce_gui_basics/buttons/juce_ImageButton.cpp +207 -0
  1174. package/ios/juce_modules/juce_gui_basics/buttons/juce_ImageButton.h +170 -0
  1175. package/ios/juce_modules/juce_gui_basics/buttons/juce_ShapeButton.cpp +146 -0
  1176. package/ios/juce_modules/juce_gui_basics/buttons/juce_ShapeButton.h +135 -0
  1177. package/ios/juce_modules/juce_gui_basics/buttons/juce_TextButton.cpp +86 -0
  1178. package/ios/juce_modules/juce_gui_basics/buttons/juce_TextButton.h +118 -0
  1179. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToggleButton.cpp +74 -0
  1180. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToggleButton.h +102 -0
  1181. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp +122 -0
  1182. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToolbarButton.h +107 -0
  1183. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandID.h +99 -0
  1184. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp +75 -0
  1185. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h +199 -0
  1186. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp +331 -0
  1187. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h +358 -0
  1188. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp +195 -0
  1189. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h +253 -0
  1190. package/ios/juce_modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp +427 -0
  1191. package/ios/juce_modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h +253 -0
  1192. package/ios/juce_modules/juce_gui_basics/components/juce_CachedComponentImage.h +81 -0
  1193. package/ios/juce_modules/juce_gui_basics/components/juce_Component.cpp +3013 -0
  1194. package/ios/juce_modules/juce_gui_basics/components/juce_Component.h +2716 -0
  1195. package/ios/juce_modules/juce_gui_basics/components/juce_ComponentListener.cpp +47 -0
  1196. package/ios/juce_modules/juce_gui_basics/components/juce_ComponentListener.h +131 -0
  1197. package/ios/juce_modules/juce_gui_basics/components/juce_ComponentTraverser.h +81 -0
  1198. package/ios/juce_modules/juce_gui_basics/components/juce_FocusTraverser.cpp +283 -0
  1199. package/ios/juce_modules/juce_gui_basics/components/juce_FocusTraverser.h +102 -0
  1200. package/ios/juce_modules/juce_gui_basics/components/juce_ModalComponentManager.cpp +295 -0
  1201. package/ios/juce_modules/juce_gui_basics/components/juce_ModalComponentManager.h +340 -0
  1202. package/ios/juce_modules/juce_gui_basics/desktop/juce_Desktop.cpp +386 -0
  1203. package/ios/juce_modules/juce_gui_basics/desktop/juce_Desktop.h +502 -0
  1204. package/ios/juce_modules/juce_gui_basics/desktop/juce_Displays.cpp +447 -0
  1205. package/ios/juce_modules/juce_gui_basics/desktop/juce_Displays.h +218 -0
  1206. package/ios/juce_modules/juce_gui_basics/detail/juce_AccessibilityHelpers.cpp +42 -0
  1207. package/ios/juce_modules/juce_gui_basics/detail/juce_AccessibilityHelpers.h +79 -0
  1208. package/ios/juce_modules/juce_gui_basics/detail/juce_AlertWindowHelpers.h +124 -0
  1209. package/ios/juce_modules/juce_gui_basics/detail/juce_ButtonAccessibilityHandler.h +134 -0
  1210. package/ios/juce_modules/juce_gui_basics/detail/juce_ComponentHelpers.h +291 -0
  1211. package/ios/juce_modules/juce_gui_basics/detail/juce_CustomMouseCursorInfo.h +44 -0
  1212. package/ios/juce_modules/juce_gui_basics/detail/juce_FocusHelpers.h +126 -0
  1213. package/ios/juce_modules/juce_gui_basics/detail/juce_FocusRestorer.h +55 -0
  1214. package/ios/juce_modules/juce_gui_basics/detail/juce_LookAndFeelHelpers.h +71 -0
  1215. package/ios/juce_modules/juce_gui_basics/detail/juce_MouseInputSourceImpl.h +597 -0
  1216. package/ios/juce_modules/juce_gui_basics/detail/juce_MouseInputSourceList.h +163 -0
  1217. package/ios/juce_modules/juce_gui_basics/detail/juce_PointerState.h +113 -0
  1218. package/ios/juce_modules/juce_gui_basics/detail/juce_ScalingHelpers.h +132 -0
  1219. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedContentSharerImpl.h +107 -0
  1220. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedContentSharerInterface.h +224 -0
  1221. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedMessageBoxImpl.h +141 -0
  1222. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedMessageBoxInterface.h +69 -0
  1223. package/ios/juce_modules/juce_gui_basics/detail/juce_StandardCachedComponentImage.h +102 -0
  1224. package/ios/juce_modules/juce_gui_basics/detail/juce_ToolbarItemDragAndDropOverlayComponent.h +127 -0
  1225. package/ios/juce_modules/juce_gui_basics/detail/juce_TopLevelWindowManager.h +145 -0
  1226. package/ios/juce_modules/juce_gui_basics/detail/juce_ViewportHelpers.h +58 -0
  1227. package/ios/juce_modules/juce_gui_basics/detail/juce_WindowingHelpers.h +70 -0
  1228. package/ios/juce_modules/juce_gui_basics/drawables/juce_Drawable.cpp +228 -0
  1229. package/ios/juce_modules/juce_gui_basics/drawables/juce_Drawable.h +271 -0
  1230. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp +173 -0
  1231. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableComposite.h +126 -0
  1232. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableImage.cpp +165 -0
  1233. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableImage.h +126 -0
  1234. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawablePath.cpp +66 -0
  1235. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawablePath.h +86 -0
  1236. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp +96 -0
  1237. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableRectangle.h +85 -0
  1238. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableShape.cpp +190 -0
  1239. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableShape.h +135 -0
  1240. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableText.cpp +241 -0
  1241. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableText.h +130 -0
  1242. package/ios/juce_modules/juce_gui_basics/drawables/juce_SVGParser.cpp +1903 -0
  1243. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp +83 -0
  1244. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ContentSharer.h +154 -0
  1245. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp +79 -0
  1246. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h +125 -0
  1247. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp +279 -0
  1248. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h +235 -0
  1249. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp +633 -0
  1250. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h +306 -0
  1251. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h +67 -0
  1252. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp +292 -0
  1253. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooser.h +358 -0
  1254. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp +272 -0
  1255. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h +177 -0
  1256. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp +295 -0
  1257. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileListComponent.h +104 -0
  1258. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h +75 -0
  1259. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp +280 -0
  1260. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h +126 -0
  1261. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp +690 -0
  1262. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h +117 -0
  1263. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp +277 -0
  1264. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h +245 -0
  1265. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp +135 -0
  1266. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h +77 -0
  1267. package/ios/juce_modules/juce_gui_basics/juce_gui_basics.cpp +370 -0
  1268. package/ios/juce_modules/juce_gui_basics/juce_gui_basics.h +403 -0
  1269. package/ios/juce_modules/juce_gui_basics/juce_gui_basics.mm +35 -0
  1270. package/ios/juce_modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp +73 -0
  1271. package/ios/juce_modules/juce_gui_basics/keyboard/juce_CaretComponent.h +90 -0
  1272. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyListener.cpp +43 -0
  1273. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyListener.h +86 -0
  1274. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyPress.cpp +298 -0
  1275. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyPress.h +286 -0
  1276. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp +283 -0
  1277. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h +96 -0
  1278. package/ios/juce_modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp +58 -0
  1279. package/ios/juce_modules/juce_gui_basics/keyboard/juce_ModifierKeys.h +220 -0
  1280. package/ios/juce_modules/juce_gui_basics/keyboard/juce_SystemClipboard.h +58 -0
  1281. package/ios/juce_modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h +132 -0
  1282. package/ios/juce_modules/juce_gui_basics/keyboard/juce_TextInputTarget.h +129 -0
  1283. package/ios/juce_modules/juce_gui_basics/layout/juce_AnimatedPosition.h +216 -0
  1284. package/ios/juce_modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h +162 -0
  1285. package/ios/juce_modules/juce_gui_basics/layout/juce_BorderedComponentBoundsConstrainer.cpp +86 -0
  1286. package/ios/juce_modules/juce_gui_basics/layout/juce_BorderedComponentBoundsConstrainer.h +78 -0
  1287. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp +363 -0
  1288. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentAnimator.h +174 -0
  1289. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp +314 -0
  1290. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h +206 -0
  1291. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp +295 -0
  1292. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBuilder.h +256 -0
  1293. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp +151 -0
  1294. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h +105 -0
  1295. package/ios/juce_modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp +512 -0
  1296. package/ios/juce_modules/juce_gui_basics/layout/juce_ConcertinaPanel.h +153 -0
  1297. package/ios/juce_modules/juce_gui_basics/layout/juce_FlexBox.cpp +1158 -0
  1298. package/ios/juce_modules/juce_gui_basics/layout/juce_FlexBox.h +152 -0
  1299. package/ios/juce_modules/juce_gui_basics/layout/juce_FlexItem.h +186 -0
  1300. package/ios/juce_modules/juce_gui_basics/layout/juce_Grid.cpp +1651 -0
  1301. package/ios/juce_modules/juce_gui_basics/layout/juce_Grid.h +232 -0
  1302. package/ios/juce_modules/juce_gui_basics/layout/juce_GridItem.cpp +188 -0
  1303. package/ios/juce_modules/juce_gui_basics/layout/juce_GridItem.h +249 -0
  1304. package/ios/juce_modules/juce_gui_basics/layout/juce_GroupComponent.cpp +87 -0
  1305. package/ios/juce_modules/juce_gui_basics/layout/juce_GroupComponent.h +120 -0
  1306. package/ios/juce_modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp +641 -0
  1307. package/ios/juce_modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h +390 -0
  1308. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp +208 -0
  1309. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h +205 -0
  1310. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp +112 -0
  1311. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h +101 -0
  1312. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp +139 -0
  1313. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h +109 -0
  1314. package/ios/juce_modules/juce_gui_basics/layout/juce_ScrollBar.cpp +486 -0
  1315. package/ios/juce_modules/juce_gui_basics/layout/juce_ScrollBar.h +450 -0
  1316. package/ios/juce_modules/juce_gui_basics/layout/juce_SidePanel.cpp +309 -0
  1317. package/ios/juce_modules/juce_gui_basics/layout/juce_SidePanel.h +248 -0
  1318. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp +351 -0
  1319. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h +270 -0
  1320. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp +88 -0
  1321. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h +114 -0
  1322. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp +131 -0
  1323. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h +111 -0
  1324. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp +592 -0
  1325. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedButtonBar.h +382 -0
  1326. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedComponent.cpp +328 -0
  1327. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedComponent.h +236 -0
  1328. package/ios/juce_modules/juce_gui_basics/layout/juce_Viewport.cpp +649 -0
  1329. package/ios/juce_modules/juce_gui_basics/layout/juce_Viewport.h +383 -0
  1330. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp +201 -0
  1331. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h +301 -0
  1332. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp +599 -0
  1333. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h +114 -0
  1334. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +3200 -0
  1335. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +443 -0
  1336. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp +655 -0
  1337. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h +107 -0
  1338. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp +1516 -0
  1339. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h +269 -0
  1340. package/ios/juce_modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp +311 -0
  1341. package/ios/juce_modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h +120 -0
  1342. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp +472 -0
  1343. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarComponent.h +138 -0
  1344. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarModel.cpp +108 -0
  1345. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarModel.h +201 -0
  1346. package/ios/juce_modules/juce_gui_basics/menus/juce_PopupMenu.cpp +2401 -0
  1347. package/ios/juce_modules/juce_gui_basics/menus/juce_PopupMenu.h +1070 -0
  1348. package/ios/juce_modules/juce_gui_basics/misc/juce_BubbleComponent.cpp +162 -0
  1349. package/ios/juce_modules/juce_gui_basics/misc/juce_BubbleComponent.h +213 -0
  1350. package/ios/juce_modules/juce_gui_basics/misc/juce_DropShadower.cpp +408 -0
  1351. package/ios/juce_modules/juce_gui_basics/misc/juce_DropShadower.h +96 -0
  1352. package/ios/juce_modules/juce_gui_basics/misc/juce_FocusOutline.cpp +194 -0
  1353. package/ios/juce_modules/juce_gui_basics/misc/juce_FocusOutline.h +109 -0
  1354. package/ios/juce_modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp +76 -0
  1355. package/ios/juce_modules/juce_gui_basics/mouse/juce_ComponentDragger.h +110 -0
  1356. package/ios/juce_modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp +646 -0
  1357. package/ios/juce_modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h +275 -0
  1358. package/ios/juce_modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h +149 -0
  1359. package/ios/juce_modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h +115 -0
  1360. package/ios/juce_modules/juce_gui_basics/mouse/juce_LassoComponent.h +233 -0
  1361. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseCursor.cpp +162 -0
  1362. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseCursor.h +199 -0
  1363. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseEvent.cpp +147 -0
  1364. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseEvent.h +463 -0
  1365. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp +86 -0
  1366. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h +121 -0
  1367. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp +114 -0
  1368. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInputSource.h +315 -0
  1369. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseListener.cpp +48 -0
  1370. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseListener.h +180 -0
  1371. package/ios/juce_modules/juce_gui_basics/mouse/juce_SelectedItemSet.h +336 -0
  1372. package/ios/juce_modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h +115 -0
  1373. package/ios/juce_modules/juce_gui_basics/mouse/juce_TooltipClient.h +98 -0
  1374. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility.cpp +46 -0
  1375. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityElement_windows.cpp +660 -0
  1376. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityElement_windows.h +89 -0
  1377. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm +283 -0
  1378. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h +311 -0
  1379. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp +164 -0
  1380. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_android.cpp +1058 -0
  1381. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_ios.mm +669 -0
  1382. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_mac.mm +942 -0
  1383. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_windows.cpp +336 -0
  1384. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h +92 -0
  1385. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h +162 -0
  1386. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h +160 -0
  1387. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAHelpers_windows.h +128 -0
  1388. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAInvokeProvider_windows.h +68 -0
  1389. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAProviderBase_windows.h +67 -0
  1390. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAProviders_windows.h +52 -0
  1391. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIARangeValueProvider_windows.h +146 -0
  1392. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIASelectionProvider_windows.h +254 -0
  1393. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIATextProvider_windows.h +626 -0
  1394. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAToggleProvider_windows.h +87 -0
  1395. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIATransformProvider_windows.h +131 -0
  1396. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAValueProvider_windows.h +92 -0
  1397. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAWindowProvider_windows.h +203 -0
  1398. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_WindowsUIAWrapper_windows.h +169 -0
  1399. package/ios/juce_modules/juce_gui_basics/native/java/app/com/rmsl/juce/ComponentPeerView.java +987 -0
  1400. package/ios/juce_modules/juce_gui_basics/native/java/app/com/rmsl/juce/JuceContentProviderCursor.java +62 -0
  1401. package/ios/juce_modules/juce_gui_basics/native/java/app/com/rmsl/juce/JuceContentProviderFileObserver.java +57 -0
  1402. package/ios/juce_modules/juce_gui_basics/native/javaopt/app/com/rmsl/juce/JuceActivity.java +63 -0
  1403. package/ios/juce_modules/juce_gui_basics/native/javaopt/app/com/rmsl/juce/JuceSharingContentProvider.java +128 -0
  1404. package/ios/juce_modules/juce_gui_basics/native/javaopt/app/com/rmsl/juce/Receiver.java +51 -0
  1405. package/ios/juce_modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h +384 -0
  1406. package/ios/juce_modules/juce_gui_basics/native/juce_ContentSharer_android.cpp +963 -0
  1407. package/ios/juce_modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp +134 -0
  1408. package/ios/juce_modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp +618 -0
  1409. package/ios/juce_modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp +377 -0
  1410. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_android.cpp +276 -0
  1411. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_ios.mm +379 -0
  1412. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_linux.cpp +296 -0
  1413. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_mac.mm +414 -0
  1414. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_windows.cpp +908 -0
  1415. package/ios/juce_modules/juce_gui_basics/native/juce_MainMenu_mac.mm +848 -0
  1416. package/ios/juce_modules/juce_gui_basics/native/juce_MouseCursor_mac.mm +205 -0
  1417. package/ios/juce_modules/juce_gui_basics/native/juce_MultiTouchMapper.h +116 -0
  1418. package/ios/juce_modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm +3053 -0
  1419. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_android.cpp +124 -0
  1420. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_ios.mm +119 -0
  1421. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_linux.cpp +78 -0
  1422. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_mac.mm +140 -0
  1423. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_windows.cpp +354 -0
  1424. package/ios/juce_modules/juce_gui_basics/native/juce_NativeModalWrapperComponent_ios.h +141 -0
  1425. package/ios/juce_modules/juce_gui_basics/native/juce_PerScreenDisplayLinks_mac.h +313 -0
  1426. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.cpp +43 -0
  1427. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.h +63 -0
  1428. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedThreadDPIAwarenessSetter_windows.h +52 -0
  1429. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedWindowAssociation_linux.h +127 -0
  1430. package/ios/juce_modules/juce_gui_basics/native/juce_UIViewComponentPeer_ios.mm +2376 -0
  1431. package/ios/juce_modules/juce_gui_basics/native/juce_VBlank_windows.cpp +302 -0
  1432. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_android.cpp +43 -0
  1433. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_ios.mm +43 -0
  1434. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_linux.cpp +48 -0
  1435. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_mac.mm +47 -0
  1436. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_windows.cpp +68 -0
  1437. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_android.cpp +2903 -0
  1438. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_ios.mm +629 -0
  1439. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_linux.cpp +863 -0
  1440. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_mac.mm +588 -0
  1441. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_windows.cpp +5549 -0
  1442. package/ios/juce_modules/juce_gui_basics/native/juce_WindowsHooks_windows.cpp +118 -0
  1443. package/ios/juce_modules/juce_gui_basics/native/juce_WindowsHooks_windows.h +55 -0
  1444. package/ios/juce_modules/juce_gui_basics/native/juce_XSymbols_linux.cpp +249 -0
  1445. package/ios/juce_modules/juce_gui_basics/native/juce_XSymbols_linux.h +629 -0
  1446. package/ios/juce_modules/juce_gui_basics/native/juce_XWindowSystem_linux.cpp +4036 -0
  1447. package/ios/juce_modules/juce_gui_basics/native/juce_XWindowSystem_linux.h +364 -0
  1448. package/ios/juce_modules/juce_gui_basics/positioning/juce_MarkerList.cpp +293 -0
  1449. package/ios/juce_modules/juce_gui_basics/positioning/juce_MarkerList.h +204 -0
  1450. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp +162 -0
  1451. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h +190 -0
  1452. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp +344 -0
  1453. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h +99 -0
  1454. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp +149 -0
  1455. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h +75 -0
  1456. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePoint.cpp +110 -0
  1457. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePoint.h +100 -0
  1458. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp +271 -0
  1459. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePointPath.h +202 -0
  1460. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp +286 -0
  1461. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeRectangle.h +117 -0
  1462. package/ios/juce_modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp +95 -0
  1463. package/ios/juce_modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h +118 -0
  1464. package/ios/juce_modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp +55 -0
  1465. package/ios/juce_modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h +85 -0
  1466. package/ios/juce_modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp +284 -0
  1467. package/ios/juce_modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h +162 -0
  1468. package/ios/juce_modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp +367 -0
  1469. package/ios/juce_modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h +150 -0
  1470. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyComponent.cpp +65 -0
  1471. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyComponent.h +154 -0
  1472. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyPanel.cpp +405 -0
  1473. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyPanel.h +186 -0
  1474. package/ios/juce_modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp +95 -0
  1475. package/ios/juce_modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h +116 -0
  1476. package/ios/juce_modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp +271 -0
  1477. package/ios/juce_modules/juce_gui_basics/properties/juce_TextPropertyComponent.h +196 -0
  1478. package/ios/juce_modules/juce_gui_basics/widgets/juce_ComboBox.cpp +721 -0
  1479. package/ios/juce_modules/juce_gui_basics/widgets/juce_ComboBox.h +473 -0
  1480. package/ios/juce_modules/juce_gui_basics/widgets/juce_ImageComponent.cpp +116 -0
  1481. package/ios/juce_modules/juce_gui_basics/widgets/juce_ImageComponent.h +90 -0
  1482. package/ios/juce_modules/juce_gui_basics/widgets/juce_Label.cpp +592 -0
  1483. package/ios/juce_modules/juce_gui_basics/widgets/juce_Label.h +377 -0
  1484. package/ios/juce_modules/juce_gui_basics/widgets/juce_ListBox.cpp +1263 -0
  1485. package/ios/juce_modules/juce_gui_basics/widgets/juce_ListBox.h +656 -0
  1486. package/ios/juce_modules/juce_gui_basics/widgets/juce_ProgressBar.cpp +189 -0
  1487. package/ios/juce_modules/juce_gui_basics/widgets/juce_ProgressBar.h +215 -0
  1488. package/ios/juce_modules/juce_gui_basics/widgets/juce_Slider.cpp +1839 -0
  1489. package/ios/juce_modules/juce_gui_basics/widgets/juce_Slider.h +1048 -0
  1490. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp +935 -0
  1491. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h +472 -0
  1492. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableListBox.cpp +688 -0
  1493. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableListBox.h +365 -0
  1494. package/ios/juce_modules/juce_gui_basics/widgets/juce_TextEditor.cpp +2786 -0
  1495. package/ios/juce_modules/juce_gui_basics/widgets/juce_TextEditor.h +888 -0
  1496. package/ios/juce_modules/juce_gui_basics/widgets/juce_Toolbar.cpp +838 -0
  1497. package/ios/juce_modules/juce_gui_basics/widgets/juce_Toolbar.h +347 -0
  1498. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp +173 -0
  1499. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h +217 -0
  1500. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h +118 -0
  1501. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp +125 -0
  1502. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h +88 -0
  1503. package/ios/juce_modules/juce_gui_basics/widgets/juce_TreeView.cpp +2286 -0
  1504. package/ios/juce_modules/juce_gui_basics/widgets/juce_TreeView.h +969 -0
  1505. package/ios/juce_modules/juce_gui_basics/windows/juce_AlertWindow.cpp +712 -0
  1506. package/ios/juce_modules/juce_gui_basics/windows/juce_AlertWindow.h +600 -0
  1507. package/ios/juce_modules/juce_gui_basics/windows/juce_CallOutBox.cpp +279 -0
  1508. package/ios/juce_modules/juce_gui_basics/windows/juce_CallOutBox.h +197 -0
  1509. package/ios/juce_modules/juce_gui_basics/windows/juce_ComponentPeer.cpp +625 -0
  1510. package/ios/juce_modules/juce_gui_basics/windows/juce_ComponentPeer.h +623 -0
  1511. package/ios/juce_modules/juce_gui_basics/windows/juce_DialogWindow.cpp +190 -0
  1512. package/ios/juce_modules/juce_gui_basics/windows/juce_DialogWindow.h +286 -0
  1513. package/ios/juce_modules/juce_gui_basics/windows/juce_DocumentWindow.cpp +423 -0
  1514. package/ios/juce_modules/juce_gui_basics/windows/juce_DocumentWindow.h +316 -0
  1515. package/ios/juce_modules/juce_gui_basics/windows/juce_MessageBoxOptions.cpp +102 -0
  1516. package/ios/juce_modules/juce_gui_basics/windows/juce_MessageBoxOptions.h +202 -0
  1517. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeMessageBox.cpp +167 -0
  1518. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeMessageBox.h +311 -0
  1519. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeScaleFactorNotifier.cpp +75 -0
  1520. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeScaleFactorNotifier.h +78 -0
  1521. package/ios/juce_modules/juce_gui_basics/windows/juce_ResizableWindow.cpp +679 -0
  1522. package/ios/juce_modules/juce_gui_basics/windows/juce_ResizableWindow.h +427 -0
  1523. package/ios/juce_modules/juce_gui_basics/windows/juce_ScopedMessageBox.cpp +67 -0
  1524. package/ios/juce_modules/juce_gui_basics/windows/juce_ScopedMessageBox.h +78 -0
  1525. package/ios/juce_modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp +128 -0
  1526. package/ios/juce_modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h +184 -0
  1527. package/ios/juce_modules/juce_gui_basics/windows/juce_TooltipWindow.cpp +264 -0
  1528. package/ios/juce_modules/juce_gui_basics/windows/juce_TooltipWindow.h +169 -0
  1529. package/ios/juce_modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp +264 -0
  1530. package/ios/juce_modules/juce_gui_basics/windows/juce_TopLevelWindow.h +176 -0
  1531. package/ios/juce_modules/juce_gui_basics/windows/juce_VBlankAttachment.cpp +122 -0
  1532. package/ios/juce_modules/juce_gui_basics/windows/juce_VBlankAttachment.h +85 -0
  1533. package/ios/juce_modules/juce_gui_basics/windows/juce_WindowUtils.h +51 -0
  1534. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp +83 -0
  1535. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h +81 -0
  1536. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h +683 -0
  1537. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp +1306 -0
  1538. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeDocument.h +459 -0
  1539. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp +1857 -0
  1540. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h +486 -0
  1541. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h +68 -0
  1542. package/ios/juce_modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp +248 -0
  1543. package/ios/juce_modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h +74 -0
  1544. package/ios/juce_modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp +181 -0
  1545. package/ios/juce_modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h +72 -0
  1546. package/ios/juce_modules/juce_gui_extra/detail/juce_WebControlRelayEvents.h +255 -0
  1547. package/ios/juce_modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp +1124 -0
  1548. package/ios/juce_modules/juce_gui_extra/documents/juce_FileBasedDocument.h +440 -0
  1549. package/ios/juce_modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h +142 -0
  1550. package/ios/juce_modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h +91 -0
  1551. package/ios/juce_modules/juce_gui_extra/embedding/juce_HWNDComponent.h +98 -0
  1552. package/ios/juce_modules/juce_gui_extra/embedding/juce_NSViewComponent.h +107 -0
  1553. package/ios/juce_modules/juce_gui_extra/embedding/juce_UIViewComponent.h +99 -0
  1554. package/ios/juce_modules/juce_gui_extra/embedding/juce_XEmbedComponent.h +129 -0
  1555. package/ios/juce_modules/juce_gui_extra/juce_gui_extra.cpp +210 -0
  1556. package/ios/juce_modules/juce_gui_extra/juce_gui_extra.h +161 -0
  1557. package/ios/juce_modules/juce_gui_extra/juce_gui_extra.mm +35 -0
  1558. package/ios/juce_modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp +89 -0
  1559. package/ios/juce_modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h +96 -0
  1560. package/ios/juce_modules/juce_gui_extra/misc/juce_AppleRemote.h +126 -0
  1561. package/ios/juce_modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp +133 -0
  1562. package/ios/juce_modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h +134 -0
  1563. package/ios/juce_modules/juce_gui_extra/misc/juce_ColourSelector.cpp +656 -0
  1564. package/ios/juce_modules/juce_gui_extra/misc/juce_ColourSelector.h +173 -0
  1565. package/ios/juce_modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp +486 -0
  1566. package/ios/juce_modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h +142 -0
  1567. package/ios/juce_modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp +501 -0
  1568. package/ios/juce_modules/juce_gui_extra/misc/juce_LiveConstantEditor.h +310 -0
  1569. package/ios/juce_modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp +165 -0
  1570. package/ios/juce_modules/juce_gui_extra/misc/juce_PreferencesPanel.h +156 -0
  1571. package/ios/juce_modules/juce_gui_extra/misc/juce_PushNotifications.cpp +239 -0
  1572. package/ios/juce_modules/juce_gui_extra/misc/juce_PushNotifications.h +714 -0
  1573. package/ios/juce_modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp +189 -0
  1574. package/ios/juce_modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h +186 -0
  1575. package/ios/juce_modules/juce_gui_extra/misc/juce_SplashScreen.cpp +110 -0
  1576. package/ios/juce_modules/juce_gui_extra/misc/juce_SplashScreen.h +165 -0
  1577. package/ios/juce_modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp +51 -0
  1578. package/ios/juce_modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h +125 -0
  1579. package/ios/juce_modules/juce_gui_extra/misc/juce_WebBrowserComponent.cpp +722 -0
  1580. package/ios/juce_modules/juce_gui_extra/misc/juce_WebBrowserComponent.h +626 -0
  1581. package/ios/juce_modules/juce_gui_extra/misc/juce_WebControlParameterIndexReceiver.h +76 -0
  1582. package/ios/juce_modules/juce_gui_extra/misc/juce_WebControlRelays.cpp +256 -0
  1583. package/ios/juce_modules/juce_gui_extra/misc/juce_WebControlRelays.h +254 -0
  1584. package/ios/juce_modules/juce_gui_extra/native/java/app/com/rmsl/juce/JuceWebViewClasses.java +356 -0
  1585. package/ios/juce_modules/juce_gui_extra/native/javaopt/app/com/rmsl/juce/JuceFirebaseInstanceIdService.java +50 -0
  1586. package/ios/juce_modules/juce_gui_extra/native/javaopt/app/com/rmsl/juce/JuceFirebaseMessagingService.java +69 -0
  1587. package/ios/juce_modules/juce_gui_extra/native/javascript/check_native_interop.js +146 -0
  1588. package/ios/juce_modules/juce_gui_extra/native/javascript/index.js +577 -0
  1589. package/ios/juce_modules/juce_gui_extra/native/javascript/package.json +4 -0
  1590. package/ios/juce_modules/juce_gui_extra/native/juce_ActiveXComponent_windows.cpp +553 -0
  1591. package/ios/juce_modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp +199 -0
  1592. package/ios/juce_modules/juce_gui_extra/native/juce_AppleRemote_mac.mm +285 -0
  1593. package/ios/juce_modules/juce_gui_extra/native/juce_HWNDComponent_windows.cpp +203 -0
  1594. package/ios/juce_modules/juce_gui_extra/native/juce_NSViewComponent_mac.mm +203 -0
  1595. package/ios/juce_modules/juce_gui_extra/native/juce_NSViewFrameWatcher_mac.h +120 -0
  1596. package/ios/juce_modules/juce_gui_extra/native/juce_PushNotifications_android.cpp +1607 -0
  1597. package/ios/juce_modules/juce_gui_extra/native/juce_PushNotifications_ios.cpp +620 -0
  1598. package/ios/juce_modules/juce_gui_extra/native/juce_PushNotifications_mac.cpp +535 -0
  1599. package/ios/juce_modules/juce_gui_extra/native/juce_SystemTrayIcon_linux.cpp +160 -0
  1600. package/ios/juce_modules/juce_gui_extra/native/juce_SystemTrayIcon_mac.cpp +451 -0
  1601. package/ios/juce_modules/juce_gui_extra/native/juce_SystemTrayIcon_windows.cpp +251 -0
  1602. package/ios/juce_modules/juce_gui_extra/native/juce_UIViewComponent_ios.mm +151 -0
  1603. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_android.cpp +953 -0
  1604. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_linux.cpp +1659 -0
  1605. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_mac.mm +1113 -0
  1606. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_windows.cpp +1298 -0
  1607. package/ios/juce_modules/juce_gui_extra/native/juce_XEmbedComponent_linux.cpp +739 -0
  1608. package/package.json +1 -1
  1609. package/ios/JuceModules.mm +0 -14
  1610. package/ios/JuceToneGenerator.h +0 -39
  1611. package/ios/JuceToneGenerator.mm +0 -613
@@ -0,0 +1,2375 @@
1
+ /*
2
+ ==============================================================================
3
+
4
+ This file is part of the JUCE framework.
5
+ Copyright (c) Raw Material Software Limited
6
+
7
+ JUCE is an open source framework subject to commercial or open source
8
+ licensing.
9
+
10
+ By downloading, installing, or using the JUCE framework, or combining the
11
+ JUCE framework with any other source code, object code, content or any other
12
+ copyrightable work, you agree to the terms of the JUCE End User Licence
13
+ Agreement, and all incorporated terms including the JUCE Privacy Policy and
14
+ the JUCE Website Terms of Service, as applicable, which will bind you. If you
15
+ do not agree to the terms of these agreements, we will not license the JUCE
16
+ framework to you, and you must discontinue the installation or download
17
+ process and cease use of the JUCE framework.
18
+
19
+ JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
20
+ JUCE Privacy Policy: https://juce.com/juce-privacy-policy
21
+ JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
22
+
23
+ Or:
24
+
25
+ You may also use this code under the terms of the AGPLv3:
26
+ https://www.gnu.org/licenses/agpl-3.0.en.html
27
+
28
+ THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
29
+ WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
30
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
31
+
32
+ ==============================================================================
33
+ */
34
+
35
+ // Implementation notes:
36
+ // On macOS, calling AudioUnitInitialize will internally call AudioObjectGetPropertyData, which
37
+ // takes a mutex.
38
+ // This same mutex is taken on the audio thread, before calling the audio device's IO callback.
39
+ // This is a property of the CoreAudio implementation - we can't remove or interact directly
40
+ // with these locks in JUCE.
41
+ //
42
+ // AudioProcessor instances expect that their callback lock will be taken before calling
43
+ // processBlock or processBlockBypassed.
44
+ // This means that, to avoid deadlocks, we *always* need to make sure that the CoreAudio mutex
45
+ // is locked before taking the callback lock.
46
+ // Given that we can't interact with the CoreAudio mutex directly, on the main thread we can't
47
+ // call any function that might internally interact with CoreAudio while the callback lock is
48
+ // taken.
49
+ // In particular, be careful not to call `prepareToPlay` on a hosted AudioUnit from the main
50
+ // thread while the callback lock is taken.
51
+ // The graph implementation currently makes sure to call prepareToPlay on the main thread,
52
+ // without taking the graph's callback lock.
53
+
54
+ namespace juce
55
+ {
56
+
57
+ /* Provides a comparison function for various types that have an associated NodeID,
58
+ for use with equal_range, lower_bound etc.
59
+ */
60
+ class ImplicitNode
61
+ {
62
+ public:
63
+ using Node = AudioProcessorGraph::Node;
64
+ using NodeID = AudioProcessorGraph::NodeID;
65
+ using NodeAndChannel = AudioProcessorGraph::NodeAndChannel;
66
+
67
+ ImplicitNode (NodeID x) : node (x) {}
68
+ ImplicitNode (NodeAndChannel x) : ImplicitNode (x.nodeID) {}
69
+ ImplicitNode (const Node* x) : ImplicitNode (x->nodeID) {}
70
+ ImplicitNode (const std::pair<const NodeAndChannel, std::set<NodeAndChannel>>& x) : ImplicitNode (x.first) {}
71
+
72
+ /* This is the comparison function. */
73
+ static bool compare (ImplicitNode a, ImplicitNode b) { return a.node < b.node; }
74
+
75
+ private:
76
+ NodeID node;
77
+ };
78
+
79
+ //==============================================================================
80
+ /* A copyable type holding all the nodes, and allowing fast lookup by id. */
81
+ class Nodes
82
+ {
83
+ public:
84
+ using Node = AudioProcessorGraph::Node;
85
+ using NodeID = AudioProcessorGraph::NodeID;
86
+
87
+ const ReferenceCountedArray<Node>& getNodes() const { return array; }
88
+
89
+ Node::Ptr getNodeForId (NodeID nodeID) const
90
+ {
91
+ const auto iter = std::lower_bound (array.begin(), array.end(), nodeID, ImplicitNode::compare);
92
+ return iter != array.end() && (*iter)->nodeID == nodeID ? *iter : nullptr;
93
+ }
94
+
95
+ Node::Ptr addNode (std::unique_ptr<AudioProcessor> newProcessor, const NodeID nodeID)
96
+ {
97
+ if (newProcessor == nullptr)
98
+ {
99
+ // Cannot add a null audio processor!
100
+ jassertfalse;
101
+ return {};
102
+ }
103
+
104
+ if (std::any_of (array.begin(),
105
+ array.end(),
106
+ [&] (auto* n) { return n->getProcessor() == newProcessor.get(); }))
107
+ {
108
+ // This audio processor has already been added to the graph!
109
+ jassertfalse;
110
+ return {};
111
+ }
112
+
113
+ const auto iter = std::lower_bound (array.begin(), array.end(), nodeID, ImplicitNode::compare);
114
+
115
+ if (iter != array.end() && (*iter)->nodeID == nodeID)
116
+ {
117
+ // This nodeID has already been used for a node in the graph!
118
+ jassertfalse;
119
+ return {};
120
+ }
121
+
122
+ return array.insert ((int) std::distance (array.begin(), iter),
123
+ new Node { nodeID, std::move (newProcessor) });
124
+ }
125
+
126
+ Node::Ptr removeNode (NodeID nodeID)
127
+ {
128
+ const auto iter = std::lower_bound (array.begin(), array.end(), nodeID, ImplicitNode::compare);
129
+ return iter != array.end() && (*iter)->nodeID == nodeID
130
+ ? array.removeAndReturn ((int) std::distance (array.begin(), iter))
131
+ : nullptr;
132
+ }
133
+
134
+ bool operator== (const Nodes& other) const { return array == other.array; }
135
+ bool operator!= (const Nodes& other) const { return array != other.array; }
136
+
137
+ private:
138
+ ReferenceCountedArray<Node> array;
139
+ };
140
+
141
+ //==============================================================================
142
+ /* A value type holding a full set of graph connections. */
143
+ class Connections
144
+ {
145
+ public:
146
+ using Node = AudioProcessorGraph::Node;
147
+ using NodeID = AudioProcessorGraph::NodeID;
148
+ using Connection = AudioProcessorGraph::Connection;
149
+ using NodeAndChannel = AudioProcessorGraph::NodeAndChannel;
150
+
151
+ private:
152
+ static auto equalRange (const std::set<NodeAndChannel>& pins, const NodeID node)
153
+ {
154
+ return std::equal_range (pins.cbegin(), pins.cend(), node, ImplicitNode::compare);
155
+ }
156
+
157
+ using Map = std::map<NodeAndChannel, std::set<NodeAndChannel>>;
158
+
159
+ public:
160
+ static constexpr auto midiChannelIndex = AudioProcessorGraph::midiChannelIndex;
161
+
162
+ bool addConnection (const Nodes& n, const Connection& c)
163
+ {
164
+ if (! canConnect (n, c))
165
+ return false;
166
+
167
+ sourcesForDestination[c.destination].insert (c.source);
168
+ jassert (isConnected (c));
169
+ return true;
170
+ }
171
+
172
+ bool removeConnection (const Connection& c)
173
+ {
174
+ const auto iter = sourcesForDestination.find (c.destination);
175
+ return iter != sourcesForDestination.cend() && iter->second.erase (c.source) == 1;
176
+ }
177
+
178
+ bool removeIllegalConnections (const Nodes& n)
179
+ {
180
+ auto anyRemoved = false;
181
+
182
+ for (auto& dest : sourcesForDestination)
183
+ {
184
+ const auto initialSize = dest.second.size();
185
+ dest.second = removeIllegalConnections (n, std::move (dest.second), dest.first);
186
+ anyRemoved |= (dest.second.size() != initialSize);
187
+ }
188
+
189
+ return anyRemoved;
190
+ }
191
+
192
+ bool disconnectNode (NodeID n)
193
+ {
194
+ const auto matchingDestinations = getMatchingDestinations (n);
195
+ auto result = matchingDestinations.first != matchingDestinations.second;
196
+ sourcesForDestination.erase (matchingDestinations.first, matchingDestinations.second);
197
+
198
+ for (auto& pair : sourcesForDestination)
199
+ {
200
+ const auto range = equalRange (pair.second, n);
201
+ result |= range.first != range.second;
202
+ pair.second.erase (range.first, range.second);
203
+ }
204
+
205
+ return result;
206
+ }
207
+
208
+ static bool isConnectionLegal (const Nodes& n, Connection c)
209
+ {
210
+ const auto source = n.getNodeForId (c.source .nodeID);
211
+ const auto dest = n.getNodeForId (c.destination.nodeID);
212
+
213
+ const auto sourceChannel = c.source .channelIndex;
214
+ const auto destChannel = c.destination.channelIndex;
215
+
216
+ const auto sourceIsMIDI = AudioProcessorGraph::midiChannelIndex == sourceChannel;
217
+ const auto destIsMIDI = AudioProcessorGraph::midiChannelIndex == destChannel;
218
+
219
+ return sourceChannel >= 0
220
+ && destChannel >= 0
221
+ && source != dest
222
+ && sourceIsMIDI == destIsMIDI
223
+ && source != nullptr
224
+ && (sourceIsMIDI
225
+ ? source->getProcessor()->producesMidi()
226
+ : sourceChannel < source->getProcessor()->getTotalNumOutputChannels())
227
+ && dest != nullptr
228
+ && (destIsMIDI
229
+ ? dest->getProcessor()->acceptsMidi()
230
+ : destChannel < dest->getProcessor()->getTotalNumInputChannels());
231
+ }
232
+
233
+ bool canConnect (const Nodes& n, Connection c) const
234
+ {
235
+ return isConnectionLegal (n, c) && ! isConnected (c);
236
+ }
237
+
238
+ bool isConnected (Connection c) const
239
+ {
240
+ const auto iter = sourcesForDestination.find (c.destination);
241
+
242
+ return iter != sourcesForDestination.cend()
243
+ && iter->second.find (c.source) != iter->second.cend();
244
+ }
245
+
246
+ bool isConnected (NodeID srcID, NodeID destID) const
247
+ {
248
+ const auto matchingDestinations = getMatchingDestinations (destID);
249
+
250
+ return std::any_of (matchingDestinations.first, matchingDestinations.second, [srcID] (const auto& pair)
251
+ {
252
+ const auto [begin, end] = equalRange (pair.second, srcID);
253
+ return begin != end;
254
+ });
255
+ }
256
+
257
+ std::set<NodeID> getSourceNodesForDestination (NodeID destID) const
258
+ {
259
+ const auto matchingDestinations = getMatchingDestinations (destID);
260
+
261
+ std::set<NodeID> result;
262
+ std::for_each (matchingDestinations.first, matchingDestinations.second, [&] (const auto& pair)
263
+ {
264
+ for (const auto& source : pair.second)
265
+ result.insert (source.nodeID);
266
+ });
267
+ return result;
268
+ }
269
+
270
+ std::set<NodeAndChannel> getSourcesForDestination (const NodeAndChannel& p) const
271
+ {
272
+ const auto iter = sourcesForDestination.find (p);
273
+ return iter != sourcesForDestination.cend() ? iter->second : std::set<NodeAndChannel>{};
274
+ }
275
+
276
+ std::vector<Connection> getConnections() const
277
+ {
278
+ std::vector<Connection> result;
279
+
280
+ for (auto& pair : sourcesForDestination)
281
+ for (const auto& source : pair.second)
282
+ result.emplace_back (source, pair.first);
283
+
284
+ std::sort (result.begin(), result.end());
285
+ result.erase (std::unique (result.begin(), result.end()), result.end());
286
+ return result;
287
+ }
288
+
289
+ bool isAnInputTo (NodeID source, NodeID dest) const
290
+ {
291
+ return getConnectedRecursive (source, dest, {}).found;
292
+ }
293
+
294
+ bool operator== (const Connections& other) const { return sourcesForDestination == other.sourcesForDestination; }
295
+ bool operator!= (const Connections& other) const { return sourcesForDestination != other.sourcesForDestination; }
296
+
297
+ class DestinationsForSources
298
+ {
299
+ public:
300
+ explicit DestinationsForSources (Map m) : map (std::move (m)) {}
301
+
302
+ bool isSourceConnectedToDestinationNodeIgnoringChannel (const NodeAndChannel& source, NodeID dest, int channel) const
303
+ {
304
+ if (const auto destIter = map.find (source); destIter != map.cend())
305
+ {
306
+ const auto [begin, end] = equalRange (destIter->second, dest);
307
+ return std::any_of (begin, end, [&] (const NodeAndChannel& nodeAndChannel)
308
+ {
309
+ return nodeAndChannel != NodeAndChannel { dest, channel };
310
+ });
311
+ }
312
+
313
+ return false;
314
+ }
315
+
316
+ private:
317
+ Map map;
318
+ };
319
+
320
+ /* Reverses the graph, to allow fast lookup by source.
321
+ This is expensive, don't call this more than necessary!
322
+ */
323
+ auto getDestinationsForSources() const
324
+ {
325
+ Map destinationsForSources;
326
+
327
+ for (const auto& [destination, sources] : sourcesForDestination)
328
+ for (const auto& source : sources)
329
+ destinationsForSources[source].insert (destination);
330
+
331
+ return DestinationsForSources (std::move (destinationsForSources));
332
+ }
333
+
334
+ private:
335
+ struct SearchState
336
+ {
337
+ std::set<NodeID> visited;
338
+ bool found = false;
339
+ };
340
+
341
+ SearchState getConnectedRecursive (NodeID source, NodeID dest, SearchState state) const
342
+ {
343
+ state.visited.insert (dest);
344
+
345
+ for (const auto& s : getSourceNodesForDestination (dest))
346
+ {
347
+ if (state.found || s == source)
348
+ return { std::move (state.visited), true };
349
+
350
+ if (state.visited.find (s) == state.visited.cend())
351
+ state = getConnectedRecursive (source, s, std::move (state));
352
+ }
353
+
354
+ return state;
355
+ }
356
+
357
+ static std::set<NodeAndChannel> removeIllegalConnections (const Nodes& nodes,
358
+ std::set<NodeAndChannel> sources,
359
+ NodeAndChannel destination)
360
+ {
361
+ for (auto source = sources.cbegin(); source != sources.cend();)
362
+ {
363
+ if (! isConnectionLegal (nodes, { *source, destination }))
364
+ source = sources.erase (source);
365
+ else
366
+ ++source;
367
+ }
368
+
369
+ return sources;
370
+ }
371
+
372
+ std::pair<Map::const_iterator, Map::const_iterator> getMatchingDestinations (NodeID destID) const
373
+ {
374
+ return std::equal_range (sourcesForDestination.cbegin(), sourcesForDestination.cend(), destID, ImplicitNode::compare);
375
+ }
376
+
377
+ Map sourcesForDestination;
378
+ };
379
+
380
+ //==============================================================================
381
+ /* Settings used to prepare a node for playback. */
382
+ struct PrepareSettings
383
+ {
384
+ using ProcessingPrecision = AudioProcessorGraph::ProcessingPrecision;
385
+
386
+ ProcessingPrecision precision = ProcessingPrecision::singlePrecision;
387
+ double sampleRate = 0.0;
388
+ int blockSize = 0;
389
+
390
+ auto tie() const noexcept { return std::tie (precision, sampleRate, blockSize); }
391
+
392
+ bool operator== (const PrepareSettings& other) const { return tie() == other.tie(); }
393
+ bool operator!= (const PrepareSettings& other) const { return tie() != other.tie(); }
394
+ };
395
+
396
+ //==============================================================================
397
+ /* Keeps track of the PrepareSettings applied to each node. */
398
+ class NodeStates
399
+ {
400
+ public:
401
+ using Node = AudioProcessorGraph::Node;
402
+ using NodeID = AudioProcessorGraph::NodeID;
403
+
404
+ /* Called from prepareToPlay and releaseResources with the PrepareSettings that should be
405
+ used next time the graph is rebuilt.
406
+ */
407
+ void setState (std::optional<PrepareSettings> newSettings)
408
+ {
409
+ const std::lock_guard<std::mutex> lock (mutex);
410
+ next = newSettings;
411
+ }
412
+
413
+ /* Call from the audio thread only. */
414
+ std::optional<PrepareSettings> getLastRequestedSettings() const { return next; }
415
+
416
+ /* Call from the main thread only!
417
+
418
+ Called after updating the graph topology to prepare any currently-unprepared nodes.
419
+
420
+ To ensure that all nodes are initialised with the same sample rate, buffer size, etc. as
421
+ the enclosing graph, we must ensure that any operation that uses these details (preparing
422
+ individual nodes) is synchronized with prepare-to-play and release-resources on the
423
+ enclosing graph.
424
+
425
+ If the new PrepareSettings are different to the last-seen settings, all nodes will
426
+ be prepared/unprepared as necessary. If the PrepareSettings have not changed, then only
427
+ new nodes will be prepared/unprepared.
428
+
429
+ Returns the settings that were applied to the nodes.
430
+ */
431
+ std::optional<PrepareSettings> applySettings (const Nodes& n)
432
+ {
433
+ const auto settingsChanged = [this]
434
+ {
435
+ const std::lock_guard<std::mutex> lock (mutex);
436
+ const auto result = current != next;
437
+ current = next;
438
+ return result;
439
+ }();
440
+
441
+ // It may look like releaseResources and prepareToPlay could race with calls to processBlock
442
+ // here, because applySettings is called from the main thread, processBlock is called from
443
+ // the audio thread (normally), and there's no explicit mutex ensuring that the calls don't
444
+ // overlap.
445
+ // However, it is part of the AudioProcessor contract that users shall not call
446
+ // processBlock, prepareToPlay, and/or releaseResources concurrently. That is, there's an
447
+ // implied mutex synchronising these functions on each AudioProcessor.
448
+ //
449
+ // Inside processBlock, we always ensure that the current RenderSequence's PrepareSettings
450
+ // match the graph's settings before attempting to call processBlock on any of the graph
451
+ // nodes; as a result, it's impossible to start calling processBlock on a node on the audio
452
+ // thread while a render sequence rebuild (including prepareToPlay/releaseResources calls)
453
+ // is already in progress here.
454
+ //
455
+ // Due to the implied mutex between prepareToPlay/releaseResources/processBlock, it's also
456
+ // impossible to receive new PrepareSettings and to start a new RenderSequence rebuild while
457
+ // a processBlock call is in progress.
458
+
459
+ if (settingsChanged)
460
+ {
461
+ for (const auto& node : n.getNodes())
462
+ node->getProcessor()->releaseResources();
463
+
464
+ preparedNodes.clear();
465
+ }
466
+
467
+ if (current.has_value())
468
+ {
469
+ for (const auto& node : n.getNodes())
470
+ {
471
+ if (preparedNodes.find (node->nodeID) != preparedNodes.cend())
472
+ continue;
473
+
474
+ preparedNodes.insert (node->nodeID);
475
+
476
+ node->getProcessor()->setProcessingPrecision (node->getProcessor()->supportsDoublePrecisionProcessing() ? current->precision
477
+ : AudioProcessor::singlePrecision);
478
+ node->getProcessor()->setRateAndBufferSizeDetails (current->sampleRate, current->blockSize);
479
+ node->getProcessor()->prepareToPlay (current->sampleRate, current->blockSize);
480
+ }
481
+ }
482
+
483
+ return current;
484
+ }
485
+
486
+ /* Call from the main thread to indicate that a node has been removed from the graph.
487
+ */
488
+ void removeNode (const NodeID n)
489
+ {
490
+ preparedNodes.erase (n);
491
+ }
492
+
493
+ /* Call from the main thread to indicate that all nodes have been removed from the graph.
494
+ */
495
+ void clear()
496
+ {
497
+ preparedNodes.clear();
498
+ }
499
+
500
+ private:
501
+ std::mutex mutex;
502
+ std::set<NodeID> preparedNodes;
503
+ std::optional<PrepareSettings> current, next;
504
+ };
505
+
506
+ //==============================================================================
507
+ template <typename FloatType>
508
+ struct GraphRenderSequence
509
+ {
510
+ using Node = AudioProcessorGraph::Node;
511
+
512
+ struct GlobalIO
513
+ {
514
+ AudioBuffer<FloatType>& audioIn;
515
+ AudioBuffer<FloatType>& audioOut;
516
+ MidiBuffer& midiIn;
517
+ MidiBuffer& midiOut;
518
+ };
519
+
520
+ struct Context
521
+ {
522
+ GlobalIO globalIO;
523
+ AudioPlayHead* audioPlayHead;
524
+ int numSamples;
525
+ };
526
+
527
+ void perform (AudioBuffer<FloatType>& buffer, MidiBuffer& midiMessages, AudioPlayHead* audioPlayHead)
528
+ {
529
+ auto numSamples = buffer.getNumSamples();
530
+ auto maxSamples = renderingBuffer.getNumSamples();
531
+
532
+ if (numSamples > maxSamples)
533
+ {
534
+ // Being asked to render more samples than our buffers have, so divide the buffer into chunks
535
+ int chunkStartSample = 0;
536
+ while (chunkStartSample < numSamples)
537
+ {
538
+ auto chunkSize = jmin (maxSamples, numSamples - chunkStartSample);
539
+
540
+ AudioBuffer<FloatType> audioChunk (buffer.getArrayOfWritePointers(), buffer.getNumChannels(), chunkStartSample, chunkSize);
541
+ midiChunk.clear();
542
+ midiChunk.addEvents (midiMessages, chunkStartSample, chunkSize, -chunkStartSample);
543
+
544
+ // Splitting up the buffer like this will cause the play head and host time to be
545
+ // invalid for all but the first chunk...
546
+ perform (audioChunk, midiChunk, audioPlayHead);
547
+
548
+ chunkStartSample += maxSamples;
549
+ }
550
+
551
+ return;
552
+ }
553
+
554
+ currentAudioOutputBuffer.setSize (jmax (1, buffer.getNumChannels()), numSamples);
555
+ currentAudioOutputBuffer.clear();
556
+ currentMidiOutputBuffer.clear();
557
+
558
+ {
559
+ const Context context { { buffer,
560
+ currentAudioOutputBuffer,
561
+ midiMessages,
562
+ currentMidiOutputBuffer },
563
+ audioPlayHead,
564
+ numSamples };
565
+
566
+ for (const auto& op : renderOps)
567
+ op->process (context);
568
+ }
569
+
570
+ for (int i = 0; i < buffer.getNumChannels(); ++i)
571
+ buffer.copyFrom (i, 0, currentAudioOutputBuffer, i, 0, numSamples);
572
+
573
+ midiMessages.clear();
574
+ midiMessages.addEvents (currentMidiOutputBuffer, 0, buffer.getNumSamples(), 0);
575
+ }
576
+
577
+ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4661)
578
+
579
+ void addClearChannelOp (int index)
580
+ {
581
+ struct ClearOp final : public RenderOp
582
+ {
583
+ explicit ClearOp (int indexIn) : index (indexIn) {}
584
+
585
+ void prepare (FloatType* const* renderBuffer, MidiBuffer*) override
586
+ {
587
+ channelBuffer = renderBuffer[index];
588
+ }
589
+
590
+ void process (const Context& c) override
591
+ {
592
+ FloatVectorOperations::clear (channelBuffer, c.numSamples);
593
+ }
594
+
595
+ FloatType* channelBuffer = nullptr;
596
+ int index = 0;
597
+ };
598
+
599
+ renderOps.push_back (std::make_unique<ClearOp> (index));
600
+ }
601
+
602
+ void addCopyChannelOp (int srcIndex, int dstIndex)
603
+ {
604
+ struct CopyOp final : public RenderOp
605
+ {
606
+ explicit CopyOp (int fromIn, int toIn) : from (fromIn), to (toIn) {}
607
+
608
+ void prepare (FloatType* const* renderBuffer, MidiBuffer*) override
609
+ {
610
+ fromBuffer = renderBuffer[from];
611
+ toBuffer = renderBuffer[to];
612
+ }
613
+
614
+ void process (const Context& c) override
615
+ {
616
+ FloatVectorOperations::copy (toBuffer, fromBuffer, c.numSamples);
617
+ }
618
+
619
+ FloatType* fromBuffer = nullptr;
620
+ FloatType* toBuffer = nullptr;
621
+ int from = 0, to = 0;
622
+ };
623
+
624
+ renderOps.push_back (std::make_unique<CopyOp> (srcIndex, dstIndex));
625
+ }
626
+
627
+ void addAddChannelOp (int srcIndex, int dstIndex)
628
+ {
629
+ struct AddOp final : public RenderOp
630
+ {
631
+ explicit AddOp (int fromIn, int toIn) : from (fromIn), to (toIn) {}
632
+
633
+ void prepare (FloatType* const* renderBuffer, MidiBuffer*) override
634
+ {
635
+ fromBuffer = renderBuffer[from];
636
+ toBuffer = renderBuffer[to];
637
+ }
638
+
639
+ void process (const Context& c) override
640
+ {
641
+ FloatVectorOperations::add (toBuffer, fromBuffer, c.numSamples);
642
+ }
643
+
644
+ FloatType* fromBuffer = nullptr;
645
+ FloatType* toBuffer = nullptr;
646
+ int from = 0, to = 0;
647
+ };
648
+
649
+ renderOps.push_back (std::make_unique<AddOp> (srcIndex, dstIndex));
650
+ }
651
+
652
+ JUCE_END_IGNORE_WARNINGS_MSVC
653
+
654
+ void addClearMidiBufferOp (int index)
655
+ {
656
+ struct ClearOp final : public RenderOp
657
+ {
658
+ explicit ClearOp (int indexIn) : index (indexIn) {}
659
+
660
+ void prepare (FloatType* const*, MidiBuffer* buffers) override
661
+ {
662
+ channelBuffer = buffers + index;
663
+ }
664
+
665
+ void process (const Context&) override
666
+ {
667
+ channelBuffer->clear();
668
+ }
669
+
670
+ MidiBuffer* channelBuffer = nullptr;
671
+ int index = 0;
672
+ };
673
+
674
+ renderOps.push_back (std::make_unique<ClearOp> (index));
675
+ }
676
+
677
+ void addCopyMidiBufferOp (int srcIndex, int dstIndex)
678
+ {
679
+ struct CopyOp final : public RenderOp
680
+ {
681
+ explicit CopyOp (int fromIn, int toIn) : from (fromIn), to (toIn) {}
682
+
683
+ void prepare (FloatType* const*, MidiBuffer* buffers) override
684
+ {
685
+ fromBuffer = buffers + from;
686
+ toBuffer = buffers + to;
687
+ }
688
+
689
+ void process (const Context&) override
690
+ {
691
+ *toBuffer = *fromBuffer;
692
+ }
693
+
694
+ MidiBuffer* fromBuffer = nullptr;
695
+ MidiBuffer* toBuffer = nullptr;
696
+ int from = 0, to = 0;
697
+ };
698
+
699
+ renderOps.push_back (std::make_unique<CopyOp> (srcIndex, dstIndex));
700
+ }
701
+
702
+ void addAddMidiBufferOp (int srcIndex, int dstIndex)
703
+ {
704
+ struct AddOp final : public RenderOp
705
+ {
706
+ explicit AddOp (int fromIn, int toIn) : from (fromIn), to (toIn) {}
707
+
708
+ void prepare (FloatType* const*, MidiBuffer* buffers) override
709
+ {
710
+ fromBuffer = buffers + from;
711
+ toBuffer = buffers + to;
712
+ }
713
+
714
+ void process (const Context& c) override
715
+ {
716
+ toBuffer->addEvents (*fromBuffer, 0, c.numSamples, 0);
717
+ }
718
+
719
+ MidiBuffer* fromBuffer = nullptr;
720
+ MidiBuffer* toBuffer = nullptr;
721
+ int from = 0, to = 0;
722
+ };
723
+
724
+ renderOps.push_back (std::make_unique<AddOp> (srcIndex, dstIndex));
725
+ }
726
+
727
+ void addDelayChannelOp (int chan, int delaySize)
728
+ {
729
+ struct DelayChannelOp final : public RenderOp
730
+ {
731
+ DelayChannelOp (int chan, int delaySize)
732
+ : buffer ((size_t) (delaySize + 1), (FloatType) 0),
733
+ channel (chan),
734
+ writeIndex (delaySize)
735
+ {
736
+ }
737
+
738
+ void prepare (FloatType* const* renderBuffer, MidiBuffer*) override
739
+ {
740
+ channelBuffer = renderBuffer[channel];
741
+ }
742
+
743
+ void process (const Context& c) override
744
+ {
745
+ auto* data = channelBuffer;
746
+
747
+ for (int i = c.numSamples; --i >= 0;)
748
+ {
749
+ buffer[(size_t) writeIndex] = *data;
750
+ *data++ = buffer[(size_t) readIndex];
751
+
752
+ if (++readIndex >= (int) buffer.size()) readIndex = 0;
753
+ if (++writeIndex >= (int) buffer.size()) writeIndex = 0;
754
+ }
755
+ }
756
+
757
+ std::vector<FloatType> buffer;
758
+ FloatType* channelBuffer = nullptr;
759
+ const int channel;
760
+ int readIndex = 0, writeIndex;
761
+ };
762
+
763
+ renderOps.push_back (std::make_unique<DelayChannelOp> (chan, delaySize));
764
+ }
765
+
766
+ void addProcessOp (const Node::Ptr& node,
767
+ const Array<int>& audioChannelsUsed,
768
+ int totalNumChans,
769
+ int midiBuffer)
770
+ {
771
+ auto op = [&]() -> std::unique_ptr<NodeOp>
772
+ {
773
+ if (auto* ioNode = dynamic_cast<const AudioProcessorGraph::AudioGraphIOProcessor*> (node->getProcessor()))
774
+ {
775
+ switch (ioNode->getType())
776
+ {
777
+ case AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode:
778
+ return std::make_unique<AudioInOp> (node, audioChannelsUsed, totalNumChans, midiBuffer);
779
+
780
+ case AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode:
781
+ return std::make_unique<AudioOutOp> (node, audioChannelsUsed, totalNumChans, midiBuffer);
782
+
783
+ case AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode:
784
+ return std::make_unique<MidiInOp> (node, audioChannelsUsed, totalNumChans, midiBuffer);
785
+
786
+ case AudioProcessorGraph::AudioGraphIOProcessor::midiOutputNode:
787
+ return std::make_unique<MidiOutOp> (node, audioChannelsUsed, totalNumChans, midiBuffer);
788
+ }
789
+ }
790
+
791
+ return std::make_unique<ProcessOp> (node, audioChannelsUsed, totalNumChans, midiBuffer);
792
+ }();
793
+
794
+ renderOps.push_back (std::move (op));
795
+ }
796
+
797
+ void prepareBuffers (int blockSize)
798
+ {
799
+ renderingBuffer.setSize (numBuffersNeeded + 1, blockSize);
800
+ renderingBuffer.clear();
801
+ currentAudioOutputBuffer.setSize (numBuffersNeeded + 1, blockSize);
802
+ currentAudioOutputBuffer.clear();
803
+
804
+ currentMidiOutputBuffer.clear();
805
+
806
+ midiBuffers.clearQuick();
807
+ midiBuffers.resize (numMidiBuffersNeeded);
808
+
809
+ const int defaultMIDIBufferSize = 512;
810
+
811
+ midiChunk.ensureSize (defaultMIDIBufferSize);
812
+
813
+ for (auto&& m : midiBuffers)
814
+ m.ensureSize (defaultMIDIBufferSize);
815
+
816
+ for (const auto& op : renderOps)
817
+ op->prepare (renderingBuffer.getArrayOfWritePointers(), midiBuffers.data());
818
+ }
819
+
820
+ int numBuffersNeeded = 0, numMidiBuffersNeeded = 0;
821
+
822
+ AudioBuffer<FloatType> renderingBuffer, currentAudioOutputBuffer;
823
+
824
+ MidiBuffer currentMidiOutputBuffer;
825
+
826
+ Array<MidiBuffer> midiBuffers;
827
+ MidiBuffer midiChunk;
828
+
829
+ private:
830
+ //==============================================================================
831
+ struct RenderOp
832
+ {
833
+ virtual ~RenderOp() = default;
834
+ virtual void prepare (FloatType* const*, MidiBuffer*) = 0;
835
+ virtual void process (const Context&) = 0;
836
+ };
837
+
838
+ struct NodeOp : public RenderOp
839
+ {
840
+ NodeOp (const Node::Ptr& n,
841
+ const Array<int>& audioChannelsUsed,
842
+ int totalNumChans,
843
+ int midiBufferIndex)
844
+ : node (n),
845
+ processor (*n->getProcessor()),
846
+ audioChannelsToUse (audioChannelsUsed),
847
+ audioChannels ((size_t) jmax (1, totalNumChans), nullptr),
848
+ midiBufferToUse (midiBufferIndex)
849
+ {
850
+ while (audioChannelsToUse.size() < (int) audioChannels.size())
851
+ audioChannelsToUse.add (0);
852
+ }
853
+
854
+ void prepare (FloatType* const* renderBuffer, MidiBuffer* buffers) final
855
+ {
856
+ for (size_t i = 0; i < audioChannels.size(); ++i)
857
+ audioChannels[i] = renderBuffer[audioChannelsToUse.getUnchecked ((int) i)];
858
+
859
+ midiBuffer = buffers + midiBufferToUse;
860
+ }
861
+
862
+ void process (const Context& c) final
863
+ {
864
+ processor.setPlayHead (c.audioPlayHead);
865
+
866
+ auto numAudioChannels = [this]
867
+ {
868
+ if (const auto* proc = node->getProcessor())
869
+ if (proc->getTotalNumInputChannels() == 0 && proc->getTotalNumOutputChannels() == 0)
870
+ return 0;
871
+
872
+ return (int) audioChannels.size();
873
+ }();
874
+
875
+ AudioBuffer<FloatType> buffer { audioChannels.data(), numAudioChannels, c.numSamples };
876
+
877
+ if (processor.isSuspended())
878
+ {
879
+ buffer.clear();
880
+ }
881
+ else
882
+ {
883
+ const auto bypass = node->isBypassed() && processor.getBypassParameter() == nullptr;
884
+ processWithBuffer (c.globalIO, bypass, buffer, *midiBuffer);
885
+ }
886
+ }
887
+
888
+ virtual void processWithBuffer (const GlobalIO&, bool bypass, AudioBuffer<FloatType>& audio, MidiBuffer& midi) = 0;
889
+
890
+ const Node::Ptr node;
891
+ AudioProcessor& processor;
892
+ MidiBuffer* midiBuffer = nullptr;
893
+
894
+ Array<int> audioChannelsToUse;
895
+ std::vector<FloatType*> audioChannels;
896
+ const int midiBufferToUse;
897
+ };
898
+
899
+ struct ProcessOp final : public NodeOp
900
+ {
901
+ using NodeOp::NodeOp;
902
+
903
+ void processWithBuffer (const GlobalIO&, bool bypass, AudioBuffer<FloatType>& audio, MidiBuffer& midi) final
904
+ {
905
+ callProcess (bypass, audio, midi);
906
+ }
907
+
908
+ void callProcess (bool bypass, AudioBuffer<float>& buffer, MidiBuffer& midi)
909
+ {
910
+ if (this->processor.isUsingDoublePrecision())
911
+ {
912
+ tempBufferDouble.makeCopyOf (buffer, true);
913
+ processImpl (bypass, this->processor, tempBufferDouble, midi);
914
+ buffer.makeCopyOf (tempBufferDouble, true);
915
+ }
916
+ else
917
+ {
918
+ processImpl (bypass, this->processor, buffer, midi);
919
+ }
920
+ }
921
+
922
+ void callProcess (bool bypass, AudioBuffer<double>& buffer, MidiBuffer& midi)
923
+ {
924
+ if (this->processor.isUsingDoublePrecision())
925
+ {
926
+ processImpl (bypass, this->processor, buffer, midi);
927
+ }
928
+ else
929
+ {
930
+ tempBufferFloat.makeCopyOf (buffer, true);
931
+ processImpl (bypass, this->processor, tempBufferFloat, midi);
932
+ buffer.makeCopyOf (tempBufferFloat, true);
933
+ }
934
+ }
935
+
936
+ template <typename Value>
937
+ static void processImpl (bool bypass, AudioProcessor& p, AudioBuffer<Value>& audio, MidiBuffer& midi)
938
+ {
939
+ if (bypass)
940
+ p.processBlockBypassed (audio, midi);
941
+ else
942
+ p.processBlock (audio, midi);
943
+ }
944
+
945
+ AudioBuffer<float> tempBufferFloat, tempBufferDouble;
946
+ };
947
+
948
+ struct MidiInOp final : public NodeOp
949
+ {
950
+ using NodeOp::NodeOp;
951
+
952
+ void processWithBuffer (const GlobalIO& g, bool bypass, AudioBuffer<FloatType>& audio, MidiBuffer& midi) final
953
+ {
954
+ if (! bypass)
955
+ midi.addEvents (g.midiIn, 0, audio.getNumSamples(), 0);
956
+ }
957
+ };
958
+
959
+ struct MidiOutOp final : public NodeOp
960
+ {
961
+ using NodeOp::NodeOp;
962
+
963
+ void processWithBuffer (const GlobalIO& g, bool bypass, AudioBuffer<FloatType>& audio, MidiBuffer& midi) final
964
+ {
965
+ if (! bypass)
966
+ g.midiOut.addEvents (midi, 0, audio.getNumSamples(), 0);
967
+ }
968
+ };
969
+
970
+ struct AudioInOp final : public NodeOp
971
+ {
972
+ using NodeOp::NodeOp;
973
+
974
+ void processWithBuffer (const GlobalIO& g, bool bypass, AudioBuffer<FloatType>& audio, MidiBuffer&) final
975
+ {
976
+ if (bypass)
977
+ return;
978
+
979
+ for (int i = jmin (g.audioIn.getNumChannels(), audio.getNumChannels()); --i >= 0;)
980
+ audio.copyFrom (i, 0, g.audioIn, i, 0, audio.getNumSamples());
981
+ }
982
+ };
983
+
984
+ struct AudioOutOp final : public NodeOp
985
+ {
986
+ using NodeOp::NodeOp;
987
+
988
+ void processWithBuffer (const GlobalIO& g, bool bypass, AudioBuffer<FloatType>& audio, MidiBuffer&) final
989
+ {
990
+ if (bypass)
991
+ return;
992
+
993
+ for (int i = jmin (g.audioOut.getNumChannels(), audio.getNumChannels()); --i >= 0;)
994
+ g.audioOut.addFrom (i, 0, audio, i, 0, audio.getNumSamples());
995
+ }
996
+ };
997
+
998
+ std::vector<std::unique_ptr<RenderOp>> renderOps;
999
+ };
1000
+
1001
+ //==============================================================================
1002
+ struct SequenceAndLatency
1003
+ {
1004
+ using RenderSequenceVariant = std::variant<GraphRenderSequence<float>,
1005
+ GraphRenderSequence<double>>;
1006
+
1007
+ RenderSequenceVariant sequence;
1008
+ int latencySamples = 0;
1009
+ };
1010
+
1011
+ //==============================================================================
1012
+ class RenderSequenceBuilder
1013
+ {
1014
+ public:
1015
+ using Node = AudioProcessorGraph::Node;
1016
+ using NodeID = AudioProcessorGraph::NodeID;
1017
+ using Connection = AudioProcessorGraph::Connection;
1018
+ using NodeAndChannel = AudioProcessorGraph::NodeAndChannel;
1019
+
1020
+ static constexpr auto midiChannelIndex = AudioProcessorGraph::midiChannelIndex;
1021
+
1022
+ template <typename FloatType>
1023
+ static SequenceAndLatency build (const Nodes& n, const Connections& c)
1024
+ {
1025
+ GraphRenderSequence<FloatType> sequence;
1026
+ const RenderSequenceBuilder builder (n, c, sequence);
1027
+ return { std::move (sequence), builder.totalLatency };
1028
+ }
1029
+
1030
+ private:
1031
+ //==============================================================================
1032
+ const Array<Node*> orderedNodes;
1033
+
1034
+ struct AssignedBuffer
1035
+ {
1036
+ NodeAndChannel channel;
1037
+
1038
+ static AssignedBuffer createReadOnlyEmpty() noexcept { return { { zeroNodeID(), 0 } }; }
1039
+ static AssignedBuffer createFree() noexcept { return { { freeNodeID(), 0 } }; }
1040
+
1041
+ bool isReadOnlyEmpty() const noexcept { return channel.nodeID == zeroNodeID(); }
1042
+ bool isFree() const noexcept { return channel.nodeID == freeNodeID(); }
1043
+ bool isAssigned() const noexcept { return ! (isReadOnlyEmpty() || isFree()); }
1044
+
1045
+ void setFree() noexcept { channel = { freeNodeID(), 0 }; }
1046
+ void setAssignedToNonExistentNode() noexcept { channel = { anonNodeID(), 0 }; }
1047
+
1048
+ private:
1049
+ static NodeID anonNodeID() { return NodeID (0x7ffffffd); }
1050
+ static NodeID zeroNodeID() { return NodeID (0x7ffffffe); }
1051
+ static NodeID freeNodeID() { return NodeID (0x7fffffff); }
1052
+ };
1053
+
1054
+ Array<AssignedBuffer> audioBuffers, midiBuffers;
1055
+
1056
+ enum { readOnlyEmptyBufferIndex = 0 };
1057
+
1058
+ std::unordered_map<uint32, int> delays;
1059
+ int totalLatency = 0;
1060
+
1061
+ int getNodeDelay (NodeID nodeID) const noexcept
1062
+ {
1063
+ const auto iter = delays.find (nodeID.uid);
1064
+ return iter != delays.end() ? iter->second : 0;
1065
+ }
1066
+
1067
+ int getInputLatencyForNode (const Connections& c, NodeID nodeID) const
1068
+ {
1069
+ const auto sources = c.getSourceNodesForDestination (nodeID);
1070
+ return std::accumulate (sources.cbegin(), sources.cend(), 0, [this] (auto acc, auto source)
1071
+ {
1072
+ return jmax (acc, this->getNodeDelay (source));
1073
+ });
1074
+ }
1075
+
1076
+ //==============================================================================
1077
+ void getAllParentsOfNode (const NodeID& child,
1078
+ std::set<NodeID>& parents,
1079
+ const std::map<NodeID, std::set<NodeID>>& otherParents,
1080
+ const Connections& c)
1081
+ {
1082
+ for (const auto& parentNode : c.getSourceNodesForDestination (child))
1083
+ {
1084
+ if (parentNode == child)
1085
+ continue;
1086
+
1087
+ if (parents.insert (parentNode).second)
1088
+ {
1089
+ const auto parentParents = otherParents.find (parentNode);
1090
+
1091
+ if (parentParents != otherParents.end())
1092
+ {
1093
+ parents.insert (parentParents->second.begin(), parentParents->second.end());
1094
+ continue;
1095
+ }
1096
+
1097
+ getAllParentsOfNode (parentNode, parents, otherParents, c);
1098
+ }
1099
+ }
1100
+ }
1101
+
1102
+ Array<Node*> createOrderedNodeList (const Nodes& n, const Connections& c)
1103
+ {
1104
+ Array<Node*> result;
1105
+
1106
+ std::map<NodeID, std::set<NodeID>> nodeParents;
1107
+
1108
+ for (auto& node : n.getNodes())
1109
+ {
1110
+ const auto nodeID = node->nodeID;
1111
+ int insertionIndex = 0;
1112
+
1113
+ for (; insertionIndex < result.size(); ++insertionIndex)
1114
+ {
1115
+ auto& parents = nodeParents[result.getUnchecked (insertionIndex)->nodeID];
1116
+
1117
+ if (parents.find (nodeID) != parents.end())
1118
+ break;
1119
+ }
1120
+
1121
+ result.insert (insertionIndex, node);
1122
+ getAllParentsOfNode (nodeID, nodeParents[node->nodeID], nodeParents, c);
1123
+ }
1124
+
1125
+ return result;
1126
+ }
1127
+
1128
+ //==============================================================================
1129
+ template <typename RenderSequence>
1130
+ int findBufferForInputAudioChannel (const Connections& c,
1131
+ const Connections::DestinationsForSources& reversed,
1132
+ RenderSequence& sequence,
1133
+ Node& node,
1134
+ const int inputChan,
1135
+ const int ourRenderingIndex,
1136
+ const int maxLatency)
1137
+ {
1138
+ auto& processor = *node.getProcessor();
1139
+ auto numOuts = processor.getTotalNumOutputChannels();
1140
+
1141
+ auto sources = c.getSourcesForDestination ({ node.nodeID, inputChan });
1142
+
1143
+ // Handle an unconnected input channel...
1144
+ if (sources.empty())
1145
+ {
1146
+ if (inputChan >= numOuts)
1147
+ return readOnlyEmptyBufferIndex;
1148
+
1149
+ auto index = getFreeBuffer (audioBuffers);
1150
+ sequence.addClearChannelOp (index);
1151
+ return index;
1152
+ }
1153
+
1154
+ // Handle an input from a single source..
1155
+ if (sources.size() == 1)
1156
+ {
1157
+ // channel with a straightforward single input..
1158
+ auto src = *sources.begin();
1159
+
1160
+ int bufIndex = getBufferContaining (src);
1161
+
1162
+ if (bufIndex < 0)
1163
+ {
1164
+ // if not found, this is probably a feedback loop
1165
+ bufIndex = readOnlyEmptyBufferIndex;
1166
+ jassert (bufIndex >= 0);
1167
+ }
1168
+
1169
+ if (inputChan < numOuts && isBufferNeededLater (reversed, ourRenderingIndex, inputChan, src))
1170
+ {
1171
+ // can't mess up this channel because it's needed later by another node,
1172
+ // so we need to use a copy of it..
1173
+ auto newFreeBuffer = getFreeBuffer (audioBuffers);
1174
+ sequence.addCopyChannelOp (bufIndex, newFreeBuffer);
1175
+ bufIndex = newFreeBuffer;
1176
+ }
1177
+
1178
+ auto nodeDelay = getNodeDelay (src.nodeID);
1179
+
1180
+ if (nodeDelay < maxLatency)
1181
+ sequence.addDelayChannelOp (bufIndex, maxLatency - nodeDelay);
1182
+
1183
+ return bufIndex;
1184
+ }
1185
+
1186
+ // Handle a mix of several outputs coming into this input..
1187
+ int reusableInputIndex = -1;
1188
+ int bufIndex = -1;
1189
+
1190
+ {
1191
+ auto i = 0;
1192
+ for (const auto& src : sources)
1193
+ {
1194
+ auto sourceBufIndex = getBufferContaining (src);
1195
+
1196
+ if (sourceBufIndex >= 0 && ! isBufferNeededLater (reversed, ourRenderingIndex, inputChan, src))
1197
+ {
1198
+ // we've found one of our input chans that can be re-used..
1199
+ reusableInputIndex = i;
1200
+ bufIndex = sourceBufIndex;
1201
+
1202
+ auto nodeDelay = getNodeDelay (src.nodeID);
1203
+
1204
+ if (nodeDelay < maxLatency)
1205
+ sequence.addDelayChannelOp (bufIndex, maxLatency - nodeDelay);
1206
+
1207
+ break;
1208
+ }
1209
+
1210
+ ++i;
1211
+ }
1212
+ }
1213
+
1214
+ if (reusableInputIndex < 0)
1215
+ {
1216
+ // can't re-use any of our input chans, so get a new one and copy everything into it..
1217
+ bufIndex = getFreeBuffer (audioBuffers);
1218
+ jassert (bufIndex != 0);
1219
+
1220
+ audioBuffers.getReference (bufIndex).setAssignedToNonExistentNode();
1221
+
1222
+ auto srcIndex = getBufferContaining (*sources.begin());
1223
+
1224
+ if (srcIndex < 0)
1225
+ sequence.addClearChannelOp (bufIndex); // if not found, this is probably a feedback loop
1226
+ else
1227
+ sequence.addCopyChannelOp (srcIndex, bufIndex);
1228
+
1229
+ reusableInputIndex = 0;
1230
+ auto nodeDelay = getNodeDelay (sources.begin()->nodeID);
1231
+
1232
+ if (nodeDelay < maxLatency)
1233
+ sequence.addDelayChannelOp (bufIndex, maxLatency - nodeDelay);
1234
+ }
1235
+
1236
+ {
1237
+ auto i = 0;
1238
+ for (const auto& src : sources)
1239
+ {
1240
+ if (i != reusableInputIndex)
1241
+ {
1242
+ int srcIndex = getBufferContaining (src);
1243
+
1244
+ if (srcIndex >= 0)
1245
+ {
1246
+ auto nodeDelay = getNodeDelay (src.nodeID);
1247
+
1248
+ if (nodeDelay < maxLatency)
1249
+ {
1250
+ if (! isBufferNeededLater (reversed, ourRenderingIndex, inputChan, src))
1251
+ {
1252
+ sequence.addDelayChannelOp (srcIndex, maxLatency - nodeDelay);
1253
+ }
1254
+ else // buffer is reused elsewhere, can't be delayed
1255
+ {
1256
+ auto bufferToDelay = getFreeBuffer (audioBuffers);
1257
+ sequence.addCopyChannelOp (srcIndex, bufferToDelay);
1258
+ sequence.addDelayChannelOp (bufferToDelay, maxLatency - nodeDelay);
1259
+ srcIndex = bufferToDelay;
1260
+ }
1261
+ }
1262
+
1263
+ sequence.addAddChannelOp (srcIndex, bufIndex);
1264
+ }
1265
+ }
1266
+
1267
+ ++i;
1268
+ }
1269
+ }
1270
+
1271
+ return bufIndex;
1272
+ }
1273
+
1274
+ template <typename RenderSequence>
1275
+ int findBufferForInputMidiChannel (const Connections& c,
1276
+ const Connections::DestinationsForSources& reversed,
1277
+ RenderSequence& sequence,
1278
+ Node& node,
1279
+ int ourRenderingIndex)
1280
+ {
1281
+ auto& processor = *node.getProcessor();
1282
+ auto sources = c.getSourcesForDestination ({ node.nodeID, midiChannelIndex });
1283
+
1284
+ // No midi inputs..
1285
+ if (sources.empty())
1286
+ {
1287
+ auto midiBufferToUse = getFreeBuffer (midiBuffers); // need to pick a buffer even if the processor doesn't use midi
1288
+
1289
+ if (processor.acceptsMidi() || processor.producesMidi())
1290
+ sequence.addClearMidiBufferOp (midiBufferToUse);
1291
+
1292
+ return midiBufferToUse;
1293
+ }
1294
+
1295
+ // One midi input..
1296
+ if (sources.size() == 1)
1297
+ {
1298
+ auto src = *sources.begin();
1299
+ auto midiBufferToUse = getBufferContaining (src);
1300
+
1301
+ if (midiBufferToUse >= 0)
1302
+ {
1303
+ if (isBufferNeededLater (reversed, ourRenderingIndex, midiChannelIndex, src))
1304
+ {
1305
+ // can't mess up this channel because it's needed later by another node, so we
1306
+ // need to use a copy of it..
1307
+ auto newFreeBuffer = getFreeBuffer (midiBuffers);
1308
+ sequence.addCopyMidiBufferOp (midiBufferToUse, newFreeBuffer);
1309
+ midiBufferToUse = newFreeBuffer;
1310
+ }
1311
+ }
1312
+ else
1313
+ {
1314
+ // probably a feedback loop, so just use an empty one..
1315
+ midiBufferToUse = getFreeBuffer (midiBuffers); // need to pick a buffer even if the processor doesn't use midi
1316
+ }
1317
+
1318
+ return midiBufferToUse;
1319
+ }
1320
+
1321
+ // Multiple midi inputs..
1322
+ int midiBufferToUse = -1;
1323
+ int reusableInputIndex = -1;
1324
+
1325
+ {
1326
+ auto i = 0;
1327
+ for (const auto& src : sources)
1328
+ {
1329
+ auto sourceBufIndex = getBufferContaining (src);
1330
+
1331
+ if (sourceBufIndex >= 0
1332
+ && ! isBufferNeededLater (reversed, ourRenderingIndex, midiChannelIndex, src))
1333
+ {
1334
+ // we've found one of our input buffers that can be re-used..
1335
+ reusableInputIndex = i;
1336
+ midiBufferToUse = sourceBufIndex;
1337
+ break;
1338
+ }
1339
+
1340
+ ++i;
1341
+ }
1342
+ }
1343
+
1344
+ if (reusableInputIndex < 0)
1345
+ {
1346
+ // can't re-use any of our input buffers, so get a new one and copy everything into it..
1347
+ midiBufferToUse = getFreeBuffer (midiBuffers);
1348
+ jassert (midiBufferToUse >= 0);
1349
+
1350
+ auto srcIndex = getBufferContaining (*sources.begin());
1351
+
1352
+ if (srcIndex >= 0)
1353
+ sequence.addCopyMidiBufferOp (srcIndex, midiBufferToUse);
1354
+ else
1355
+ sequence.addClearMidiBufferOp (midiBufferToUse);
1356
+
1357
+ reusableInputIndex = 0;
1358
+ }
1359
+
1360
+ {
1361
+ auto i = 0;
1362
+ for (const auto& src : sources)
1363
+ {
1364
+ if (i != reusableInputIndex)
1365
+ {
1366
+ auto srcIndex = getBufferContaining (src);
1367
+
1368
+ if (srcIndex >= 0)
1369
+ sequence.addAddMidiBufferOp (srcIndex, midiBufferToUse);
1370
+ }
1371
+
1372
+ ++i;
1373
+ }
1374
+ }
1375
+
1376
+ return midiBufferToUse;
1377
+ }
1378
+
1379
+ template <typename RenderSequence>
1380
+ void createRenderingOpsForNode (const Connections& c,
1381
+ const Connections::DestinationsForSources& reversed,
1382
+ RenderSequence& sequence,
1383
+ Node& node,
1384
+ const int ourRenderingIndex)
1385
+ {
1386
+ auto& processor = *node.getProcessor();
1387
+ auto numIns = processor.getTotalNumInputChannels();
1388
+ auto numOuts = processor.getTotalNumOutputChannels();
1389
+ auto totalChans = jmax (numIns, numOuts);
1390
+
1391
+ Array<int> audioChannelsToUse;
1392
+ const auto maxInputLatency = getInputLatencyForNode (c, node.nodeID);
1393
+
1394
+ for (int inputChan = 0; inputChan < numIns; ++inputChan)
1395
+ {
1396
+ // get a list of all the inputs to this node
1397
+ auto index = findBufferForInputAudioChannel (c,
1398
+ reversed,
1399
+ sequence,
1400
+ node,
1401
+ inputChan,
1402
+ ourRenderingIndex,
1403
+ maxInputLatency);
1404
+ jassert (index >= 0);
1405
+
1406
+ audioChannelsToUse.add (index);
1407
+
1408
+ if (inputChan < numOuts)
1409
+ audioBuffers.getReference (index).channel = { node.nodeID, inputChan };
1410
+ }
1411
+
1412
+ for (int outputChan = numIns; outputChan < numOuts; ++outputChan)
1413
+ {
1414
+ auto index = getFreeBuffer (audioBuffers);
1415
+ jassert (index != 0);
1416
+ audioChannelsToUse.add (index);
1417
+
1418
+ audioBuffers.getReference (index).channel = { node.nodeID, outputChan };
1419
+ }
1420
+
1421
+ auto midiBufferToUse = findBufferForInputMidiChannel (c, reversed, sequence, node, ourRenderingIndex);
1422
+
1423
+ if (processor.producesMidi())
1424
+ midiBuffers.getReference (midiBufferToUse).channel = { node.nodeID, midiChannelIndex };
1425
+
1426
+ const auto thisNodeLatency = maxInputLatency + processor.getLatencySamples();
1427
+ delays[node.nodeID.uid] = thisNodeLatency;
1428
+
1429
+ if (numOuts == 0)
1430
+ totalLatency = jmax (totalLatency, thisNodeLatency);
1431
+
1432
+ sequence.addProcessOp (node, audioChannelsToUse, totalChans, midiBufferToUse);
1433
+ }
1434
+
1435
+ //==============================================================================
1436
+ static int getFreeBuffer (Array<AssignedBuffer>& buffers)
1437
+ {
1438
+ for (int i = 1; i < buffers.size(); ++i)
1439
+ if (buffers.getReference (i).isFree())
1440
+ return i;
1441
+
1442
+ buffers.add (AssignedBuffer::createFree());
1443
+ return buffers.size() - 1;
1444
+ }
1445
+
1446
+ int getBufferContaining (NodeAndChannel output) const noexcept
1447
+ {
1448
+ int i = 0;
1449
+
1450
+ for (auto& b : output.isMIDI() ? midiBuffers : audioBuffers)
1451
+ {
1452
+ if (b.channel == output)
1453
+ return i;
1454
+
1455
+ ++i;
1456
+ }
1457
+
1458
+ return -1;
1459
+ }
1460
+
1461
+ void markAnyUnusedBuffersAsFree (const Connections::DestinationsForSources& c,
1462
+ Array<AssignedBuffer>& buffers,
1463
+ const int stepIndex)
1464
+ {
1465
+ for (auto& b : buffers)
1466
+ if (b.isAssigned() && ! isBufferNeededLater (c, stepIndex, -1, b.channel))
1467
+ b.setFree();
1468
+ }
1469
+
1470
+ bool isBufferNeededLater (const Connections::DestinationsForSources& c,
1471
+ const int stepIndexToSearchFrom,
1472
+ const int inputChannelOfIndexToIgnore,
1473
+ const NodeAndChannel output) const
1474
+ {
1475
+ if (orderedNodes.size() <= stepIndexToSearchFrom)
1476
+ return false;
1477
+
1478
+ if (c.isSourceConnectedToDestinationNodeIgnoringChannel (output,
1479
+ orderedNodes.getUnchecked (stepIndexToSearchFrom)->nodeID,
1480
+ inputChannelOfIndexToIgnore))
1481
+ {
1482
+ return true;
1483
+ }
1484
+
1485
+ return std::any_of (orderedNodes.begin() + stepIndexToSearchFrom + 1, orderedNodes.end(), [&] (const auto* node)
1486
+ {
1487
+ return c.isSourceConnectedToDestinationNodeIgnoringChannel (output, node->nodeID, -1);
1488
+ });
1489
+ }
1490
+
1491
+ template <typename RenderSequence>
1492
+ RenderSequenceBuilder (const Nodes& n, const Connections& c, RenderSequence& sequence)
1493
+ : orderedNodes (createOrderedNodeList (n, c))
1494
+ {
1495
+ audioBuffers.add (AssignedBuffer::createReadOnlyEmpty()); // first buffer is read-only zeros
1496
+ midiBuffers .add (AssignedBuffer::createReadOnlyEmpty());
1497
+
1498
+ const auto reversed = c.getDestinationsForSources();
1499
+
1500
+ for (int i = 0; i < orderedNodes.size(); ++i)
1501
+ {
1502
+ createRenderingOpsForNode (c, reversed, sequence, *orderedNodes.getUnchecked (i), i);
1503
+ markAnyUnusedBuffersAsFree (reversed, audioBuffers, i);
1504
+ markAnyUnusedBuffersAsFree (reversed, midiBuffers, i);
1505
+ }
1506
+
1507
+ sequence.numBuffersNeeded = audioBuffers.size();
1508
+ sequence.numMidiBuffersNeeded = midiBuffers.size();
1509
+ }
1510
+ };
1511
+
1512
+ //==============================================================================
1513
+ /* A full graph of audio processors, ready to process at a particular sample rate, block size,
1514
+ and precision.
1515
+
1516
+ Instances of this class will be created on the main thread, and then passed over to the audio
1517
+ thread for processing.
1518
+ */
1519
+ class RenderSequence
1520
+ {
1521
+ public:
1522
+ using AudioGraphIOProcessor = AudioProcessorGraph::AudioGraphIOProcessor;
1523
+
1524
+ RenderSequence (const PrepareSettings s, const Nodes& n, const Connections& c)
1525
+ : RenderSequence (s, s.precision == AudioProcessor::ProcessingPrecision::singlePrecision
1526
+ ? RenderSequenceBuilder::build<float> (n, c)
1527
+ : RenderSequenceBuilder::build<double> (n, c))
1528
+ {
1529
+ }
1530
+
1531
+ template <typename FloatType>
1532
+ void process (AudioBuffer<FloatType>& audio, MidiBuffer& midi, AudioPlayHead* playHead)
1533
+ {
1534
+ if (auto* s = std::get_if<GraphRenderSequence<FloatType>> (&sequence.sequence))
1535
+ s->perform (audio, midi, playHead);
1536
+ else
1537
+ jassertfalse; // Not prepared for this audio format!
1538
+ }
1539
+
1540
+ int getLatencySamples() const { return sequence.latencySamples; }
1541
+ PrepareSettings getSettings() const { return settings; }
1542
+
1543
+ private:
1544
+ template <typename This, typename Callback>
1545
+ static void visitRenderSequence (This& t, Callback&& callback)
1546
+ {
1547
+ if (auto* sequence = std::get_if<GraphRenderSequence<float>> (&t.sequence.sequence)) return callback (*sequence);
1548
+ if (auto* sequence = std::get_if<GraphRenderSequence<double>> (&t.sequence.sequence)) return callback (*sequence);
1549
+ jassertfalse;
1550
+ }
1551
+
1552
+ RenderSequence (const PrepareSettings s, SequenceAndLatency&& built)
1553
+ : settings (s), sequence (std::move (built))
1554
+ {
1555
+ visitRenderSequence (*this, [&] (auto& seq) { seq.prepareBuffers (settings.blockSize); });
1556
+ }
1557
+
1558
+ PrepareSettings settings;
1559
+ SequenceAndLatency sequence;
1560
+ };
1561
+
1562
+ //==============================================================================
1563
+ /* Holds information about the properties of a graph node at the point it was prepared.
1564
+
1565
+ If the bus layout or latency of a given node changes, the graph should be rebuilt so
1566
+ that channel connections are ordered correctly, and the graph's internal delay lines have
1567
+ the correct delay.
1568
+ */
1569
+ class NodeAttributes
1570
+ {
1571
+ auto tie() const { return std::tie (layout, latencySamples); }
1572
+
1573
+ public:
1574
+ AudioProcessor::BusesLayout layout;
1575
+ int latencySamples = 0;
1576
+
1577
+ bool operator== (const NodeAttributes& other) const { return tie() == other.tie(); }
1578
+ bool operator!= (const NodeAttributes& other) const { return tie() != other.tie(); }
1579
+ };
1580
+
1581
+ //==============================================================================
1582
+ /* Holds information about a particular graph configuration, without sharing ownership of any
1583
+ graph nodes. Can be checked for equality with other RenderSequenceSignature instances to see
1584
+ whether two graph configurations match.
1585
+ */
1586
+ class RenderSequenceSignature
1587
+ {
1588
+ auto tie() const { return std::tie (settings, connections, nodes); }
1589
+
1590
+ public:
1591
+ RenderSequenceSignature (const PrepareSettings s, const Nodes& n, const Connections& c)
1592
+ : settings (s), connections (c), nodes (getNodeMap (n)) {}
1593
+
1594
+ bool operator== (const RenderSequenceSignature& other) const { return tie() == other.tie(); }
1595
+ bool operator!= (const RenderSequenceSignature& other) const { return tie() != other.tie(); }
1596
+
1597
+ private:
1598
+ using NodeMap = std::map<AudioProcessorGraph::NodeID, NodeAttributes>;
1599
+
1600
+ static NodeMap getNodeMap (const Nodes& n)
1601
+ {
1602
+ const auto& nodeRefs = n.getNodes();
1603
+ NodeMap result;
1604
+
1605
+ for (const auto& node : nodeRefs)
1606
+ {
1607
+ auto* proc = node->getProcessor();
1608
+ result.emplace (node->nodeID,
1609
+ NodeAttributes { proc->getBusesLayout(),
1610
+ proc->getLatencySamples() });
1611
+ }
1612
+
1613
+ return result;
1614
+ }
1615
+
1616
+ PrepareSettings settings;
1617
+ Connections connections;
1618
+ NodeMap nodes;
1619
+ };
1620
+
1621
+ //==============================================================================
1622
+ /* Facilitates wait-free render-sequence updates.
1623
+
1624
+ Topology updates always happen on the main thread (or synchronised with the main thread).
1625
+ After updating the graph, the 'baked' graph is passed to RenderSequenceExchange::set.
1626
+ At the top of the audio callback, RenderSequenceExchange::updateAudioThreadState will
1627
+ attempt to install the most-recently-baked graph, if there's one waiting.
1628
+ */
1629
+ class RenderSequenceExchange final : private Timer
1630
+ {
1631
+ public:
1632
+ RenderSequenceExchange()
1633
+ {
1634
+ startTimer (500);
1635
+ }
1636
+
1637
+ ~RenderSequenceExchange() override
1638
+ {
1639
+ stopTimer();
1640
+ }
1641
+
1642
+ void set (std::unique_ptr<RenderSequence>&& next)
1643
+ {
1644
+ const SpinLock::ScopedLockType lock (mutex);
1645
+ mainThreadState = std::move (next);
1646
+ isNew = true;
1647
+ }
1648
+
1649
+ /* Call from the audio thread only. */
1650
+ void updateAudioThreadState()
1651
+ {
1652
+ const SpinLock::ScopedTryLockType lock (mutex);
1653
+
1654
+ if (lock.isLocked() && isNew)
1655
+ {
1656
+ // Swap pointers rather than assigning to avoid calling delete here
1657
+ std::swap (mainThreadState, audioThreadState);
1658
+ isNew = false;
1659
+ }
1660
+ }
1661
+
1662
+ /* Call from the audio thread only. */
1663
+ RenderSequence* getAudioThreadState() const { return audioThreadState.get(); }
1664
+
1665
+ private:
1666
+ void timerCallback() override
1667
+ {
1668
+ const SpinLock::ScopedLockType lock (mutex);
1669
+
1670
+ if (! isNew)
1671
+ mainThreadState.reset();
1672
+ }
1673
+
1674
+ SpinLock mutex;
1675
+ std::unique_ptr<RenderSequence> mainThreadState, audioThreadState;
1676
+ bool isNew = false;
1677
+ };
1678
+
1679
+ //==============================================================================
1680
+ AudioProcessorGraph::Connection::Connection (NodeAndChannel src, NodeAndChannel dst) noexcept
1681
+ : source (src), destination (dst)
1682
+ {
1683
+ }
1684
+
1685
+ bool AudioProcessorGraph::Connection::operator== (const Connection& other) const noexcept
1686
+ {
1687
+ return source == other.source && destination == other.destination;
1688
+ }
1689
+
1690
+ bool AudioProcessorGraph::Connection::operator!= (const Connection& c) const noexcept
1691
+ {
1692
+ return ! operator== (c);
1693
+ }
1694
+
1695
+ bool AudioProcessorGraph::Connection::operator< (const Connection& other) const noexcept
1696
+ {
1697
+ const auto tie = [] (auto& x)
1698
+ {
1699
+ return std::tie (x.source.nodeID,
1700
+ x.destination.nodeID,
1701
+ x.source.channelIndex,
1702
+ x.destination.channelIndex);
1703
+ };
1704
+ return tie (*this) < tie (other);
1705
+ }
1706
+
1707
+ //==============================================================================
1708
+ class AudioProcessorGraph::Pimpl
1709
+ {
1710
+ public:
1711
+ explicit Pimpl (AudioProcessorGraph& o) : owner (&o) {}
1712
+
1713
+ const auto& getNodes() const { return nodes.getNodes(); }
1714
+
1715
+ void clear (UpdateKind updateKind)
1716
+ {
1717
+ if (getNodes().isEmpty())
1718
+ return;
1719
+
1720
+ nodes = Nodes{};
1721
+ connections = Connections{};
1722
+ nodeStates.clear();
1723
+ topologyChanged (updateKind);
1724
+ }
1725
+
1726
+ auto getNodeForId (NodeID nodeID) const
1727
+ {
1728
+ return nodes.getNodeForId (nodeID);
1729
+ }
1730
+
1731
+ Node::Ptr addNode (std::unique_ptr<AudioProcessor> newProcessor,
1732
+ std::optional<NodeID> nodeID,
1733
+ UpdateKind updateKind)
1734
+ {
1735
+ if (newProcessor.get() == owner)
1736
+ {
1737
+ jassertfalse;
1738
+ return nullptr;
1739
+ }
1740
+
1741
+ const auto idToUse = nodeID.value_or (NodeID { lastNodeID.uid + 1 });
1742
+
1743
+ auto added = nodes.addNode (std::move (newProcessor), idToUse);
1744
+
1745
+ if (added == nullptr)
1746
+ return nullptr;
1747
+
1748
+ if (lastNodeID < idToUse)
1749
+ lastNodeID = idToUse;
1750
+
1751
+ setParentGraph (added->getProcessor());
1752
+
1753
+ topologyChanged (updateKind);
1754
+ return added;
1755
+ }
1756
+
1757
+ Node::Ptr removeNode (NodeID nodeID, UpdateKind updateKind)
1758
+ {
1759
+ connections.disconnectNode (nodeID);
1760
+ auto result = nodes.removeNode (nodeID);
1761
+ nodeStates.removeNode (nodeID);
1762
+ topologyChanged (updateKind);
1763
+ return result;
1764
+ }
1765
+
1766
+ std::vector<Connection> getConnections() const
1767
+ {
1768
+ return connections.getConnections();
1769
+ }
1770
+
1771
+ bool isConnected (const Connection& c) const
1772
+ {
1773
+ return connections.isConnected (c);
1774
+ }
1775
+
1776
+ bool isConnected (NodeID srcID, NodeID destID) const
1777
+ {
1778
+ return connections.isConnected (srcID, destID);
1779
+ }
1780
+
1781
+ bool isAnInputTo (const Node& src, const Node& dst) const
1782
+ {
1783
+ return isAnInputTo (src.nodeID, dst.nodeID);
1784
+ }
1785
+
1786
+ bool isAnInputTo (NodeID src, NodeID dst) const
1787
+ {
1788
+ return connections.isAnInputTo (src, dst);
1789
+ }
1790
+
1791
+ bool canConnect (const Connection& c) const
1792
+ {
1793
+ return connections.canConnect (nodes, c);
1794
+ }
1795
+
1796
+ bool addConnection (const Connection& c, UpdateKind updateKind)
1797
+ {
1798
+ if (! connections.addConnection (nodes, c))
1799
+ return false;
1800
+
1801
+ jassert (isConnected (c));
1802
+ topologyChanged (updateKind);
1803
+ return true;
1804
+ }
1805
+
1806
+ bool removeConnection (const Connection& c, UpdateKind updateKind)
1807
+ {
1808
+ if (! connections.removeConnection (c))
1809
+ return false;
1810
+
1811
+ topologyChanged (updateKind);
1812
+ return true;
1813
+ }
1814
+
1815
+ bool disconnectNode (NodeID nodeID, UpdateKind updateKind)
1816
+ {
1817
+ if (! connections.disconnectNode (nodeID))
1818
+ return false;
1819
+
1820
+ topologyChanged (updateKind);
1821
+ return true;
1822
+ }
1823
+
1824
+ bool isConnectionLegal (const Connection& c) const
1825
+ {
1826
+ return connections.isConnectionLegal (nodes, c);
1827
+ }
1828
+
1829
+ bool removeIllegalConnections (UpdateKind updateKind)
1830
+ {
1831
+ const auto result = connections.removeIllegalConnections (nodes);
1832
+ topologyChanged (updateKind);
1833
+ return result;
1834
+ }
1835
+
1836
+ //==============================================================================
1837
+ void prepareToPlay (double sampleRate, int estimatedSamplesPerBlock)
1838
+ {
1839
+ owner->setRateAndBufferSizeDetails (sampleRate, estimatedSamplesPerBlock);
1840
+
1841
+ PrepareSettings settings;
1842
+ settings.precision = owner->getProcessingPrecision();
1843
+ settings.sampleRate = sampleRate;
1844
+ settings.blockSize = estimatedSamplesPerBlock;
1845
+
1846
+ nodeStates.setState (settings);
1847
+
1848
+ topologyChanged (UpdateKind::sync);
1849
+ }
1850
+
1851
+ void releaseResources()
1852
+ {
1853
+ nodeStates.setState (nullopt);
1854
+ topologyChanged (UpdateKind::sync);
1855
+ }
1856
+
1857
+ void rebuild (UpdateKind updateKind)
1858
+ {
1859
+ if (updateKind == UpdateKind::none)
1860
+ return;
1861
+
1862
+ if (updateKind == UpdateKind::sync && MessageManager::getInstance()->isThisTheMessageThread())
1863
+ handleAsyncUpdate();
1864
+ else
1865
+ updater.triggerAsyncUpdate();
1866
+ }
1867
+
1868
+ void reset()
1869
+ {
1870
+ for (auto* n : getNodes())
1871
+ n->getProcessor()->reset();
1872
+ }
1873
+
1874
+ void setNonRealtime (bool isProcessingNonRealtime)
1875
+ {
1876
+ for (auto* n : getNodes())
1877
+ n->getProcessor()->setNonRealtime (isProcessingNonRealtime);
1878
+ }
1879
+
1880
+ template <typename Value>
1881
+ void processBlock (AudioBuffer<Value>& audio, MidiBuffer& midi, AudioPlayHead* playHead)
1882
+ {
1883
+ renderSequenceExchange.updateAudioThreadState();
1884
+
1885
+ if (renderSequenceExchange.getAudioThreadState() == nullptr && MessageManager::getInstance()->isThisTheMessageThread())
1886
+ handleAsyncUpdate();
1887
+
1888
+ if (owner->isNonRealtime())
1889
+ {
1890
+ while (renderSequenceExchange.getAudioThreadState() == nullptr)
1891
+ {
1892
+ Thread::sleep (1);
1893
+ renderSequenceExchange.updateAudioThreadState();
1894
+ }
1895
+ }
1896
+
1897
+ auto* state = renderSequenceExchange.getAudioThreadState();
1898
+
1899
+ // Only process if the graph has the correct blockSize, sampleRate etc.
1900
+ if (state != nullptr && state->getSettings() == nodeStates.getLastRequestedSettings())
1901
+ {
1902
+ state->process (audio, midi, playHead);
1903
+ }
1904
+ else
1905
+ {
1906
+ audio.clear();
1907
+ midi.clear();
1908
+ }
1909
+ }
1910
+
1911
+ /* Call from the audio thread only. */
1912
+ auto* getAudioThreadState() const { return renderSequenceExchange.getAudioThreadState(); }
1913
+
1914
+ private:
1915
+ void setParentGraph (AudioProcessor* p) const
1916
+ {
1917
+ if (auto* ioProc = dynamic_cast<AudioGraphIOProcessor*> (p))
1918
+ ioProc->setParentGraph (owner);
1919
+ }
1920
+
1921
+ void topologyChanged (UpdateKind updateKind)
1922
+ {
1923
+ owner->sendChangeMessage();
1924
+ rebuild (updateKind);
1925
+ }
1926
+
1927
+ void handleAsyncUpdate()
1928
+ {
1929
+ if (const auto newSettings = nodeStates.applySettings (nodes))
1930
+ {
1931
+ for (const auto node : nodes.getNodes())
1932
+ setParentGraph (node->getProcessor());
1933
+
1934
+ const RenderSequenceSignature newSignature (*newSettings, nodes, connections);
1935
+
1936
+ if (std::exchange (lastBuiltSequence, newSignature) != newSignature)
1937
+ {
1938
+ auto sequence = std::make_unique<RenderSequence> (*newSettings, nodes, connections);
1939
+ owner->setLatencySamples (sequence->getLatencySamples());
1940
+ renderSequenceExchange.set (std::move (sequence));
1941
+ }
1942
+ }
1943
+ else
1944
+ {
1945
+ lastBuiltSequence.reset();
1946
+ renderSequenceExchange.set (nullptr);
1947
+ }
1948
+ }
1949
+
1950
+ AudioProcessorGraph* owner = nullptr;
1951
+ Nodes nodes;
1952
+ Connections connections;
1953
+ NodeStates nodeStates;
1954
+ RenderSequenceExchange renderSequenceExchange;
1955
+ NodeID lastNodeID;
1956
+ std::optional<RenderSequenceSignature> lastBuiltSequence;
1957
+ LockingAsyncUpdater updater { [this] { handleAsyncUpdate(); } };
1958
+ };
1959
+
1960
+ //==============================================================================
1961
+ AudioProcessorGraph::AudioProcessorGraph() : pimpl (std::make_unique<Pimpl> (*this)) {}
1962
+ AudioProcessorGraph::~AudioProcessorGraph() = default;
1963
+
1964
+ const String AudioProcessorGraph::getName() const { return "Audio Graph"; }
1965
+ bool AudioProcessorGraph::supportsDoublePrecisionProcessing() const { return true; }
1966
+ double AudioProcessorGraph::getTailLengthSeconds() const { return 0; }
1967
+ bool AudioProcessorGraph::acceptsMidi() const { return true; }
1968
+ bool AudioProcessorGraph::producesMidi() const { return true; }
1969
+ void AudioProcessorGraph::getStateInformation (MemoryBlock&) {}
1970
+ void AudioProcessorGraph::setStateInformation (const void*, int) {}
1971
+
1972
+ void AudioProcessorGraph::processBlock (AudioBuffer<float>& audio, MidiBuffer& midi) { return pimpl->processBlock (audio, midi, getPlayHead()); }
1973
+ void AudioProcessorGraph::processBlock (AudioBuffer<double>& audio, MidiBuffer& midi) { return pimpl->processBlock (audio, midi, getPlayHead()); }
1974
+ std::vector<AudioProcessorGraph::Connection> AudioProcessorGraph::getConnections() const { return pimpl->getConnections(); }
1975
+ bool AudioProcessorGraph::addConnection (const Connection& c, UpdateKind updateKind) { return pimpl->addConnection (c, updateKind); }
1976
+ bool AudioProcessorGraph::removeConnection (const Connection& c, UpdateKind updateKind) { return pimpl->removeConnection (c, updateKind); }
1977
+ void AudioProcessorGraph::prepareToPlay (double sampleRate, int estimatedSamplesPerBlock) { return pimpl->prepareToPlay (sampleRate, estimatedSamplesPerBlock); }
1978
+ void AudioProcessorGraph::clear (UpdateKind updateKind) { return pimpl->clear (updateKind); }
1979
+ const ReferenceCountedArray<AudioProcessorGraph::Node>& AudioProcessorGraph::getNodes() const noexcept { return pimpl->getNodes(); }
1980
+ AudioProcessorGraph::Node* AudioProcessorGraph::getNodeForId (NodeID x) const { return pimpl->getNodeForId (x).get(); }
1981
+ bool AudioProcessorGraph::disconnectNode (NodeID nodeID, UpdateKind updateKind) { return pimpl->disconnectNode (nodeID, updateKind); }
1982
+ void AudioProcessorGraph::releaseResources() { return pimpl->releaseResources(); }
1983
+ bool AudioProcessorGraph::removeIllegalConnections (UpdateKind updateKind) { return pimpl->removeIllegalConnections (updateKind); }
1984
+ void AudioProcessorGraph::rebuild() { return pimpl->rebuild (UpdateKind::sync); }
1985
+ void AudioProcessorGraph::reset() { return pimpl->reset(); }
1986
+ bool AudioProcessorGraph::canConnect (const Connection& c) const { return pimpl->canConnect (c); }
1987
+ bool AudioProcessorGraph::isConnected (const Connection& c) const noexcept { return pimpl->isConnected (c); }
1988
+ bool AudioProcessorGraph::isConnected (NodeID a, NodeID b) const noexcept { return pimpl->isConnected (a, b); }
1989
+ bool AudioProcessorGraph::isConnectionLegal (const Connection& c) const { return pimpl->isConnectionLegal (c); }
1990
+ bool AudioProcessorGraph::isAnInputTo (const Node& source, const Node& destination) const noexcept { return pimpl->isAnInputTo (source, destination); }
1991
+ bool AudioProcessorGraph::isAnInputTo (NodeID source, NodeID destination) const noexcept { return pimpl->isAnInputTo (source, destination); }
1992
+
1993
+ AudioProcessorGraph::Node::Ptr AudioProcessorGraph::addNode (std::unique_ptr<AudioProcessor> newProcessor,
1994
+ std::optional<NodeID> nodeId,
1995
+ UpdateKind updateKind)
1996
+ {
1997
+ return pimpl->addNode (std::move (newProcessor), nodeId, updateKind);
1998
+ }
1999
+
2000
+ void AudioProcessorGraph::setNonRealtime (bool isProcessingNonRealtime) noexcept
2001
+ {
2002
+ AudioProcessor::setNonRealtime (isProcessingNonRealtime);
2003
+ pimpl->setNonRealtime (isProcessingNonRealtime);
2004
+ }
2005
+
2006
+ AudioProcessorGraph::Node::Ptr AudioProcessorGraph::removeNode (NodeID nodeID, UpdateKind updateKind)
2007
+ {
2008
+ return pimpl->removeNode (nodeID, updateKind);
2009
+ }
2010
+
2011
+ AudioProcessorGraph::Node::Ptr AudioProcessorGraph::removeNode (Node* node, UpdateKind updateKind)
2012
+ {
2013
+ if (node != nullptr)
2014
+ return removeNode (node->nodeID, updateKind);
2015
+
2016
+ jassertfalse;
2017
+ return {};
2018
+ }
2019
+
2020
+ //==============================================================================
2021
+ AudioProcessorGraph::AudioGraphIOProcessor::AudioGraphIOProcessor (const IODeviceType deviceType)
2022
+ : type (deviceType)
2023
+ {
2024
+ }
2025
+
2026
+ AudioProcessorGraph::AudioGraphIOProcessor::~AudioGraphIOProcessor() = default;
2027
+
2028
+ const String AudioProcessorGraph::AudioGraphIOProcessor::getName() const
2029
+ {
2030
+ switch (type)
2031
+ {
2032
+ case audioOutputNode: return "Audio Output";
2033
+ case audioInputNode: return "Audio Input";
2034
+ case midiOutputNode: return "MIDI Output";
2035
+ case midiInputNode: return "MIDI Input";
2036
+ default: break;
2037
+ }
2038
+
2039
+ return {};
2040
+ }
2041
+
2042
+ void AudioProcessorGraph::AudioGraphIOProcessor::fillInPluginDescription (PluginDescription& d) const
2043
+ {
2044
+ d.name = getName();
2045
+ d.category = "I/O devices";
2046
+ d.pluginFormatName = "Internal";
2047
+ d.manufacturerName = "JUCE";
2048
+ d.version = "1.0";
2049
+ d.isInstrument = false;
2050
+
2051
+ d.deprecatedUid = d.uniqueId = d.name.hashCode();
2052
+
2053
+ d.numInputChannels = getTotalNumInputChannels();
2054
+
2055
+ if (type == audioOutputNode && graph != nullptr)
2056
+ d.numInputChannels = graph->getTotalNumInputChannels();
2057
+
2058
+ d.numOutputChannels = getTotalNumOutputChannels();
2059
+
2060
+ if (type == audioInputNode && graph != nullptr)
2061
+ d.numOutputChannels = graph->getTotalNumOutputChannels();
2062
+ }
2063
+
2064
+ void AudioProcessorGraph::AudioGraphIOProcessor::prepareToPlay (double, int)
2065
+ {
2066
+ jassert (graph != nullptr);
2067
+ }
2068
+
2069
+ void AudioProcessorGraph::AudioGraphIOProcessor::releaseResources()
2070
+ {
2071
+ }
2072
+
2073
+ bool AudioProcessorGraph::AudioGraphIOProcessor::supportsDoublePrecisionProcessing() const
2074
+ {
2075
+ return true;
2076
+ }
2077
+
2078
+ void AudioProcessorGraph::AudioGraphIOProcessor::processBlock (AudioBuffer<float>&, MidiBuffer&)
2079
+ {
2080
+ // The graph should never call this!
2081
+ jassertfalse;
2082
+ }
2083
+
2084
+ void AudioProcessorGraph::AudioGraphIOProcessor::processBlock (AudioBuffer<double>&, MidiBuffer&)
2085
+ {
2086
+ // The graph should never call this!
2087
+ jassertfalse;
2088
+ }
2089
+
2090
+ double AudioProcessorGraph::AudioGraphIOProcessor::getTailLengthSeconds() const
2091
+ {
2092
+ return 0;
2093
+ }
2094
+
2095
+ bool AudioProcessorGraph::AudioGraphIOProcessor::acceptsMidi() const
2096
+ {
2097
+ return type == midiOutputNode;
2098
+ }
2099
+
2100
+ bool AudioProcessorGraph::AudioGraphIOProcessor::producesMidi() const
2101
+ {
2102
+ return type == midiInputNode;
2103
+ }
2104
+
2105
+ bool AudioProcessorGraph::AudioGraphIOProcessor::isInput() const noexcept { return type == audioInputNode || type == midiInputNode; }
2106
+ bool AudioProcessorGraph::AudioGraphIOProcessor::isOutput() const noexcept { return type == audioOutputNode || type == midiOutputNode; }
2107
+
2108
+ bool AudioProcessorGraph::AudioGraphIOProcessor::hasEditor() const { return false; }
2109
+ AudioProcessorEditor* AudioProcessorGraph::AudioGraphIOProcessor::createEditor() { return nullptr; }
2110
+
2111
+ int AudioProcessorGraph::AudioGraphIOProcessor::getNumPrograms() { return 0; }
2112
+ int AudioProcessorGraph::AudioGraphIOProcessor::getCurrentProgram() { return 0; }
2113
+ void AudioProcessorGraph::AudioGraphIOProcessor::setCurrentProgram (int) { }
2114
+
2115
+ const String AudioProcessorGraph::AudioGraphIOProcessor::getProgramName (int) { return {}; }
2116
+ void AudioProcessorGraph::AudioGraphIOProcessor::changeProgramName (int, const String&) {}
2117
+
2118
+ void AudioProcessorGraph::AudioGraphIOProcessor::getStateInformation (MemoryBlock&) {}
2119
+ void AudioProcessorGraph::AudioGraphIOProcessor::setStateInformation (const void*, int) {}
2120
+
2121
+ void AudioProcessorGraph::AudioGraphIOProcessor::setParentGraph (AudioProcessorGraph* const newGraph)
2122
+ {
2123
+ graph = newGraph;
2124
+
2125
+ if (graph == nullptr)
2126
+ return;
2127
+
2128
+ setPlayConfigDetails (type == audioOutputNode ? newGraph->getTotalNumOutputChannels() : 0,
2129
+ type == audioInputNode ? newGraph->getTotalNumInputChannels() : 0,
2130
+ getSampleRate(),
2131
+ getBlockSize());
2132
+
2133
+ updateHostDisplay();
2134
+ }
2135
+
2136
+ //==============================================================================
2137
+ //==============================================================================
2138
+ #if JUCE_UNIT_TESTS
2139
+
2140
+ class AudioProcessorGraphTests final : public UnitTest
2141
+ {
2142
+ public:
2143
+ AudioProcessorGraphTests()
2144
+ : UnitTest ("AudioProcessorGraph", UnitTestCategories::audioProcessors) {}
2145
+
2146
+ void runTest() override
2147
+ {
2148
+ const auto midiChannel = AudioProcessorGraph::midiChannelIndex;
2149
+
2150
+ beginTest ("isConnected returns true when two nodes are connected");
2151
+ {
2152
+ AudioProcessorGraph graph;
2153
+ const auto nodeA = graph.addNode (BasicProcessor::make ({}, MidiIn::no, MidiOut::yes))->nodeID;
2154
+ const auto nodeB = graph.addNode (BasicProcessor::make ({}, MidiIn::yes, MidiOut::no))->nodeID;
2155
+
2156
+ expect (graph.canConnect ({ { nodeA, midiChannel }, { nodeB, midiChannel } }));
2157
+ expect (! graph.canConnect ({ { nodeB, midiChannel }, { nodeA, midiChannel } }));
2158
+ expect (! graph.canConnect ({ { nodeA, midiChannel }, { nodeA, midiChannel } }));
2159
+ expect (! graph.canConnect ({ { nodeB, midiChannel }, { nodeB, midiChannel } }));
2160
+
2161
+ expect (graph.getConnections().empty());
2162
+ expect (! graph.isConnected ({ { nodeA, midiChannel }, { nodeB, midiChannel } }));
2163
+ expect (! graph.isConnected (nodeA, nodeB));
2164
+
2165
+ expect (graph.addConnection ({ { nodeA, midiChannel }, { nodeB, midiChannel } }));
2166
+
2167
+ expect (graph.getConnections().size() == 1);
2168
+ expect (graph.isConnected ({ { nodeA, midiChannel }, { nodeB, midiChannel } }));
2169
+ expect (graph.isConnected (nodeA, nodeB));
2170
+
2171
+ expect (graph.disconnectNode (nodeA));
2172
+
2173
+ expect (graph.getConnections().empty());
2174
+ expect (! graph.isConnected ({ { nodeA, midiChannel }, { nodeB, midiChannel } }));
2175
+ expect (! graph.isConnected (nodeA, nodeB));
2176
+ }
2177
+
2178
+ beginTest ("graph lookups work with a large number of connections");
2179
+ {
2180
+ AudioProcessorGraph graph;
2181
+
2182
+ std::vector<AudioProcessorGraph::NodeID> nodeIDs;
2183
+
2184
+ constexpr auto numNodes = 100;
2185
+
2186
+ for (auto i = 0; i < numNodes; ++i)
2187
+ {
2188
+ nodeIDs.push_back (graph.addNode (BasicProcessor::make (BasicProcessor::getStereoProperties(),
2189
+ MidiIn::yes,
2190
+ MidiOut::yes))->nodeID);
2191
+ }
2192
+
2193
+ for (auto it = nodeIDs.begin(); it != std::prev (nodeIDs.end()); ++it)
2194
+ {
2195
+ expect (graph.addConnection ({ { it[0], 0 }, { it[1], 0 } }));
2196
+ expect (graph.addConnection ({ { it[0], 1 }, { it[1], 1 } }));
2197
+ }
2198
+
2199
+ // Check whether isConnected reports correct results when called
2200
+ // with both connections and nodes
2201
+ for (auto it = nodeIDs.begin(); it != std::prev (nodeIDs.end()); ++it)
2202
+ {
2203
+ expect (graph.isConnected ({ { it[0], 0 }, { it[1], 0 } }));
2204
+ expect (graph.isConnected ({ { it[0], 1 }, { it[1], 1 } }));
2205
+ expect (graph.isConnected (it[0], it[1]));
2206
+ }
2207
+
2208
+ const auto& nodes = graph.getNodes();
2209
+
2210
+ expect (! graph.isAnInputTo (*nodes[0], *nodes[0]));
2211
+
2212
+ // Check whether isAnInputTo behaves correctly for a non-cyclic graph
2213
+ for (auto it = std::next (nodes.begin()); it != std::prev (nodes.end()); ++it)
2214
+ {
2215
+ expect (! graph.isAnInputTo (**it, **it));
2216
+
2217
+ expect (graph.isAnInputTo (*nodes[0], **it));
2218
+ expect (! graph.isAnInputTo (**it, *nodes[0]));
2219
+
2220
+ expect (graph.isAnInputTo (**it, *nodes[nodes.size() - 1]));
2221
+ expect (! graph.isAnInputTo (*nodes[nodes.size() - 1], **it));
2222
+ }
2223
+
2224
+ // Make the graph cyclic
2225
+ graph.addConnection ({ { nodeIDs.back(), 0 }, { nodeIDs.front(), 0 } });
2226
+ graph.addConnection ({ { nodeIDs.back(), 1 }, { nodeIDs.front(), 1 } });
2227
+
2228
+ // Check whether isAnInputTo behaves correctly for a cyclic graph
2229
+ for (const auto* node : graph.getNodes())
2230
+ {
2231
+ expect (graph.isAnInputTo (*node, *node));
2232
+
2233
+ expect (graph.isAnInputTo (*nodes[0], *node));
2234
+ expect (graph.isAnInputTo (*node, *nodes[0]));
2235
+
2236
+ expect (graph.isAnInputTo (*node, *nodes[nodes.size() - 1]));
2237
+ expect (graph.isAnInputTo (*nodes[nodes.size() - 1], *node));
2238
+ }
2239
+ }
2240
+
2241
+ beginTest ("rebuilding the graph recalculates overall latency");
2242
+ {
2243
+ AudioProcessorGraph graph;
2244
+
2245
+ const auto nodeA = graph.addNode (BasicProcessor::make (BasicProcessor::getStereoProperties(), MidiIn::no, MidiOut::no))->nodeID;
2246
+ const auto nodeB = graph.addNode (BasicProcessor::make (BasicProcessor::getStereoProperties(), MidiIn::no, MidiOut::no))->nodeID;
2247
+ const auto final = graph.addNode (BasicProcessor::make (BasicProcessor::getInputOnlyProperties(), MidiIn::no, MidiOut::no))->nodeID;
2248
+
2249
+ expect (graph.addConnection ({ { nodeA, 0 }, { nodeB, 0 } }));
2250
+ expect (graph.addConnection ({ { nodeA, 1 }, { nodeB, 1 } }));
2251
+ expect (graph.addConnection ({ { nodeB, 0 }, { final, 0 } }));
2252
+ expect (graph.addConnection ({ { nodeB, 1 }, { final, 1 } }));
2253
+
2254
+ expect (graph.getLatencySamples() == 0);
2255
+
2256
+ // Graph isn't built, latency is 0 if prepareToPlay hasn't been called yet
2257
+ const auto nodeALatency = 100;
2258
+ graph.getNodeForId (nodeA)->getProcessor()->setLatencySamples (nodeALatency);
2259
+ graph.rebuild();
2260
+ expect (graph.getLatencySamples() == 0);
2261
+
2262
+ graph.prepareToPlay (44100, 512);
2263
+
2264
+ expect (graph.getLatencySamples() == nodeALatency);
2265
+
2266
+ const auto nodeBLatency = 200;
2267
+ graph.getNodeForId (nodeB)->getProcessor()->setLatencySamples (nodeBLatency);
2268
+ graph.rebuild();
2269
+ expect (graph.getLatencySamples() == nodeALatency + nodeBLatency);
2270
+
2271
+ const auto finalLatency = 300;
2272
+ graph.getNodeForId (final)->getProcessor()->setLatencySamples (finalLatency);
2273
+ graph.rebuild();
2274
+ expect (graph.getLatencySamples() == nodeALatency + nodeBLatency + finalLatency);
2275
+ }
2276
+
2277
+ beginTest ("large render sequence can be built");
2278
+ {
2279
+ AudioProcessorGraph graph;
2280
+
2281
+ std::vector<AudioProcessorGraph::NodeID> nodeIDs;
2282
+
2283
+ constexpr auto numNodes = 1000;
2284
+ constexpr auto numChannels = 100;
2285
+
2286
+ for (auto i = 0; i < numNodes; ++i)
2287
+ {
2288
+ nodeIDs.push_back (graph.addNode (BasicProcessor::make (BasicProcessor::getMultichannelProperties (numChannels),
2289
+ MidiIn::yes,
2290
+ MidiOut::yes))->nodeID);
2291
+ }
2292
+
2293
+ for (auto it = nodeIDs.begin(); it != std::prev (nodeIDs.end()); ++it)
2294
+ for (auto channel = 0; channel < numChannels; ++channel)
2295
+ expect (graph.addConnection ({ { it[0], channel }, { it[1], channel } }));
2296
+
2297
+ const auto b = std::chrono::steady_clock::now();
2298
+ graph.prepareToPlay (44100.0, 512);
2299
+ const auto e = std::chrono::steady_clock::now();
2300
+ const auto duration = std::chrono::duration_cast<std::chrono::milliseconds> (e - b).count();
2301
+
2302
+ // No test here, but older versions of the graph would take forever to complete building
2303
+ // this graph, so we just want to make sure that we finish the test without timing out.
2304
+ logMessage ("render sequence built in " + String (duration) + " ms");
2305
+ }
2306
+ }
2307
+
2308
+ private:
2309
+ enum class MidiIn { no, yes };
2310
+ enum class MidiOut { no, yes };
2311
+
2312
+ class BasicProcessor final : public AudioProcessor
2313
+ {
2314
+ public:
2315
+ explicit BasicProcessor (const AudioProcessor::BusesProperties& layout, MidiIn mIn, MidiOut mOut)
2316
+ : AudioProcessor (layout), midiIn (mIn), midiOut (mOut) {}
2317
+
2318
+ const String getName() const override { return "Basic Processor"; }
2319
+ double getTailLengthSeconds() const override { return {}; }
2320
+ bool acceptsMidi() const override { return midiIn == MidiIn ::yes; }
2321
+ bool producesMidi() const override { return midiOut == MidiOut::yes; }
2322
+ AudioProcessorEditor* createEditor() override { return {}; }
2323
+ bool hasEditor() const override { return {}; }
2324
+ int getNumPrograms() override { return 1; }
2325
+ int getCurrentProgram() override { return {}; }
2326
+ void setCurrentProgram (int) override {}
2327
+ const String getProgramName (int) override { return {}; }
2328
+ void changeProgramName (int, const String&) override {}
2329
+ void getStateInformation (juce::MemoryBlock&) override {}
2330
+ void setStateInformation (const void*, int) override {}
2331
+ void prepareToPlay (double, int) override {}
2332
+ void releaseResources() override {}
2333
+ void processBlock (AudioBuffer<float>&, MidiBuffer&) override {}
2334
+ bool supportsDoublePrecisionProcessing() const override { return true; }
2335
+ bool isMidiEffect() const override { return {}; }
2336
+ void reset() override {}
2337
+ void setNonRealtime (bool) noexcept override {}
2338
+
2339
+ using AudioProcessor::processBlock;
2340
+
2341
+ static std::unique_ptr<AudioProcessor> make (const BusesProperties& layout,
2342
+ MidiIn midiIn,
2343
+ MidiOut midiOut)
2344
+ {
2345
+ return std::make_unique<BasicProcessor> (layout, midiIn, midiOut);
2346
+ }
2347
+
2348
+ static BusesProperties getInputOnlyProperties()
2349
+ {
2350
+ return BusesProperties().withInput ("in", AudioChannelSet::stereo());
2351
+ }
2352
+
2353
+ static BusesProperties getStereoProperties()
2354
+ {
2355
+ return BusesProperties().withInput ("in", AudioChannelSet::stereo())
2356
+ .withOutput ("out", AudioChannelSet::stereo());
2357
+ }
2358
+
2359
+ static BusesProperties getMultichannelProperties (int numChannels)
2360
+ {
2361
+ return BusesProperties().withInput ("in", AudioChannelSet::discreteChannels (numChannels))
2362
+ .withOutput ("out", AudioChannelSet::discreteChannels (numChannels));
2363
+ }
2364
+
2365
+ private:
2366
+ MidiIn midiIn;
2367
+ MidiOut midiOut;
2368
+ };
2369
+ };
2370
+
2371
+ static AudioProcessorGraphTests audioProcessorGraphTests;
2372
+
2373
+ #endif
2374
+
2375
+ } // namespace juce