ARA ContentReader doesn't seem to display notes in Studio One

I’m not sure if this is a JUCE problem or an ARA problem, but outside of JUCE forum I can hardly think of a place to ask.

We made our own vocal synthesis plugin that has its own MIDI-like sequencer interface (and the reason that we need to build the wheel in the first place is because MIDI has almost non-existent support for lyrics). What we’re trying to achieve now is to send the notes from our plugin back into the DAW for visualization, very much like what Studio One does for Melodyne.

After researching a bit into the documentation, we found out this way –

  1. Under ARADocumentControllerSpecialisation, override three methods doIsAudioModificationContentAvailable, doGetAudioModificationContentGrade, doCreateAudioModificationContentReader.
  2. Based our own note reader class on ARA::PlugIn::ContentReader, implement getEventCount(), getDataForEvent(), and let doCreateAudioModificationContentReader return a new instance of our note reader.

By this point, we succeeded in reading MIDI notes out of our plugin in Reaper. However, in Studio One it’s behaving really weird. Initially we don’t see anything when we attach our plugin, but after loading Melodyne onto the audio clip, we can see two separate MIDI readouts appearing on the clip (one from Melodyne and another from ours). After disabling Melodyne, our own MIDI readout remains there, as if everything’s functioning just as expected. We know for sure that’s coming from our plugin because it refreshes when we call notifyContentChanged().

I can think of two possibilities. Either we missed something when setting up the ContentReader, or the MIDI visualization feature is hardcoded in Studio One to only work with Melodyne (hopefully not)? Looks like ContentReader is not a very commonly used feature among ARA developers and resources are scarce online. I’d be very grateful if anyone can share their experience, perhaps shed a little light of hope that we aren’t going into a dead end.