Can you supply some more information please:
- Which Logic version are you testing?
- On which platform, Intel/Arm?
- If Arm, are you running under Rosetta?
- Are you building AU or AUv3?
- Which directory are you using to store the intermediate MIDI file?
- Have you enabled macOS security technologies such as entitlements, sandboxing, or hardened runtime?
I tested the following plugin project as an AU on Logic 11.0.1 Arm, macOS 15.0.1. This is using the AudioPlugin CMake example, so it doesn’t have any extra entitlements/sandboxing. The plugin is able to drop a MIDI snippet into the timeline as expected:
class AudioPluginAudioProcessorEditor final : public juce::AudioProcessorEditor,
public juce::DragAndDropContainer
{
public:
explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&);
void paint (juce::Graphics& g) override
{
g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId));
g.setColour (juce::Colours::white);
g.setFont (15.0f);
g.drawFittedText (juce::SystemStats::getJUCEVersion(), getLocalBounds(), juce::Justification::centred, 1);
}
void mouseDrag (const juce::MouseEvent&) override
{
const auto f = juce::File::getSpecialLocation (juce::File::userDesktopDirectory).getChildFile ("drag.midi");
{
constexpr auto ticks = 96;
juce::MidiFile midiFile;
midiFile.setTicksPerQuarterNote (ticks);
juce::MidiMessageSequence sequence;
sequence.addEvent (juce::MidiMessage::noteOn (1, 64, 0.5f).withTimeStamp (0));
sequence.addEvent (juce::MidiMessage::noteOff (1, 64, 0.5f).withTimeStamp (ticks));
midiFile.addTrack (sequence);
juce::FileOutputStream stream { f };
stream.setPosition (0);
stream.truncate();
midiFile.writeTo (stream);
}
performExternalDragDropOfFiles ({ f.getFullPathName() }, false, this, {});
}
private:
AudioPluginAudioProcessor& processorRef;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginAudioProcessorEditor)
};

