1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

tie: Hide tie implementations from public API

This speeds up header includes
This commit is contained in:
Anthony Nicholls 2025-12-15 12:01:03 +00:00 committed by Anthony Nicholls
parent 97ce101d6a
commit 0e43b31e50
71 changed files with 1604 additions and 354 deletions

View file

@ -104,8 +104,10 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -203,9 +205,11 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
@ -2618,6 +2622,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_javascript/javascript/juce_JSObject.h"
"../../../../../modules/juce_javascript/juce_javascript.cpp"
"../../../../../modules/juce_javascript/juce_javascript.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIChannelAddress.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIChannelAddress.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIDevice.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIDevice.h"
@ -2629,10 +2634,12 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_midi_ci/ci/juce_CIEncodings.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIEncodings.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIFunctionBlock.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIMessages.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIMessages.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIMuid.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIParser.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIParser.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileAtAddress.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileAtAddress.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileDelegate.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileHost.cpp"
@ -2649,6 +2656,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_midi_ci/ci/juce_CIResponderDelegate.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIResponderOutput.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIResponderOutput.h"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscription.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscription.h"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscriptionManager.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscriptionManager.h"
@ -2836,8 +2844,10 @@ set_source_files_properties(
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -2935,9 +2945,11 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
@ -5350,6 +5362,7 @@ set_source_files_properties(
"../../../../../modules/juce_javascript/javascript/juce_JSObject.h"
"../../../../../modules/juce_javascript/juce_javascript.cpp"
"../../../../../modules/juce_javascript/juce_javascript.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIChannelAddress.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIChannelAddress.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIDevice.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIDevice.h"
@ -5361,10 +5374,12 @@ set_source_files_properties(
"../../../../../modules/juce_midi_ci/ci/juce_CIEncodings.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIEncodings.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIFunctionBlock.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIMessages.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIMessages.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIMuid.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIParser.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIParser.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileAtAddress.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileAtAddress.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileDelegate.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIProfileHost.cpp"
@ -5381,6 +5396,7 @@ set_source_files_properties(
"../../../../../modules/juce_midi_ci/ci/juce_CIResponderDelegate.h"
"../../../../../modules/juce_midi_ci/ci/juce_CIResponderOutput.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CIResponderOutput.h"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscription.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscription.h"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscriptionManager.cpp"
"../../../../../modules/juce_midi_ci/ci/juce_CISubscriptionManager.h"

View file

@ -207,6 +207,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -339,6 +345,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3195,15 +3207,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3222,6 +3243,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -919,6 +919,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -1054,6 +1060,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
@ -4063,15 +4075,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<Filter>JUCE Modules\juce_javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
@ -4090,6 +4111,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>

View file

@ -207,6 +207,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -339,6 +345,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3195,15 +3207,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3222,6 +3243,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -919,6 +919,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -1054,6 +1060,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
@ -4063,15 +4075,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<Filter>JUCE Modules\juce_javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
@ -4090,6 +4111,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>

View file

@ -207,6 +207,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -339,6 +345,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3195,15 +3207,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3222,6 +3243,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -919,6 +919,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -1054,6 +1060,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
@ -4063,15 +4075,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<Filter>JUCE Modules\juce_javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
@ -4090,6 +4111,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>

View file

@ -56,8 +56,10 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -155,9 +157,11 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
@ -2399,8 +2403,10 @@ set_source_files_properties(
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -2498,9 +2504,11 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"

View file

@ -165,6 +165,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -297,6 +303,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -694,6 +694,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -829,6 +835,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -165,6 +165,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -297,6 +303,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -694,6 +694,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -829,6 +835,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -92,8 +92,10 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -191,9 +193,11 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
@ -2591,8 +2595,10 @@ set_source_files_properties(
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -2690,9 +2696,11 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"

View file

@ -173,6 +173,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -305,6 +311,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -775,6 +775,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -910,6 +916,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -173,6 +173,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -305,6 +311,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -775,6 +775,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -910,6 +916,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -173,6 +173,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -305,6 +311,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -775,6 +775,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -910,6 +916,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -60,8 +60,10 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -159,9 +161,11 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
@ -2483,8 +2487,10 @@ set_source_files_properties(
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConversion.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPConverters.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPDispatcher.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPFactory.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPIterator.h"
@ -2582,9 +2588,11 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"
"../../../../../modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp"
"../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPBlock.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPDisconnectionListener.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpointId.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"

View file

@ -165,6 +165,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -297,6 +303,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -724,6 +724,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -859,6 +865,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -165,6 +165,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -297,6 +303,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -724,6 +724,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -859,6 +865,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -181,6 +181,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -313,6 +319,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3028,15 +3040,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3055,6 +3076,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -817,6 +817,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -952,6 +958,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
@ -3820,15 +3832,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<Filter>JUCE Modules\juce_javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
@ -3847,6 +3868,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>

View file

@ -181,6 +181,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -313,6 +319,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3028,15 +3040,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3055,6 +3076,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -817,6 +817,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -952,6 +958,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
@ -3820,15 +3832,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<Filter>JUCE Modules\juce_javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
@ -3847,6 +3868,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>

View file

@ -181,6 +181,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -313,6 +319,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3028,15 +3040,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3055,6 +3076,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -817,6 +817,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -952,6 +958,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
@ -3820,15 +3832,24 @@
<ClCompile Include="..\..\..\..\modules\juce_javascript\juce_javascript.cpp">
<Filter>JUCE Modules\juce_javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIChannelAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIDevice.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIEncodings.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIMessages.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIParser.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileAtAddress.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIProfileHost.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
@ -3847,6 +3868,9 @@
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CIResponderOutput.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscription.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_midi_ci\ci\juce_CISubscriptionManager.cpp">
<Filter>JUCE Modules\juce_midi_ci\ci</Filter>
</ClCompile>

View file

@ -164,6 +164,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -296,6 +302,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -721,6 +721,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -856,6 +862,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -164,6 +164,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -296,6 +302,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>

View file

@ -721,6 +721,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMP_test.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPDeviceInfo.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPFactory.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPIterator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -856,6 +862,12 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SampleRateHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>

View file

@ -35,6 +35,69 @@
namespace juce
{
bool AudioPlayHead::FrameRate::operator== (const FrameRate& other) const
{
const auto tie = [] (const FrameRate& x) { return std::tie (x.base, x.drop, x.pulldown); };
return tie (*this) == tie (other);
}
bool AudioPlayHead::TimeSignature::operator== (const TimeSignature& other) const
{
const auto tie = [] (auto& x) { return std::tie (x.numerator, x.denominator); };
return tie (*this) == tie (other);
}
bool AudioPlayHead::LoopPoints::operator== (const LoopPoints& other) const
{
const auto tie = [] (auto& x) { return std::tie (x.ppqStart, x.ppqEnd); };
return tie (*this) == tie (other);
}
bool AudioPlayHead::CurrentPositionInfo::operator== (const CurrentPositionInfo& other) const noexcept
{
const auto tie = [] (const CurrentPositionInfo& i)
{
return std::tie (i.timeInSamples,
i.ppqPosition,
i.editOriginTime,
i.ppqPositionOfLastBarStart,
i.frameRate,
i.isPlaying,
i.isRecording,
i.bpm,
i.timeSigNumerator,
i.timeSigDenominator,
i.ppqLoopStart,
i.ppqLoopEnd,
i.isLooping);
};
return tie (*this) == tie (other);
}
bool AudioPlayHead::PositionInfo::operator== (const PositionInfo& other) const noexcept
{
const auto tie = [] (const PositionInfo& i)
{
return std::make_tuple (i.getTimeInSamples(),
i.getTimeInSeconds(),
i.getPpqPosition(),
i.getEditOriginTime(),
i.getPpqPositionOfLastBarStart(),
i.getFrameRate(),
i.getBarCount(),
i.getTimeSignature(),
i.getBpm(),
i.getLoopPoints(),
i.getHostTimeNs(),
i.getIsPlaying(),
i.getIsRecording(),
i.getIsLooping());
};
return tie (*this) == tie (other);
}
bool AudioPlayHead::canControlTransport() { return false; }
void AudioPlayHead::transportPlay ([[maybe_unused]] bool shouldStartPlaying) {}
void AudioPlayHead::transportRecord ([[maybe_unused]] bool shouldStartRecording) {}

View file

@ -123,11 +123,7 @@ public:
[[nodiscard]] FrameRate withPullDown (bool x = true) const { return with (&FrameRate::pulldown, x); }
/** Returns true if this instance is equal to other. */
bool operator== (const FrameRate& other) const
{
const auto tie = [] (const FrameRate& x) { return std::tie (x.base, x.drop, x.pulldown); };
return tie (*this) == tie (other);
}
bool operator== (const FrameRate& other) const;
/** Returns true if this instance is not equal to other. */
bool operator!= (const FrameRate& other) const { return ! (*this == other); }
@ -176,11 +172,7 @@ public:
/** Time signature denominator, e.g. the 4 of a 3/4 time sig */
int denominator = 4;
bool operator== (const TimeSignature& other) const
{
const auto tie = [] (auto& x) { return std::tie (x.numerator, x.denominator); };
return tie (*this) == tie (other);
}
bool operator== (const TimeSignature& other) const;
bool operator!= (const TimeSignature& other) const
{
@ -200,11 +192,7 @@ public:
/** The current cycle end position in units of quarter-notes. */
double ppqEnd = 0;
bool operator== (const LoopPoints& other) const
{
const auto tie = [] (auto& x) { return std::tie (x.ppqStart, x.ppqEnd); };
return tie (*this) == tie (other);
}
bool operator== (const LoopPoints& other) const;
bool operator!= (const LoopPoints& other) const
{
@ -279,27 +267,7 @@ public:
bool isLooping = false;
//==============================================================================
bool operator== (const CurrentPositionInfo& other) const noexcept
{
const auto tie = [] (const CurrentPositionInfo& i)
{
return std::tie (i.timeInSamples,
i.ppqPosition,
i.editOriginTime,
i.ppqPositionOfLastBarStart,
i.frameRate,
i.isPlaying,
i.isRecording,
i.bpm,
i.timeSigNumerator,
i.timeSigDenominator,
i.ppqLoopStart,
i.ppqLoopEnd,
i.isLooping);
};
return tie (*this) == tie (other);
}
bool operator== (const CurrentPositionInfo& other) const noexcept;
bool operator!= (const CurrentPositionInfo& other) const noexcept
{
@ -425,28 +393,7 @@ public:
/** @see getIsLooping() */
void setIsLooping (bool isLoopingIn) { setFlag (flagIsLooping, isLoopingIn); }
bool operator== (const PositionInfo& other) const noexcept
{
const auto tie = [] (const PositionInfo& i)
{
return std::make_tuple (i.getTimeInSamples(),
i.getTimeInSeconds(),
i.getPpqPosition(),
i.getEditOriginTime(),
i.getPpqPositionOfLastBarStart(),
i.getFrameRate(),
i.getBarCount(),
i.getTimeSignature(),
i.getBpm(),
i.getLoopPoints(),
i.getHostTimeNs(),
i.getIsPlaying(),
i.getIsRecording(),
i.getIsLooping());
};
return tie (*this) == tie (other);
}
bool operator== (const PositionInfo& other) const noexcept;
bool operator!= (const PositionInfo& other) const noexcept
{

View file

@ -103,6 +103,8 @@
#include "audio_play_head/juce_AudioPlayHead.cpp"
#include "utilities/juce_AudioWorkgroup.cpp"
#include "midi/ump/juce_UMPDeviceInfo.cpp"
#include "midi/ump/juce_UMPFactory.cpp"
#include "midi/ump/juce_UMPUtils.cpp"
#include "midi/ump/juce_UMPView.cpp"
#include "midi/ump/juce_UMPSysEx7.cpp"

View file

@ -0,0 +1,53 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::universal_midi_packets
{
auto DeviceInfo::tie() const
{
return std::tie (manufacturer, family, modelNumber, revision);
}
bool DeviceInfo::operator== (const DeviceInfo& other) const
{
return tie() == other.tie();
}
bool DeviceInfo::operator!= (const DeviceInfo& other) const
{
return tie() != other.tie();
}
} // namespace juce::universal_midi_packets

View file

@ -49,11 +49,11 @@ struct DeviceInfo
std::array<std::byte, 4> revision;
private:
auto tie() const { return std::tie (manufacturer, family, modelNumber, revision); }
auto tie() const;
public:
bool operator== (const DeviceInfo& other) const { return tie() == other.tie(); }
bool operator!= (const DeviceInfo& other) const { return tie() != other.tie(); }
bool operator== (const DeviceInfo& other) const;
bool operator!= (const DeviceInfo& other) const;
static constexpr auto marshallingVersion = std::nullopt;

View file

@ -0,0 +1,53 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::universal_midi_packets
{
auto EndpointInfo::tie() const
{
return std::tie (versionMajor, versionMinor, numFunctionBlocks, flags);
}
bool EndpointInfo::operator== (const EndpointInfo& other) const
{
return tie() == other.tie();
}
bool EndpointInfo::operator!= (const EndpointInfo& other) const
{
return tie() != other.tie();
}
} // namespace juce::universal_midi_packets

View file

@ -86,7 +86,7 @@ private:
*/
class EndpointInfo
{
auto tie() const { return std::tie (versionMajor, versionMinor, numFunctionBlocks, flags); }
auto tie() const;
public:
[[nodiscard]] EndpointInfo withVersion (uint8_t major, uint8_t minor) const
@ -122,8 +122,8 @@ public:
/** True if this endpoint is capable of transmitting JR timestamps. */
[[nodiscard]] bool hasTransmitJRSupport() const { return getFlag (supportsTransmitJR); }
bool operator== (const EndpointInfo& other) const { return tie() == other.tie(); }
bool operator!= (const EndpointInfo& other) const { return tie() != other.tie(); }
bool operator== (const EndpointInfo& other) const;
bool operator!= (const EndpointInfo& other) const;
private:
enum Flags

View file

@ -220,6 +220,25 @@ void MPEZoneLayout::checkAndLimitZoneParameters (int minValue, int maxValue,
}
}
//==============================================================================
bool MPEZone::operator== (const MPEZone& other) const
{
const auto tie = [] (auto& x)
{
return std::tie (x.zoneType,
x.numMemberChannels,
x.perNotePitchbendRange,
x.masterPitchbendRange);
};
return tie (*this) == tie (other);
}
bool MPEZone::operator!= (const MPEZone& other) const
{
return ! operator== (other);
}
//==============================================================================
//==============================================================================

View file

@ -84,23 +84,8 @@ struct MPEZone
return isUsingChannelAsMemberChannel (channel) || channel == getMasterChannel();
}
static auto tie (const MPEZone& z)
{
return std::tie (z.zoneType,
z.numMemberChannels,
z.perNotePitchbendRange,
z.masterPitchbendRange);
}
bool operator== (const MPEZone& other) const
{
return tie (*this) == tie (other);
}
bool operator!= (const MPEZone& other) const
{
return tie (*this) != tie (other);
}
bool operator== (const MPEZone& other) const;
bool operator!= (const MPEZone& other) const;
//==============================================================================
static constexpr int lowerZoneMasterChannel = 1,

View file

@ -61,6 +61,7 @@
#include "midi_io/juce_WaitFreeListeners.cpp"
#include "midi_io/juce_MidiDeviceListConnectionBroadcaster.cpp"
#include "midi_io/ump/juce_UMPBlock.cpp"
#include "midi_io/ump/juce_UMPIOHelpers.cpp"
#include "midi_io/ump/juce_UMPInput.cpp"
#include "midi_io/ump/juce_UMPOutput.cpp"
@ -69,6 +70,7 @@
#include "midi_io/ump/juce_UMPVirtualEndpoint.cpp"
#include "midi_io/ump/juce_UMPSession.cpp"
#include "midi_io/ump/juce_UMPEndpoints.cpp"
#include "midi_io/ump/juce_UMPEndpointId.cpp"
#include "audio_io/juce_SampleRateHelpers.cpp"
#include "midi_io/juce_MidiDevices.cpp"

View file

@ -399,4 +399,10 @@ MidiDeviceInfo MidiOutput::getDeviceInfo() const noexcept
return customName.has_value() ? storedInfo.withName (*customName) : storedInfo;
}
bool MidiDeviceInfo::operator== (const MidiDeviceInfo& other) const noexcept
{
const auto tie = [] (auto& x) { return std::tuple (x.name, x.identifier); };
return tie (*this) == tie (other);
}
} // namespace juce

View file

@ -129,11 +129,7 @@ struct MidiDeviceInfo
[[nodiscard]] MidiDeviceInfo withIdentifier (String x) const { return withMember (*this, &MidiDeviceInfo::identifier, x); }
//==============================================================================
bool operator== (const MidiDeviceInfo& other) const noexcept
{
const auto tie = [] (auto& x) { return std::tuple (x.name, x.identifier); };
return tie (*this) == tie (other);
}
bool operator== (const MidiDeviceInfo& other) const noexcept;
bool operator!= (const MidiDeviceInfo& other) const noexcept { return ! operator== (other); }
};

View file

@ -0,0 +1,49 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::universal_midi_packets
{
bool Block::operator== (const Block& other) const
{
const auto tie = [] (auto& x) { return std::tuple (x.info, x.name); };
return tie (*this) == tie (other);
}
bool Block::operator!= (const Block& other) const
{
return ! operator== (other);
}
}

View file

@ -140,16 +140,8 @@ public:
return info == other.info;
}
bool operator== (const Block& other) const
{
const auto tie = [] (auto& x) { return std::tuple (x.info, x.name); };
return tie (*this) == tie (other);
}
bool operator!= (const Block& other) const
{
return ! operator== (other);
}
bool operator== (const Block& other) const;
bool operator!= (const Block& other) const;
private:
BlockInfo info;

View file

@ -0,0 +1,46 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::universal_midi_packets
{
auto EndpointId::tie() const { return std::tuple (src, dst); }
bool EndpointId::operator== (const EndpointId& x) const { return tie() == x.tie(); }
bool EndpointId::operator!= (const EndpointId& x) const { return tie() != x.tie(); }
bool EndpointId::operator< (const EndpointId& x) const { return tie() < x.tie(); }
bool EndpointId::operator<= (const EndpointId& x) const { return tie() <= x.tie(); }
bool EndpointId::operator> (const EndpointId& x) const { return tie() > x.tie(); }
bool EndpointId::operator>= (const EndpointId& x) const { return tie() >= x.tie(); }
}

View file

@ -60,7 +60,7 @@ constexpr IOKind ioKinds[] { IOKind::src, IOKind::dst };
*/
class EndpointId
{
auto tie() const { return std::tuple (src, dst); }
auto tie() const;
public:
/** @internal */
@ -68,12 +68,12 @@ public:
EndpointId() = default;
bool operator== (const EndpointId& x) const { return tie() == x.tie(); }
bool operator!= (const EndpointId& x) const { return tie() != x.tie(); }
bool operator< (const EndpointId& x) const { return tie() < x.tie(); }
bool operator<= (const EndpointId& x) const { return tie() <= x.tie(); }
bool operator> (const EndpointId& x) const { return tie() > x.tie(); }
bool operator>= (const EndpointId& x) const { return tie() >= x.tie(); }
bool operator== (const EndpointId& x) const;
bool operator!= (const EndpointId& x) const;
bool operator< (const EndpointId& x) const;
bool operator<= (const EndpointId& x) const;
bool operator> (const EndpointId& x) const;
bool operator>= (const EndpointId& x) const;
String get (IOKind k) const { return k == IOKind::src ? src : dst; }

View file

@ -291,4 +291,24 @@ bool ColourGradient::isInvisible() const noexcept
return true;
}
auto ColourGradient::ColourPoint::tie() const
{
return std::tuple (position, colour.getPixelARGB().getNativeARGB());
}
bool ColourGradient::ColourPoint::operator== (ColourPoint other) const noexcept
{
return tie() == other.tie();
}
bool ColourGradient::ColourPoint::operator!= (ColourPoint other) const noexcept
{
return tie() != other.tie();
}
bool ColourGradient::ColourPoint::operator< (ColourPoint other) const noexcept
{
return tie() < other.tie();
}
} // namespace juce

View file

@ -233,14 +233,15 @@ private:
//==============================================================================
struct ColourPoint
{
auto tie() const { return std::tuple (position, colour.getPixelARGB().getNativeARGB()); }
bool operator== (ColourPoint other) const noexcept { return tie() == other.tie(); }
bool operator!= (ColourPoint other) const noexcept { return tie() != other.tie(); }
bool operator< (ColourPoint other) const noexcept { return tie() < other.tie(); }
bool operator== (ColourPoint other) const noexcept;
bool operator!= (ColourPoint other) const noexcept;
bool operator< (ColourPoint other) const noexcept;
double position;
Colour colour;
private:
auto tie() const;
};
struct ColourPointArrayComparisons;

View file

@ -35,6 +35,34 @@
namespace juce::detail
{
auto ShapedTextOptions::tie() const
{
return std::tie (justification,
readingDir,
wordWrapWidth,
alignmentWidth,
height,
fontsForRange,
firstLineIndent,
leading,
additiveLineSpacing,
baselineAtZero,
allowBreakingInsideWord,
trailingWhitespacesShouldFit,
maxNumLines,
ellipsis);
}
bool ShapedTextOptions::operator== (const ShapedTextOptions& other) const
{
return tie() == other.tie();
}
bool ShapedTextOptions::operator!= (const ShapedTextOptions& other) const
{
return tie() != other.tie();
}
//==============================================================================
constexpr hb_script_t getScriptTag (TextScript type)
{

View file

@ -45,27 +45,11 @@ enum class TextDirection
class ShapedTextOptions
{
private:
auto tie() const
{
return std::tie (justification,
readingDir,
wordWrapWidth,
alignmentWidth,
height,
fontsForRange,
firstLineIndent,
leading,
additiveLineSpacing,
baselineAtZero,
allowBreakingInsideWord,
trailingWhitespacesShouldFit,
maxNumLines,
ellipsis);
}
auto tie() const;
public:
bool operator== (const ShapedTextOptions& other) const { return tie() == other.tie(); }
bool operator!= (const ShapedTextOptions& other) const { return tie() != other.tie(); }
bool operator== (const ShapedTextOptions& other) const;
bool operator!= (const ShapedTextOptions& other) const;
//==============================================================================
[[nodiscard]] ShapedTextOptions withJustification (Justification x) const

View file

@ -35,6 +35,42 @@
namespace juce
{
constexpr auto FontFeatureSetting::tie() const
{
return std::tuple (tag, value);
}
constexpr bool FontFeatureSetting::operator< (const FontFeatureSetting& other) const
{
return tie() < other.tie();
}
constexpr bool FontFeatureSetting::operator<= (const FontFeatureSetting& other) const
{
return tie() <= other.tie();
}
constexpr bool FontFeatureSetting::operator> (const FontFeatureSetting& other) const
{
return tie() > other.tie();
}
constexpr bool FontFeatureSetting::operator>= (const FontFeatureSetting& other) const
{
return tie() >= other.tie();
}
constexpr bool FontFeatureSetting::operator== (const FontFeatureSetting& other) const
{
return tie() == other.tie();
}
constexpr bool FontFeatureSetting::operator!= (const FontFeatureSetting& other) const
{
return tie() != other.tie();
}
//==============================================================================
FontFeatureTag FontFeatureTag::fromString (const String& string)
{
if (string.getNumBytesAsUTF8() != 4)

View file

@ -107,7 +107,7 @@ private:
*/
class JUCE_API FontFeatureSetting final
{
constexpr auto tie() const { return std::tuple (tag, value); }
constexpr auto tie() const;
public:
/** Common feature values for convenience. */
@ -123,12 +123,12 @@ public:
{
}
[[nodiscard]] constexpr bool operator< (const FontFeatureSetting& other) const { return tie() < other.tie(); }
[[nodiscard]] constexpr bool operator<= (const FontFeatureSetting& other) const { return tie() <= other.tie(); }
[[nodiscard]] constexpr bool operator> (const FontFeatureSetting& other) const { return tie() > other.tie(); }
[[nodiscard]] constexpr bool operator>= (const FontFeatureSetting& other) const { return tie() >= other.tie(); }
[[nodiscard]] constexpr bool operator== (const FontFeatureSetting& other) const { return tie() == other.tie(); }
[[nodiscard]] constexpr bool operator!= (const FontFeatureSetting& other) const { return tie() != other.tie(); }
[[nodiscard]] constexpr bool operator< (const FontFeatureSetting& other) const;
[[nodiscard]] constexpr bool operator<= (const FontFeatureSetting& other) const;
[[nodiscard]] constexpr bool operator> (const FontFeatureSetting& other) const;
[[nodiscard]] constexpr bool operator>= (const FontFeatureSetting& other) const;
[[nodiscard]] constexpr bool operator== (const FontFeatureSetting& other) const;
[[nodiscard]] constexpr bool operator!= (const FontFeatureSetting& other) const;
/** The OpenType feature tag. */
FontFeatureTag tag;

View file

@ -0,0 +1,44 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::midi_ci
{
auto ChannelAddress::tie() const { return std::tie (group, channel); }
bool ChannelAddress::operator< (const ChannelAddress& other) const { return tie() < other.tie(); }
bool ChannelAddress::operator<= (const ChannelAddress& other) const { return tie() <= other.tie(); }
bool ChannelAddress::operator> (const ChannelAddress& other) const { return tie() > other.tie(); }
bool ChannelAddress::operator>= (const ChannelAddress& other) const { return tie() >= other.tie(); }
bool ChannelAddress::operator== (const ChannelAddress& other) const { return tie() == other.tie(); }
bool ChannelAddress::operator!= (const ChannelAddress& other) const { return ! operator== (other); }
} // namespace juce::midi_ci

View file

@ -46,7 +46,7 @@ private:
uint8_t group{}; ///< A group within a MIDI endpoint, where 0 <= group && group < 16
ChannelInGroup channel{}; ///< A set of channels related to specified group
auto tie() const { return std::tie (group, channel); }
auto tie() const;
public:
/** Returns a copy of this object with the specified group. */
@ -81,12 +81,12 @@ public:
/** Returns true if this address refers to a single channel. */
bool isSingleChannel() const { return ! isBlock() && ! isGroup(); }
bool operator< (const ChannelAddress& other) const { return tie() < other.tie(); }
bool operator<= (const ChannelAddress& other) const { return tie() <= other.tie(); }
bool operator> (const ChannelAddress& other) const { return tie() > other.tie(); }
bool operator>= (const ChannelAddress& other) const { return tie() >= other.tie(); }
bool operator== (const ChannelAddress& other) const { return tie() == other.tie(); }
bool operator!= (const ChannelAddress& other) const { return ! operator== (other); }
bool operator< (const ChannelAddress& other) const;
bool operator<= (const ChannelAddress& other) const;
bool operator> (const ChannelAddress& other) const;
bool operator>= (const ChannelAddress& other) const;
bool operator== (const ChannelAddress& other) const;
bool operator!= (const ChannelAddress& other) const;
};
} // namespace juce::midi_ci

View file

@ -0,0 +1,325 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::midi_ci::Message
{
//==============================================================================
auto Header::tie() const
{
return std::tuple (deviceID, category, version, source, destination);
}
bool Header::operator== (const Header& x) const { return tie() == x.tie(); }
bool Header::operator!= (const Header& x) const { return ! operator== (x); }
//==============================================================================
auto DiscoveryResponse::tie() const
{
return std::tuple (device, capabilities, maximumSysexSize, outputPathID, functionBlock);
}
bool DiscoveryResponse::operator== (const DiscoveryResponse& x) const { return tie() == x.tie(); }
bool DiscoveryResponse::operator!= (const DiscoveryResponse& x) const { return ! operator== (x); }
//==============================================================================
auto Discovery::tie() const
{
return std::tuple (device, capabilities, maximumSysexSize, outputPathID);
}
bool Discovery::operator== (const Discovery& x) const { return tie() == x.tie(); }
bool Discovery::operator!= (const Discovery& x) const { return ! operator== (x); }
//==============================================================================
auto EndpointInquiryResponse::tie() const
{
return std::tuple (status, makeComparableRange (data));
}
bool EndpointInquiryResponse::operator== (const EndpointInquiryResponse& x) const { return tie() == x.tie(); }
bool EndpointInquiryResponse::operator!= (const EndpointInquiryResponse& x) const { return ! operator== (x); }
//==============================================================================
auto EndpointInquiry::tie() const
{
return std::tuple (status);
}
bool EndpointInquiry::operator== (const EndpointInquiry& x) const { return tie() == x.tie(); }
bool EndpointInquiry::operator!= (const EndpointInquiry& x) const { return ! operator== (x); }
//==============================================================================
auto InvalidateMUID::tie() const
{
return std::tuple (target);
}
bool InvalidateMUID::operator== (const InvalidateMUID& x) const { return tie() == x.tie(); }
bool InvalidateMUID::operator!= (const InvalidateMUID& x) const { return ! operator== (x); }
//==============================================================================
auto ACK::tie() const
{
return std::tuple (originalCategory, statusCode, statusData, details, makeComparableRange (messageText));
}
bool ACK::operator== (const ACK& x) const { return tie() == x.tie(); }
bool ACK::operator!= (const ACK& x) const { return ! operator== (x); }
//==============================================================================
auto NAK::tie() const
{
return std::tuple (originalCategory, statusCode, statusData, details, makeComparableRange (messageText));
}
bool NAK::operator== (const NAK& x) const { return tie() == x.tie(); }
bool NAK::operator!= (const NAK& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileInquiryResponse::tie() const
{
return std::tuple (makeComparableRange (enabledProfiles), makeComparableRange (disabledProfiles));
}
bool ProfileInquiryResponse::operator== (const ProfileInquiryResponse& x) const { return tie() == x.tie(); }
bool ProfileInquiryResponse::operator!= (const ProfileInquiryResponse& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileInquiry::tie() const
{
return std::tuple<>();
}
bool ProfileInquiry::operator== (const ProfileInquiry& x) const { return tie() == x.tie(); }
bool ProfileInquiry::operator!= (const ProfileInquiry& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileAdded::tie() const
{
return std::tuple (profile);
}
bool ProfileAdded::operator== (const ProfileAdded& x) const { return tie() == x.tie(); }
bool ProfileAdded::operator!= (const ProfileAdded& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileRemoved::tie() const
{
return std::tuple (profile);
}
bool ProfileRemoved::operator== (const ProfileRemoved& x) const { return tie() == x.tie(); }
bool ProfileRemoved::operator!= (const ProfileRemoved& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileDetailsResponse::tie() const
{
return std::tuple (profile, target, makeComparableRange (data));
}
bool ProfileDetailsResponse::operator== (const ProfileDetailsResponse& x) const { return tie() == x.tie(); }
bool ProfileDetailsResponse::operator!= (const ProfileDetailsResponse& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileDetails::tie() const
{
return std::tuple (profile, target);
}
bool ProfileDetails::operator== (const ProfileDetails& x) const { return tie() == x.tie(); }
bool ProfileDetails::operator!= (const ProfileDetails& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileOn::tie() const
{
return std::tuple (profile, numChannels);
}
bool ProfileOn::operator== (const ProfileOn& x) const { return tie() == x.tie(); }
bool ProfileOn::operator!= (const ProfileOn& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileOff::tie() const
{
return std::tuple (profile);
}
bool ProfileOff::operator== (const ProfileOff& x) const { return tie() == x.tie(); }
bool ProfileOff::operator!= (const ProfileOff& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileEnabledReport::tie() const
{
return std::tuple (profile, numChannels);
}
bool ProfileEnabledReport::operator== (const ProfileEnabledReport& x) const { return tie() == x.tie(); }
bool ProfileEnabledReport::operator!= (const ProfileEnabledReport& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileDisabledReport::tie() const
{
return std::tuple (profile, numChannels);
}
bool ProfileDisabledReport::operator== (const ProfileDisabledReport& x) const { return tie() == x.tie(); }
bool ProfileDisabledReport::operator!= (const ProfileDisabledReport& x) const { return ! operator== (x); }
//==============================================================================
auto ProfileSpecificData::tie() const
{
return std::tuple (profile, makeComparableRange (data));
}
bool ProfileSpecificData::operator== (const ProfileSpecificData& x) const { return tie() == x.tie(); }
bool ProfileSpecificData::operator!= (const ProfileSpecificData& x) const { return ! operator== (x); }
//==============================================================================
auto PropertyExchangeCapabilitiesResponse::tie() const
{
return std::tuple (numSimultaneousRequestsSupported, majorVersion, minorVersion);
}
bool PropertyExchangeCapabilitiesResponse::operator== (const PropertyExchangeCapabilitiesResponse& x) const { return tie() == x.tie(); }
bool PropertyExchangeCapabilitiesResponse::operator!= (const PropertyExchangeCapabilitiesResponse& x) const { return ! operator== (x); }
//==============================================================================
auto PropertyExchangeCapabilities::tie() const
{
return std::tuple (numSimultaneousRequestsSupported, majorVersion, minorVersion);
}
bool PropertyExchangeCapabilities::operator== (const PropertyExchangeCapabilities& x) const { return tie() == x.tie(); }
bool PropertyExchangeCapabilities::operator!= (const PropertyExchangeCapabilities& x) const { return ! operator== (x); }
//==============================================================================
auto StaticSizePropertyExchange::tie() const
{
return std::tuple (requestID, makeComparableRange (header));
}
//==============================================================================
auto DynamicSizePropertyExchange::tie() const
{
return std::tuple (requestID,
makeComparableRange (header),
totalNumChunks,
thisChunkNum,
makeComparableRange (data));
}
//==============================================================================
bool PropertyGetDataResponse::operator== (const PropertyGetDataResponse& x) const { return tie() == x.tie(); }
bool PropertyGetDataResponse::operator!= (const PropertyGetDataResponse& x) const { return ! operator== (x); }
//==============================================================================
bool PropertyGetData::operator== (const PropertyGetData& x) const { return tie() == x.tie(); }
bool PropertyGetData::operator!= (const PropertyGetData& x) const { return ! operator== (x); }
//==============================================================================
bool PropertySetDataResponse::operator== (const PropertySetDataResponse& x) const { return tie() == x.tie(); }
bool PropertySetDataResponse::operator!= (const PropertySetDataResponse& x) const { return ! operator== (x); }
//==============================================================================
bool PropertySetData::operator== (const PropertySetData& x) const { return tie() == x.tie(); }
bool PropertySetData::operator!= (const PropertySetData& x) const { return ! operator== (x); }
//==============================================================================
bool PropertySubscribeResponse::operator== (const PropertySubscribeResponse& x) const { return tie() == x.tie(); }
bool PropertySubscribeResponse::operator!= (const PropertySubscribeResponse& x) const { return ! operator== (x); }
//==============================================================================
bool PropertySubscribe::operator== (const PropertySubscribe& x) const { return tie() == x.tie(); }
bool PropertySubscribe::operator!= (const PropertySubscribe& x) const { return ! operator== (x); }
//==============================================================================
bool PropertyNotify::operator== (const PropertyNotify& x) const { return tie() == x.tie(); }
bool PropertyNotify::operator!= (const PropertyNotify& x) const { return ! operator== (x); }
//==============================================================================
auto ProcessInquiryResponse::tie() const
{
return std::tuple (supportedFeatures);
}
bool ProcessInquiryResponse::operator== (const ProcessInquiryResponse& x) const { return tie() == x.tie(); }
bool ProcessInquiryResponse::operator!= (const ProcessInquiryResponse& x) const { return ! operator== (x); }
//==============================================================================
auto ProcessInquiry::tie() const
{
return std::tuple<>();
}
bool ProcessInquiry::operator== (const ProcessInquiry& x) const { return tie() == x.tie(); }
bool ProcessInquiry::operator!= (const ProcessInquiry& x) const { return ! operator== (x); }
//==============================================================================
auto ProcessMidiMessageReportResponse::tie() const
{
return std::tuple (messageDataControl, requestedMessages, channelControllerMessages, noteDataMessages);
}
bool ProcessMidiMessageReportResponse::operator== (const ProcessMidiMessageReportResponse& x) const { return tie() == x.tie(); }
bool ProcessMidiMessageReportResponse::operator!= (const ProcessMidiMessageReportResponse& x) const { return ! operator== (x); }
//==============================================================================
auto ProcessMidiMessageReport::tie() const
{
return std::tuple (messageDataControl, requestedMessages, channelControllerMessages, noteDataMessages);
}
bool ProcessMidiMessageReport::operator== (const ProcessMidiMessageReport& x) const { return tie() == x.tie(); }
bool ProcessMidiMessageReport::operator!= (const ProcessMidiMessageReport& x) const { return ! operator== (x); }
//==============================================================================
auto ProcessEndMidiMessageReport::tie() const
{
return std::tuple<>();
}
bool ProcessEndMidiMessageReport::operator== (const ProcessEndMidiMessageReport& x) const { return tie() == x.tie(); }
bool ProcessEndMidiMessageReport::operator!= (const ProcessEndMidiMessageReport& x) const { return ! operator== (x); }
//==============================================================================
bool Parsed::operator== (const Parsed& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.header, x.body); };
return tie (*this) == tie (other);
}
bool Parsed::operator!= (const Parsed& other) const { return ! operator== (other); }
} // namespace juce::midi_ci::Message

View file

@ -131,13 +131,10 @@ namespace Message
MUID source = MUID::makeUnchecked (0);
MUID destination = MUID::makeUnchecked (0);
auto tie() const
{
return std::tuple (deviceID, category, version, source, destination);
}
auto tie() const;
bool operator== (const Header& x) const { return tie() == x.tie(); }
bool operator!= (const Header& x) const { return ! operator== (x); }
bool operator== (const Header& x) const;
bool operator!= (const Header& x) const;
};
/**
@ -164,13 +161,10 @@ namespace Message
std::byte outputPathID{}; /**< Only valid if the message header specifies version 0x02 or greater. */
std::byte functionBlock{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (device, capabilities, maximumSysexSize, outputPathID, functionBlock);
}
auto tie() const;
bool operator== (const DiscoveryResponse& x) const { return tie() == x.tie(); }
bool operator!= (const DiscoveryResponse& x) const { return ! operator== (x); }
bool operator== (const DiscoveryResponse& x) const;
bool operator!= (const DiscoveryResponse& x) const;
};
/** See the MIDI-CI specification.
@ -184,13 +178,10 @@ namespace Message
uint32_t maximumSysexSize{};
std::byte outputPathID{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (device, capabilities, maximumSysexSize, outputPathID);
}
auto tie() const;
bool operator== (const Discovery& x) const { return tie() == x.tie(); }
bool operator!= (const Discovery& x) const { return ! operator== (x); }
bool operator== (const Discovery& x) const;
bool operator!= (const Discovery& x) const;
};
/** See the MIDI-CI specification.
@ -202,13 +193,10 @@ namespace Message
std::byte status;
Span<const std::byte> data;
auto tie() const
{
return std::tuple (status, makeComparableRange (data));
}
auto tie() const;
bool operator== (const EndpointInquiryResponse& x) const { return tie() == x.tie(); }
bool operator!= (const EndpointInquiryResponse& x) const { return ! operator== (x); }
bool operator== (const EndpointInquiryResponse& x) const;
bool operator!= (const EndpointInquiryResponse& x) const;
};
/** See the MIDI-CI specification.
@ -219,13 +207,10 @@ namespace Message
{
std::byte status;
auto tie() const
{
return std::tuple (status);
}
auto tie() const;
bool operator== (const EndpointInquiry& x) const { return tie() == x.tie(); }
bool operator!= (const EndpointInquiry& x) const { return ! operator== (x); }
bool operator== (const EndpointInquiry& x) const;
bool operator!= (const EndpointInquiry& x) const;
};
/** See the MIDI-CI specification.
@ -236,13 +221,10 @@ namespace Message
{
MUID target = MUID::makeUnchecked (0);
auto tie() const
{
return std::tuple (target);
}
auto tie() const;
bool operator== (const InvalidateMUID& x) const { return tie() == x.tie(); }
bool operator!= (const InvalidateMUID& x) const { return ! operator== (x); }
bool operator== (const InvalidateMUID& x) const;
bool operator!= (const InvalidateMUID& x) const;
};
/** See the MIDI-CI specification.
@ -263,13 +245,10 @@ namespace Message
return Encodings::stringFrom7BitText (messageText);
}
auto tie() const
{
return std::tuple (originalCategory, statusCode, statusData, details, makeComparableRange (messageText));
}
auto tie() const;
bool operator== (const ACK& x) const { return tie() == x.tie(); }
bool operator!= (const ACK& x) const { return ! operator== (x); }
bool operator== (const ACK& x) const;
bool operator!= (const ACK& x) const;
};
/** See the MIDI-CI specification.
@ -290,13 +269,10 @@ namespace Message
return Encodings::stringFrom7BitText (messageText);
}
auto tie() const
{
return std::tuple (originalCategory, statusCode, statusData, details, makeComparableRange (messageText));
}
auto tie() const;
bool operator== (const NAK& x) const { return tie() == x.tie(); }
bool operator!= (const NAK& x) const { return ! operator== (x); }
bool operator== (const NAK& x) const;
bool operator!= (const NAK& x) const;
};
/** See the MIDI-CI specification.
@ -308,13 +284,10 @@ namespace Message
Span<const Profile> enabledProfiles;
Span<const Profile> disabledProfiles;
auto tie() const
{
return std::tuple (makeComparableRange (enabledProfiles), makeComparableRange (disabledProfiles));
}
auto tie() const;
bool operator== (const ProfileInquiryResponse& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileInquiryResponse& x) const { return ! operator== (x); }
bool operator== (const ProfileInquiryResponse& x) const;
bool operator!= (const ProfileInquiryResponse& x) const;
};
/** See the MIDI-CI specification.
@ -323,13 +296,10 @@ namespace Message
*/
struct ProfileInquiry
{
auto tie() const
{
return std::tuple<>();
}
auto tie() const;
bool operator== (const ProfileInquiry& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileInquiry& x) const { return ! operator== (x); }
bool operator== (const ProfileInquiry& x) const;
bool operator!= (const ProfileInquiry& x) const;
};
/** See the MIDI-CI specification.
@ -340,13 +310,10 @@ namespace Message
{
Profile profile{};
auto tie() const
{
return std::tuple (profile);
}
auto tie() const;
bool operator== (const ProfileAdded& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileAdded& x) const { return ! operator== (x); }
bool operator== (const ProfileAdded& x) const;
bool operator!= (const ProfileAdded& x) const;
};
/** See the MIDI-CI specification.
@ -357,13 +324,10 @@ namespace Message
{
Profile profile{};
auto tie() const
{
return std::tuple (profile);
}
auto tie() const;
bool operator== (const ProfileRemoved& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileRemoved& x) const { return ! operator== (x); }
bool operator== (const ProfileRemoved& x) const;
bool operator!= (const ProfileRemoved& x) const;
};
/** See the MIDI-CI specification.
@ -376,13 +340,10 @@ namespace Message
std::byte target{};
Span<const std::byte> data;
auto tie() const
{
return std::tuple (profile, target, makeComparableRange (data));
}
auto tie() const;
bool operator== (const ProfileDetailsResponse& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileDetailsResponse& x) const { return ! operator== (x); }
bool operator== (const ProfileDetailsResponse& x) const;
bool operator!= (const ProfileDetailsResponse& x) const;
};
/** See the MIDI-CI specification.
@ -394,13 +355,10 @@ namespace Message
Profile profile{};
std::byte target{};
auto tie() const
{
return std::tuple (profile, target);
}
auto tie() const;
bool operator== (const ProfileDetails& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileDetails& x) const { return ! operator== (x); }
bool operator== (const ProfileDetails& x) const;
bool operator!= (const ProfileDetails& x) const;
};
/** See the MIDI-CI specification.
@ -412,13 +370,10 @@ namespace Message
Profile profile{};
uint16_t numChannels{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (profile, numChannels);
}
auto tie() const;
bool operator== (const ProfileOn& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileOn& x) const { return ! operator== (x); }
bool operator== (const ProfileOn& x) const;
bool operator!= (const ProfileOn& x) const;
};
/** See the MIDI-CI specification.
@ -429,13 +384,10 @@ namespace Message
{
Profile profile{};
auto tie() const
{
return std::tuple (profile);
}
auto tie() const;
bool operator== (const ProfileOff& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileOff& x) const { return ! operator== (x); }
bool operator== (const ProfileOff& x) const;
bool operator!= (const ProfileOff& x) const;
};
/** See the MIDI-CI specification.
@ -447,13 +399,10 @@ namespace Message
Profile profile{};
uint16_t numChannels{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (profile, numChannels);
}
auto tie() const;
bool operator== (const ProfileEnabledReport& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileEnabledReport& x) const { return ! operator== (x); }
bool operator== (const ProfileEnabledReport& x) const;
bool operator!= (const ProfileEnabledReport& x) const;
};
/** See the MIDI-CI specification.
@ -465,13 +414,10 @@ namespace Message
Profile profile{};
uint16_t numChannels{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (profile, numChannels);
}
auto tie() const;
bool operator== (const ProfileDisabledReport& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileDisabledReport& x) const { return ! operator== (x); }
bool operator== (const ProfileDisabledReport& x) const;
bool operator!= (const ProfileDisabledReport& x) const;
};
/** See the MIDI-CI specification.
@ -483,13 +429,10 @@ namespace Message
Profile profile{};
Span<const std::byte> data;
auto tie() const
{
return std::tuple (profile, makeComparableRange (data));
}
auto tie() const;
bool operator== (const ProfileSpecificData& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileSpecificData& x) const { return ! operator== (x); }
bool operator== (const ProfileSpecificData& x) const;
bool operator!= (const ProfileSpecificData& x) const;
};
/** See the MIDI-CI specification.
@ -502,13 +445,10 @@ namespace Message
std::byte majorVersion{}; /**< Only valid if the message header specifies version 0x02 or greater. */
std::byte minorVersion{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (numSimultaneousRequestsSupported, majorVersion, minorVersion);
}
auto tie() const;
bool operator== (const PropertyExchangeCapabilitiesResponse& x) const { return tie() == x.tie(); }
bool operator!= (const PropertyExchangeCapabilitiesResponse& x) const { return ! operator== (x); }
bool operator== (const PropertyExchangeCapabilitiesResponse& x) const;
bool operator!= (const PropertyExchangeCapabilitiesResponse& x) const;
};
/** See the MIDI-CI specification.
@ -521,13 +461,10 @@ namespace Message
std::byte majorVersion{}; /**< Only valid if the message header specifies version 0x02 or greater. */
std::byte minorVersion{}; /**< Only valid if the message header specifies version 0x02 or greater. */
auto tie() const
{
return std::tuple (numSimultaneousRequestsSupported, majorVersion, minorVersion);
}
auto tie() const;
bool operator== (const PropertyExchangeCapabilities& x) const { return tie() == x.tie(); }
bool operator!= (const PropertyExchangeCapabilities& x) const { return ! operator== (x); }
bool operator== (const PropertyExchangeCapabilities& x) const;
bool operator!= (const PropertyExchangeCapabilities& x) const;
};
/** A property-exchange message that has no payload, and must therefore
@ -540,10 +477,7 @@ namespace Message
std::byte requestID{};
Span<const std::byte> header;
auto tie() const
{
return std::tuple (requestID, makeComparableRange (header));
}
auto tie() const;
};
/** A property-exchange message that may form part of a multi-chunk
@ -559,14 +493,7 @@ namespace Message
uint16_t thisChunkNum{};
Span<const std::byte> data;
auto tie() const
{
return std::tuple (requestID,
makeComparableRange (header),
totalNumChunks,
thisChunkNum,
makeComparableRange (data));
}
auto tie() const;
};
/** See the MIDI-CI specification.
@ -575,8 +502,8 @@ namespace Message
*/
struct PropertyGetDataResponse : public DynamicSizePropertyExchange
{
bool operator== (const PropertyGetDataResponse& x) const { return tie() == x.tie(); }
bool operator!= (const PropertyGetDataResponse& x) const { return ! operator== (x); }
bool operator== (const PropertyGetDataResponse& x) const;
bool operator!= (const PropertyGetDataResponse& x) const;
};
/** See the MIDI-CI specification.
@ -585,8 +512,8 @@ namespace Message
*/
struct PropertyGetData : public StaticSizePropertyExchange
{
bool operator== (const PropertyGetData& x) const { return tie() == x.tie(); }
bool operator!= (const PropertyGetData& x) const { return ! operator== (x); }
bool operator== (const PropertyGetData& x) const;
bool operator!= (const PropertyGetData& x) const;
};
/** See the MIDI-CI specification.
@ -595,8 +522,8 @@ namespace Message
*/
struct PropertySetDataResponse : public StaticSizePropertyExchange
{
bool operator== (const PropertySetDataResponse& x) const { return tie() == x.tie(); }
bool operator!= (const PropertySetDataResponse& x) const { return ! operator== (x); }
bool operator== (const PropertySetDataResponse& x) const;
bool operator!= (const PropertySetDataResponse& x) const;
};
/** See the MIDI-CI specification.
@ -605,8 +532,8 @@ namespace Message
*/
struct PropertySetData : public DynamicSizePropertyExchange
{
bool operator== (const PropertySetData& x) const { return tie() == x.tie(); }
bool operator!= (const PropertySetData& x) const { return ! operator== (x); }
bool operator== (const PropertySetData& x) const;
bool operator!= (const PropertySetData& x) const;
};
/** See the MIDI-CI specification.
@ -615,8 +542,8 @@ namespace Message
*/
struct PropertySubscribeResponse : public DynamicSizePropertyExchange
{
bool operator== (const PropertySubscribeResponse& x) const { return tie() == x.tie(); }
bool operator!= (const PropertySubscribeResponse& x) const { return ! operator== (x); }
bool operator== (const PropertySubscribeResponse& x) const;
bool operator!= (const PropertySubscribeResponse& x) const;
};
/** See the MIDI-CI specification.
@ -625,8 +552,8 @@ namespace Message
*/
struct PropertySubscribe : public DynamicSizePropertyExchange
{
bool operator== (const PropertySubscribe& x) const { return tie() == x.tie(); }
bool operator!= (const PropertySubscribe& x) const { return ! operator== (x); }
bool operator== (const PropertySubscribe& x) const;
bool operator!= (const PropertySubscribe& x) const;
};
/** See the MIDI-CI specification.
@ -635,8 +562,8 @@ namespace Message
*/
struct PropertyNotify : public DynamicSizePropertyExchange
{
bool operator== (const PropertyNotify& x) const { return tie() == x.tie(); }
bool operator!= (const PropertyNotify& x) const { return ! operator== (x); }
bool operator== (const PropertyNotify& x) const;
bool operator!= (const PropertyNotify& x) const;
};
/** See the MIDI-CI specification.
@ -647,13 +574,10 @@ namespace Message
{
std::byte supportedFeatures{};
auto tie() const
{
return std::tuple (supportedFeatures);
}
auto tie() const;
bool operator== (const ProcessInquiryResponse& x) const { return tie() == x.tie(); }
bool operator!= (const ProcessInquiryResponse& x) const { return ! operator== (x); }
bool operator== (const ProcessInquiryResponse& x) const;
bool operator!= (const ProcessInquiryResponse& x) const;
};
/** See the MIDI-CI specification.
@ -662,13 +586,10 @@ namespace Message
*/
struct ProcessInquiry
{
auto tie() const
{
return std::tuple<>();
}
auto tie() const;
bool operator== (const ProcessInquiry& x) const { return tie() == x.tie(); }
bool operator!= (const ProcessInquiry& x) const { return ! operator== (x); }
bool operator== (const ProcessInquiry& x) const;
bool operator!= (const ProcessInquiry& x) const;
};
/** See the MIDI-CI specification.
@ -682,13 +603,10 @@ namespace Message
std::byte channelControllerMessages{};
std::byte noteDataMessages{};
auto tie() const
{
return std::tuple (messageDataControl, requestedMessages, channelControllerMessages, noteDataMessages);
}
auto tie() const;
bool operator== (const ProcessMidiMessageReportResponse& x) const { return tie() == x.tie(); }
bool operator!= (const ProcessMidiMessageReportResponse& x) const { return ! operator== (x); }
bool operator== (const ProcessMidiMessageReportResponse& x) const;
bool operator!= (const ProcessMidiMessageReportResponse& x) const;
};
/** See the MIDI-CI specification.
@ -702,13 +620,10 @@ namespace Message
std::byte channelControllerMessages{};
std::byte noteDataMessages{};
auto tie() const
{
return std::tuple (messageDataControl, requestedMessages, channelControllerMessages, noteDataMessages);
}
auto tie() const;
bool operator== (const ProcessMidiMessageReport& x) const { return tie() == x.tie(); }
bool operator!= (const ProcessMidiMessageReport& x) const { return ! operator== (x); }
bool operator== (const ProcessMidiMessageReport& x) const;
bool operator!= (const ProcessMidiMessageReport& x) const;
};
/** See the MIDI-CI specification.
@ -717,13 +632,10 @@ namespace Message
*/
struct ProcessEndMidiMessageReport
{
auto tie() const
{
return std::tuple<>();
}
auto tie() const;
bool operator== (const ProcessEndMidiMessageReport& x) const { return tie() == x.tie(); }
bool operator!= (const ProcessEndMidiMessageReport& x) const { return ! operator== (x); }
bool operator== (const ProcessEndMidiMessageReport& x) const;
bool operator!= (const ProcessEndMidiMessageReport& x) const;
};
/**
@ -773,13 +685,8 @@ namespace Message
Header header;
Body body;
bool operator== (const Parsed& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.header, x.body); };
return tie (*this) == tie (other);
}
bool operator!= (const Parsed& other) const { return ! operator== (other); }
bool operator== (const Parsed& other) const;
bool operator!= (const Parsed& other) const;
};
}

View file

@ -0,0 +1,48 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::midi_ci
{
auto ProfileAtAddress::tie() const { return std::tie (profile, address); }
bool ProfileAtAddress::operator== (const ProfileAtAddress& x) const { return tie() == x.tie(); }
bool ProfileAtAddress::operator!= (const ProfileAtAddress& x) const { return tie() != x.tie(); }
bool ProfileAtAddress::operator< (const ProfileAtAddress& x) const { return tie() < x.tie(); }
bool ProfileAtAddress::operator<= (const ProfileAtAddress& x) const { return tie() <= x.tie(); }
bool ProfileAtAddress::operator> (const ProfileAtAddress& x) const { return tie() > x.tie(); }
bool ProfileAtAddress::operator>= (const ProfileAtAddress& x) const { return tie() >= x.tie(); }
} // namespace juce::midi_ci

View file

@ -42,19 +42,19 @@ namespace juce::midi_ci
*/
class ProfileAtAddress
{
auto tie() const { return std::tie (profile, address); }
auto tie() const;
public:
Profile profile; ///< The id of a MIDI-CI profile
ChannelAddress address; ///< A group and channel
bool operator== (const ProfileAtAddress& x) const { return tie() == x.tie(); }
bool operator!= (const ProfileAtAddress& x) const { return tie() != x.tie(); }
bool operator== (const ProfileAtAddress& x) const;
bool operator!= (const ProfileAtAddress& x) const;
bool operator< (const ProfileAtAddress& x) const { return tie() < x.tie(); }
bool operator<= (const ProfileAtAddress& x) const { return tie() <= x.tie(); }
bool operator> (const ProfileAtAddress& x) const { return tie() > x.tie(); }
bool operator>= (const ProfileAtAddress& x) const { return tie() >= x.tie(); }
bool operator< (const ProfileAtAddress& x) const;
bool operator<= (const ProfileAtAddress& x) const;
bool operator> (const ProfileAtAddress& x) const;
bool operator>= (const ProfileAtAddress& x) const;
};
} // namespace juce::midi_ci

View file

@ -420,4 +420,26 @@ PropertyHost::SubscriptionToken PropertyHost::findUnusedSubscribeId (const std::
return ! used.empty() ? SubscriptionToken { std::prev (used.end())->first.uid + 1 } : SubscriptionToken { 0 };
}
auto RequestKey::tie() const
{
return std::tuple (m, v);
}
bool RequestKey::operator== (const RequestKey& other) const
{
return tie() == other.tie();
}
/** Inequality operator. */
bool RequestKey::operator!= (const RequestKey& other) const
{
return tie() != other.tie();
}
/** Less-than operator. */
bool RequestKey::operator< (const RequestKey& other) const
{
return tie() < other.tie();
}
} // namespace juce::midi_ci

View file

@ -42,7 +42,7 @@ namespace juce::midi_ci
*/
class RequestKey
{
auto tie() const { return std::tuple (m, v); }
auto tie() const;
public:
/** Constructor. */
@ -55,13 +55,13 @@ public:
Token64 getKey() const { return v; }
/** Equality operator. */
bool operator== (const RequestKey& other) const { return tie() == other.tie(); }
bool operator== (const RequestKey& other) const;
/** Inequality operator. */
bool operator!= (const RequestKey& other) const { return tie() != other.tie(); }
bool operator!= (const RequestKey& other) const;
/** Less-than operator. */
bool operator< (const RequestKey& other) const { return tie() < other.tie(); }
bool operator< (const RequestKey& other) const;
private:
MUID m;

View file

@ -0,0 +1,44 @@
/*
==============================================================================
This file is part of the JUCE framework.
Copyright (c) Raw Material Software Limited
JUCE is an open source framework subject to commercial or open source
licensing.
By downloading, installing, or using the JUCE framework, or combining the
JUCE framework with any other source code, object code, content or any other
copyrightable work, you agree to the terms of the JUCE End User Licence
Agreement, and all incorporated terms including the JUCE Privacy Policy and
the JUCE Website Terms of Service, as applicable, which will bind you. If you
do not agree to the terms of these agreements, we will not license the JUCE
framework to you, and you must discontinue the installation or download
process and cease use of the JUCE framework.
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
Or:
You may also use this code under the terms of the AGPLv3:
https://www.gnu.org/licenses/agpl-3.0.en.html
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
==============================================================================
*/
namespace juce::midi_ci
{
bool Subscription::operator== (const Subscription& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.subscribeId, x.resource); };
return tie (*this) == tie (other);
}
} // namespace juce::midi_ci

View file

@ -51,12 +51,7 @@ struct Subscription
bool operator> (const Subscription& other) const { return subscribeId > other.subscribeId; }
bool operator>= (const Subscription& other) const { return subscribeId >= other.subscribeId; }
bool operator== (const Subscription& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.subscribeId, x.resource); };
return tie (*this) == tie (other);
}
bool operator== (const Subscription& other) const;
bool operator!= (const Subscription& other) const { return ! operator== (other); }
};

View file

@ -502,6 +502,26 @@ bool SubscriptionManager::sendPendingMessages()
return pimpl->sendPendingMessages();
}
auto SubscriptionKey::tie() const
{
return std::tie (m, v);
}
bool SubscriptionKey::operator== (const SubscriptionKey& other) const
{
return tie() == other.tie();
}
bool SubscriptionKey::operator!= (const SubscriptionKey& other) const
{
return tie() != other.tie();
}
bool SubscriptionKey::operator< (const SubscriptionKey& other) const
{
return tie() < other.tie();
}
//==============================================================================
//==============================================================================
#if JUCE_UNIT_TESTS

View file

@ -42,7 +42,7 @@ namespace juce::midi_ci
*/
class SubscriptionKey
{
auto tie() const { return std::tuple (m, v); }
auto tie() const;
public:
/** Constructor */
@ -58,13 +58,13 @@ public:
Token64 getKey() const { return v; }
/** Equality operator. */
bool operator== (const SubscriptionKey& other) const { return tie() == other.tie(); }
bool operator== (const SubscriptionKey& other) const;
/** Inequality operator. */
bool operator!= (const SubscriptionKey& other) const { return tie() != other.tie(); }
bool operator!= (const SubscriptionKey& other) const;
/** Less-than operator. */
bool operator< (const SubscriptionKey& other) const { return tie() < other.tie(); }
bool operator< (const SubscriptionKey& other) const;
private:
MUID m = MUID::getBroadcast();

View file

@ -159,4 +159,19 @@ void PropertyDataMessageChunker::populateStorage() const
storage->resize (storage->size() + numBytesRead - room);
}
auto PropertyDataMessageChunker::tie() const
{
return std::tie (storage, body, source, dest, chunkSize, messageKind, requestId);
}
bool PropertyDataMessageChunker::operator== (const PropertyDataMessageChunker& other) const noexcept
{
return tie() == other.tie();
}
bool PropertyDataMessageChunker::operator!= (const PropertyDataMessageChunker& other) const noexcept
{
return tie() != other.tie();
}
} // namespace juce::midi_ci::detail

View file

@ -43,7 +43,7 @@ namespace juce::midi_ci::detail
*/
class PropertyDataMessageChunker
{
auto tie() const { return std::tie (storage, body, source, dest, chunkSize, messageKind, requestId); }
auto tie() const;
public:
/* Constructs a chunker instance.
@ -79,8 +79,8 @@ public:
PropertyDataMessageChunker& operator++() noexcept;
/* Checks whether the state of this chunker matches the state of another chunker, enabling foreach usage. */
bool operator== (const PropertyDataMessageChunker& other) const noexcept { return tie() == other.tie(); }
bool operator!= (const PropertyDataMessageChunker& other) const noexcept { return tie() != other.tie(); }
bool operator== (const PropertyDataMessageChunker& other) const noexcept;
bool operator!= (const PropertyDataMessageChunker& other) const noexcept;
/* Returns a span over the valid bytes in the output buffer. */
Span<const std::byte> operator*() const noexcept;

View file

@ -53,13 +53,17 @@
#include <juce_midi_ci/detail/juce_CIPropertyDataMessageChunker.cpp>
#include <juce_midi_ci/detail/juce_CIResponder.cpp>
#include <juce_midi_ci/ci/juce_CIChannelAddress.cpp>
#include <juce_midi_ci/ci/juce_CIDevice.cpp>
#include <juce_midi_ci/ci/juce_CIEncodings.cpp>
#include <juce_midi_ci/ci/juce_CIMessages.cpp>
#include <juce_midi_ci/ci/juce_CIParser.cpp>
#include <juce_midi_ci/ci/juce_CIProfileAtAddress.cpp>
#include <juce_midi_ci/ci/juce_CIProfileHost.cpp>
#include <juce_midi_ci/ci/juce_CIProfileStates.cpp>
#include <juce_midi_ci/ci/juce_CIPropertyDelegate.cpp>
#include <juce_midi_ci/ci/juce_CIPropertyExchangeCache.cpp>
#include <juce_midi_ci/ci/juce_CIPropertyHost.cpp>
#include <juce_midi_ci/ci/juce_CIResponderOutput.cpp>
#include <juce_midi_ci/ci/juce_CISubscription.cpp>
#include <juce_midi_ci/ci/juce_CISubscriptionManager.cpp>