#pragma once #include #include #include "McpServer.h" class PluginBridgeProcessor : public juce::AudioProcessor { public: PluginBridgeProcessor(); ~PluginBridgeProcessor() override; // AudioProcessor interface void prepareToPlay(double sampleRate, int samplesPerBlock) override; void releaseResources() override; void processBlock(juce::AudioBuffer&, juce::MidiBuffer&) override; // Editor juce::AudioProcessorEditor* createEditor() override; bool hasEditor() const override { return true; } // Plugin identity const juce::String getName() const override { return "PluginBridge"; } bool acceptsMidi() const override { return true; } bool producesMidi() const override { return true; } double getTailLengthSeconds() const override { return 0.0; } // Programs (unused) int getNumPrograms() override { return 1; } int getCurrentProgram() override { return 0; } void setCurrentProgram(int) override {} const juce::String getProgramName(int) override { return {}; } void changeProgramName(int, const juce::String&) override {} // State void getStateInformation(juce::MemoryBlock& destData) override; void setStateInformation(const void* data, int sizeInBytes) override; // MCP server access (for editor status display) bool isMcpServerRunning() const; int getMcpServerPort() const; private: McpServer mcpServer; static constexpr int kDefaultMcpPort = 16620; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginBridgeProcessor) };