| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -1490,12 +1490,14 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return e;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    static Steinberg::Vst::Event createSysExEvent (const MidiMessage& msg, const uint8* midiEventData) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    static Steinberg::Vst::Event createSysExEvent (const MidiMessage& msg, const uint8* data) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        jassert (msg.isSysEx());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Steinberg::Vst::Event e{};
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        e.type          = Steinberg::Vst::Event::kDataEvent;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        e.data.bytes    = midiEventData + 1;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        e.data.size     = (uint32) msg.getSysExDataSize();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        e.data.bytes    = data;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        e.data.size     = (uint32) msg.getRawDataSize();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        e.data.type     = Steinberg::Vst::DataEvent::kMidiSysEx;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return e;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1649,6 +1651,28 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    static Optional<MidiMessage> toMidiMessage (const Steinberg::Vst::DataEvent& e)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (e.type != Steinberg::Vst::DataEvent::kMidiSysEx || e.size < 2)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // Only sysex data messages can be converted to MIDI
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            jassertfalse;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return {};
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const auto header = e.bytes[0];
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const auto footer = e.bytes[e.size - 1];
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (header != 0xf0 || footer != 0xf7)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // The sysex header/footer bytes are missing
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            jassertfalse;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return {};
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return MidiMessage::createSysExMessage (e.bytes + 1, (int) e.size - 2);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    static Optional<MidiMessage> toMidiMessage (const Steinberg::Vst::Event& e)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        switch (e.type)
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -1669,7 +1693,7 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                                      (Steinberg::uint8) denormaliseToMidiValue (e.polyPressure.pressure));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case Steinberg::Vst::Event::kDataEvent:
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                return MidiMessage::createSysExMessage (e.data.bytes, (int) e.data.size);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                return toMidiMessage (e.data);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case Steinberg::Vst::Event::kLegacyMIDICCOutEvent:
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                return toMidiMessage (e.midiCCOut);
 | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |