Plugin Development Dorico

First I wish to congratulate you all on the latest release of Dorico, I’ve started using Dorico since 3.5, and since 4.0 it has become my defacto way writing music replacing previously my DAW workflows, as well as all my prior explorations with Muse Score, and other notation apps. Your interface is incredibly intuitive and simply put I can be 10x more productive in your app than anything else.

A little about me, I am primarily a developer / technologist, and secondarily a hobbyist composer (since COVID lockdowns). I’ve been studying music non-stop for nearly 4 years now and I know I could easy do another 40 and still learn more.

From my experience as a developer, I know notation software can do better. Take a look at simple things in IDEs like intellisense that make “intelligent” suggestions about the next thing to type in, or the latest technologies around coding assistants that use AI to suggest dozens of lines of code.

I’d love to have a similar feature in Dorico. Rather than memorise all of the rules / guides around writing music, harmony, melody, etc… I’d love to have an intellisense style pop up that offers suggestions depending on the emotion you’re trying to hit.

I know I can write one and wouldn’t ask Steinberg to do it, but sadly Dorico offers no plugin system.

It looks like I could do this in MuseScore, particularly given it’s open source, but I would much rather invest my time and energy into Dorico if I had the opportunity .

Cutting to the chase, are Dorico plugins something on the horizon in the next year? Or should I take my energy over to MuseScore and try my luck with that instead?

1 Like

Welcome to the forum, @Sudoku_Sleuth. We definitely plan to build out an API for script plug-in development in Dorico in future, but I’m afraid I can’t provide any specific indication of when this will come.

I’m intrigued as to what “rules” you would use in your algorithms, exactly, to suggest what the next note in a melody, or chord in a harmony, might be. (If I’ve understood correctly.)

Such a thing might be possible, but it would surely require an enormous amount of code, or rather machine learning after ingesting huge swathes of repertoire?

I was certainly thinking of machine learning.
Huge is subjective here.
If I focus initially on orchestral music, and divide the behaviour between melody, harmony, texture, and rhythm, I suspect 100 scores would be plenty to get decent output.

Only one way to find out of course…

Thank you for the prompt response! I wasn’t expecting anything that quick.
I’ll hold tight and look forward to hearing something soon!

And you could program a Machine-learning script in MuseScore?

100 scores is barely anything.
Even if we were to consider machine learning, it will never understand why in some sections in scores there are rules that are violated in a controlled way. It won’t have the human printmark.
Using it to fill the music for you seems to tell you don’t know what to do with your own music. That’s not learning, it’s an AI doing music for you.

What do you think learning composition is about?
I’m all for plug-ins, but this idea to compare making music with a vs code IDE with intellisense attribute is ridiculous. IDE intellisense has a guess on what’s next, with autocompletion, you still have to verify what you wrote. In addition, it helps on syn tax errors. Music however isn’t this linear, there are not only many syntaxes but also millions of way to complete a melody, harmony, etc. And sometimes they’re dependent on each other in other to make sense.
Music isn’t just click a button and it’s done. (Yes, I know AIVA exists)

4 Likes

While I largely concur with what the others said, I do also have a good deal of experience of what is possible with Dorico’s existing scripting capabilities. Can you give a concrete example of what you would like to do?

I read this thread right after most of this one. The latter leads me to think MuseScore is pursuing exactly the AI-composition angle you are proposing.

I believe you’re taking my intellisense / autocomplete literally. You shouldn’t as it was intended as a reference to others that have never come across similar features.

Intellisense / Github CoPilot do not fundamentally replace the developer, you still require a material degree of knowledge to be able to develop anything of value / substance. What they allow you to do is to reduce the cognitive load on the developer, and in a CoPilot and similar sense, make suggestions based on the “millions” of open-source software out there around the many possibilities that are out there.

Music has a lot of similarities here and software can make helpful suggestions that a composer could ‘audition’ before committing to a path or choosing their own, and certainly the more experienced a composer is the less likely they are to need to audition a suggestion, but it would certainly offer suggestions that they may have not considered previously.

Thank you.

I’d like to be able to read the current score, and whilst in note input put up a ‘pop over’ with suggestions that the composer could take.

Have a look at AutoCompletion here in IDEs around what these popovers would look like, [Use IntelliSense for quick information & completion - Visual Studio (Windows) | Microsoft Learn] (sorry I can’t link to it for some reason)

Like what you see there, the popovers would need to be a decent size not only to offer a line / motif / rhythm, but also a few sentences as to why it made this suggestion.

The popovers need to be updated as the composer continues to input notes, so as the Score’s state changes, the suggestions need to be revised based on the direction the composer is taking it, as such the script can’t just read the Score once, it needs to be continously notified of changes to revise it’s suggestions.

What you are – still rather vaguely – describing, is not possible in Dorico right now (and probably also not in at least the short and mid term), first and foremost because there is virtually no access to run-time status information about the application or a given Project.

But even if Dorico’s scripting API was more developed than it currently is, I think what you are asking for is way out of the scope of conventional scripting use cases (speaking as someone who also wrote a good deal of Sibelius ManuScript plugins, back in the day), so I’m skeptical if one of the other scorewriters, with their comparably feature-rich scripting solutions, would be of any use for what you want to do.

1 Like

This autocomplete idea reminds me a little of the Ideas floating window in Sibelius. Some kind of “stock phrase” library that the program could draw suggestions from depending on context. I imagine implementing that would be a heavy lift.

OTOH I know of some computer-assisted composition programs that have been around for years, that can export midi. Do any of the new ones, like MusicLM, output midi or xml?