Beginner scoping out plugin feasibility

Never touched JUCE or C++, but I want to make an app. My plugin is focused on chord exploration and sequence generation.

From what I’ve read I think this functionality should be possible but I want to get confirmation before putting in the time.

My plugin will:

  1. Let user click button in GUI and generate midi chord. That chord should a) play audio and/or b) be able to be output chord to the pattern window in DAW.
  2. Act as a layer interfacing with sampler/synth such that, for instance, a user may load their favorite kontakt plugin or serum preset, route through my chord plugin and hear random chords generated from my plugin through kontakt/serum AND ALSO let it be output to pattern window in DAW
  3. Map chords to midi keyboard such that a user may play middle C/D etc and it triggers an arbitrary chord via my plugin. Again, the resulting chord should be able to be output to pattern window in DAW.

These should be possible, yes?

The standard plugin formats do not have the ability to insert new data into the DAW’s timeline. The plugins can output the MIDI or audio and if the DAW’s routing allows it, those can be recorded in real time. But it’s not possible to do things like tell the DAW to insert new MIDI notes immediately into the timeline/sequence. (There may be DAW-specific extensions and APIs available to do such things, but they can be tricky to access, especially from Juce-based plugins.)

Thanks. It’s all a little fuzzy how this works so I’ll start with this clarifying question:

What is the technical flow when I record from my midi keyboard:

  1. Keyboard -> sends midi to daw -> daw logs midi -> daw sends midi to serum to produce audio
  2. Keyboard -> sends midi to serum -> serum sends midi to daw and also produces sound
  3. something else?

In a DAW, the plugins typically never receive or send MIDI using the MIDI ports directly, instead the DAW application manages all that, so what is going on is closer to the option 1.