Writing automations to make Cantai produce rehearsal recording using Dorico

Hi all,

I’ve used Cantai successfully using Sibelius to produce decent sounding rehearsal recordings. I’m working on repeating the exercise for Dorico now. I’m writing to get connected with people who’ve worked with Dorico’s external automation interfaces, and to show what’s possible when you add Claude Code to the mix.

I own both Dorico and Sibelius, and I’m a software developer, and I’ve been using Claude Code on a project to teach Claude to process scores using first Sibelius, and now I’ve started working on Dorico. For perspective on this work, keep in mind that I started three weeks ago.

I’m assistant chorus director for a show, and I was handed a bunch of PDFs and Sibelius files to process for making practice recordings. The recordings are derived from the PDFs and Sibelius files, and for each song include the following permutations:

  1. A full mix of the song, using Cantai for the singing. (I was lucky: the show’s singing is in English and Spanish.)
  2. For each singing part in the song, a recording of just its voice alone
  3. For each singing part, produce a mixdown where that part is amplified by 10db relative to the other parts, so people can hear their own part prominently with the other parts in the background.

Using Claude Code, the Python programming language, and Sibelius’ ManuScript automation language, and using Halbestunde to scan (mostly badly) the PDFs to musicXML, I got a very good result.

One of the side effects of the work is a text based interface for driving Sibelius via Claude. I can type things like: “For the staves in the score, split each individual voice into a separate line.” And Claude will do it, writing scripts on the way as needed to process the musicXML to make the changes, when it thinks that’s easier than driving Sibelius directly.

I’m now using Claude to try to provide the same capabilities in Dorico. (And probably MuseScore soon.)

I’ll be back when I’ve validated more of the Dorico workflow. Claude worked on it overnight and made progress, but it’s warning me about the undocumented automation and scripting interfaces - it had to connect to Dorico to ask it how to call its methods.

This is very interesting work. The ability to have one voice or instrument stand out from the rest would be great!

Your approach with AI is interesting. I just have to ask, though, is the process of AI “interrogating” a program like Dorico considered reverse engineering to some degree? If so, would that violate the user agreement with the software provider?

I’m not judging or saying that it would. I’m just fascinated by your approach with AI. Since there are no serious guardrails for AI at this time, we are left to do our best with it and still remain within the scope of our agreements with other app suppliers. I’m not sure, though, that we have the ability to validate that Claude or any other AI will not attempt to reverse engineer any particular software. Thoughts?

I don’t think it will be possible to achieve this kind of “rehearsal recording” with Dorico’s current remote control API, unfortunately. It’s something we’d like to make possible in future, but we’ll probably work on it as a built-in feature rather than relying on the remote control API to handle it.