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

MIDI: Add support for MIDI 2.0 I/O using Universal MIDI Packets

Includes support for communication with USB and Bluetooth devices, as well as virtual devices.
This commit is contained in:
reuk 2025-04-01 20:32:54 +01:00
parent 3636f2c666
commit ba7593df26
No known key found for this signature in database
65 changed files with 16609 additions and 5301 deletions

View file

@ -87,7 +87,8 @@ struct MidiDeviceListEntry final : ReferenceCountedObject
class MidiDemo final : public Component,
private MidiKeyboardState::Listener,
private MidiInputCallback,
private AsyncUpdater
private AsyncUpdater,
private ump::EndpointsListener
{
public:
//==============================================================================
@ -134,13 +135,16 @@ public:
setSize (732, 520);
updateDeviceLists();
updateVirtualPorts();
if (virtualIn != nullptr)
virtualIn->start();
ump::Endpoints::getInstance()->setVirtualMidiBytestreamServiceActive (true);
ump::Endpoints::getInstance()->addListener (*this);
}
~MidiDemo() override
{
ump::Endpoints::getInstance()->removeListener (*this);
midiInputs .clear();
midiOutputs.clear();
keyboardState.removeListener (this);
@ -478,6 +482,34 @@ private:
updateDeviceList (isInput);
}
void endpointsChanged() override
{
updateDeviceLists();
}
void virtualMidiServiceActiveChanged() override
{
if (ump::Endpoints::getInstance()->isVirtualMidiBytestreamServiceActive())
{
if (virtualIn == nullptr || virtualOut == nullptr)
updateVirtualPorts();
}
else
{
virtualIn = nullptr;
virtualOut = nullptr;
}
}
void updateVirtualPorts()
{
virtualIn = MidiInput::createNewDevice ("MidiDemo Virtual In", this);
virtualOut = MidiOutput::createNewDevice ("MidiDemo Virtual Out");
if (virtualIn != nullptr)
virtualIn->start();
}
//==============================================================================
Label midiInputLabel { "Midi Input Label", "MIDI Input:" };
Label midiOutputLabel { "Midi Output Label", "MIDI Output:" };
@ -494,13 +526,8 @@ private:
CriticalSection midiMonitorLock;
Array<MidiMessage> incomingMessages;
std::unique_ptr<MidiInput> virtualIn = MidiInput::createNewDevice ("MidiDemo Virtual In", this);
std::unique_ptr<MidiOutput> virtualOut = MidiOutput::createNewDevice ("MidiDemo Virtual Out");
MidiDeviceListConnection connection = MidiDeviceListConnection::make ([this]
{
updateDeviceLists();
});
std::unique_ptr<MidiInput> virtualIn;
std::unique_ptr<MidiOutput> virtualOut;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiDemo)

View file

@ -110,7 +110,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPMidi1ToMidi2DefaultTranslator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPMidi1ToMidi2DefaultTranslator.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPProtocols.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPReceiver.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPStringUtils.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPStringUtils.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPUtils.cpp"
@ -199,11 +200,33 @@ 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.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.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPInput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPInput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPIOHelpers.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualInput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualInput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualOutput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualOutput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPOutput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPOutput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPSession.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPSession.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPVirtualEndpoint.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPVirtualEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiDeviceListConnectionBroadcaster.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiDevices.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_ScheduledEventThread.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_WaitFreeListeners.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_WaitFreeListeners.h"
"../../../../../modules/juce_audio_devices/native/oboe/include/oboe/AudioStream.h"
"../../../../../modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBase.h"
"../../../../../modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBuilder.h"
@ -347,6 +370,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/CMakeLists.txt"
"../../../../../modules/juce_audio_devices/native/oboe/README.md"
"../../../../../modules/juce_audio_devices/native/juce_ALSA_linux.cpp"
"../../../../../modules/juce_audio_devices/native/juce_ALSA_weak_linux.h"
"../../../../../modules/juce_audio_devices/native/juce_ASIO_windows.cpp"
"../../../../../modules/juce_audio_devices/native/juce_Audio_android.cpp"
"../../../../../modules/juce_audio_devices/native/juce_Audio_ios.cpp"
@ -2772,7 +2796,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPMidi1ToMidi2DefaultTranslator.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPMidi1ToMidi2DefaultTranslator.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPProtocols.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPReceiver.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPStringUtils.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPStringUtils.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.cpp"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.h"
"../../../../../modules/juce_audio_basics/midi/ump/juce_UMPUtils.cpp"
@ -2861,11 +2886,33 @@ 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.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.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPEndpoints.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPInput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPInput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPIOHelpers.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualInput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualInput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualOutput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPLegacyVirtualOutput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPOutput.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPOutput.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPSession.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPSession.h"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPVirtualEndpoint.cpp"
"../../../../../modules/juce_audio_devices/midi_io/ump/juce_UMPVirtualEndpoint.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiDeviceListConnectionBroadcaster.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiDevices.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_ScheduledEventThread.h"
"../../../../../modules/juce_audio_devices/midi_io/juce_WaitFreeListeners.cpp"
"../../../../../modules/juce_audio_devices/midi_io/juce_WaitFreeListeners.h"
"../../../../../modules/juce_audio_devices/native/oboe/include/oboe/AudioStream.h"
"../../../../../modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBase.h"
"../../../../../modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBuilder.h"
@ -3009,6 +3056,7 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/CMakeLists.txt"
"../../../../../modules/juce_audio_devices/native/oboe/README.md"
"../../../../../modules/juce_audio_devices/native/juce_ALSA_linux.cpp"
"../../../../../modules/juce_audio_devices/native/juce_ALSA_weak_linux.h"
"../../../../../modules/juce_audio_devices/native/juce_ASIO_windows.cpp"
"../../../../../modules/juce_audio_devices/native/juce_Audio_android.cpp"
"../../../../../modules/juce_audio_devices/native/juce_Audio_ios.cpp"

View file

@ -213,6 +213,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToMidi2DefaultTranslator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -336,6 +339,30 @@
<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_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPIOHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDeviceListConnectionBroadcaster.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -345,6 +372,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\aaudio\AAudioLoader.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3346,7 +3376,7 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToBytestreamTranslator.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToMidi2DefaultTranslator.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPProtocols.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPReceiver.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPUtils.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPView.h"/>
@ -3393,8 +3423,21 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_AudioIODevice.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_AudioIODeviceType.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SystemAudioVolume.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPDisconnectionListener.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoint.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDevices.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_ScheduledEventThread.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStreamBase.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStreamBuilder.h"/>
@ -3471,6 +3514,7 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\EngineOpenSLES.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\OpenSLESUtilities.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\OutputMixerOpenSLES.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_ALSA_weak_linux.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_Audio_ios.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_HighPerformanceAudioHelpers_android.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\sources\juce_AudioSourcePlayer.h"/>

View file

@ -68,6 +68,9 @@
<Filter Include="JUCE Modules\juce_audio_devices\audio_io">
<UniqueIdentifier>{BF23FC10-1D57-2A9B-706F-6DD8A7B593D4}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_audio_devices\midi_io\ump">
<UniqueIdentifier>{386862D5-4DCC-A4B3-5642-60A201E303EF}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_audio_devices\midi_io">
<UniqueIdentifier>{092EFC17-7C95-7E04-0ACA-0D61A462EE81}</UniqueIdentifier>
</Filter>
@ -895,6 +898,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToMidi2DefaultTranslator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -1021,6 +1027,30 @@
<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_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPIOHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDeviceListConnectionBroadcaster.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClCompile>
@ -1030,6 +1060,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\aaudio\AAudioLoader.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\aaudio</Filter>
</ClCompile>
@ -4311,7 +4344,7 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPProtocols.h">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPReceiver.h">
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.h">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.h">
@ -4452,12 +4485,51 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SystemAudioVolume.h">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPDisconnectionListener.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoint.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDevices.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_ScheduledEventThread.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStream.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\include\oboe</Filter>
</ClInclude>
@ -4686,6 +4758,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\OutputMixerOpenSLES.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\opensles</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_ALSA_weak_linux.h">
<Filter>JUCE Modules\juce_audio_devices\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_Audio_ios.h">
<Filter>JUCE Modules\juce_audio_devices\native</Filter>
</ClInclude>

View file

@ -213,6 +213,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToMidi2DefaultTranslator.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -336,6 +339,30 @@
<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_UMPEndpoints.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPIOHelpers.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDeviceListConnectionBroadcaster.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -345,6 +372,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\aaudio\AAudioLoader.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3346,7 +3376,7 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToBytestreamTranslator.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToMidi2DefaultTranslator.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPProtocols.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPReceiver.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPUtils.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPView.h"/>
@ -3393,8 +3423,21 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_AudioIODevice.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_AudioIODeviceType.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SystemAudioVolume.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPDisconnectionListener.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoint.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDevices.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_ScheduledEventThread.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStreamBase.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStreamBuilder.h"/>
@ -3471,6 +3514,7 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\EngineOpenSLES.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\OpenSLESUtilities.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\OutputMixerOpenSLES.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_ALSA_weak_linux.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_Audio_ios.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_HighPerformanceAudioHelpers_android.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\sources\juce_AudioSourcePlayer.h"/>

View file

@ -68,6 +68,9 @@
<Filter Include="JUCE Modules\juce_audio_devices\audio_io">
<UniqueIdentifier>{BF23FC10-1D57-2A9B-706F-6DD8A7B593D4}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_audio_devices\midi_io\ump">
<UniqueIdentifier>{386862D5-4DCC-A4B3-5642-60A201E303EF}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_audio_devices\midi_io">
<UniqueIdentifier>{092EFC17-7C95-7E04-0ACA-0D61A462EE81}</UniqueIdentifier>
</Filter>
@ -895,6 +898,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPMidi1ToMidi2DefaultTranslator.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.cpp">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClCompile>
@ -1021,6 +1027,30 @@
<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_UMPEndpoints.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPIOHelpers.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDeviceListConnectionBroadcaster.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClCompile>
@ -1030,6 +1060,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.cpp">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\aaudio\AAudioLoader.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\aaudio</Filter>
</ClCompile>
@ -4311,7 +4344,7 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPProtocols.h">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPReceiver.h">
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPStringUtils.h">
<Filter>JUCE Modules\juce_audio_basics\midi\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\midi\ump\juce_UMPSysEx7.h">
@ -4452,12 +4485,51 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\audio_io\juce_SystemAudioVolume.h">
<Filter>JUCE Modules\juce_audio_devices\audio_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPBlock.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPDisconnectionListener.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoint.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpointId.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPEndpoints.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPInput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualInput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPLegacyVirtualOutput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPOutput.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPSession.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\ump\juce_UMPVirtualEndpoint.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io\ump</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiDevices.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_ScheduledEventThread.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\midi_io\juce_WaitFreeListeners.h">
<Filter>JUCE Modules\juce_audio_devices\midi_io</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\include\oboe\AudioStream.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\include\oboe</Filter>
</ClInclude>
@ -4686,6 +4758,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\opensles\OutputMixerOpenSLES.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\opensles</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_ALSA_weak_linux.h">
<Filter>JUCE Modules\juce_audio_devices\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\juce_Audio_ios.h">
<Filter>JUCE Modules\juce_audio_devices\native</Filter>
</ClInclude>