Recent Comments |
Categories |
Archives |
Tags |
Synchronizing Dorico and Cubase? (Tuesday 20 June, 2023)
Sometimes programs do not (yet) work together as wished for in your production workflow. This is the case with Dorico 5 and Cubase 12, the music notation program and digital audio workstation (DAW) both from Steinberg. I use Cubase as the main production platform for producing my songs. When working with Midi, I sometimes prefer to use a score editor instead of the Cubase Midi key editor because I find it more intuitive to notate music than to ‘draw’ lines in the key editor. Moreover, whenever editing several instruments simultaneously, a scoring program is superior since it layouts the instruments on different staffs. I tried the Cubase score editor many times in the past but never found it intuitive to work with. I have used Sibelius for a while until Steinberg released Dorico and never looked back.
Image: the Cubase key-editor (left) shows the parts for two horns (which are indistinguishable in this view) together with the key-velocity, CC1 (modulation) and CC11 (expression) controller lanes. The Cubase score-editor (middle) already gives a better view of the two horn parts. This score can be largely improved but this is how it shows without further optimization. The Dorico score (right) also without any further optimization of the layout.
What is the problem?
Unlike Steinberg Wavelab and Spectralayers, Dorico is not (yet) integrated in Cubase. This makes certain applications troublesome.
To explain: I am currently working on a song with Daphne Reijnoudt (great vocalist and instrumentalist) where we have recordings of the vocals and Hammond (that is, audio files). In addition, I have Midi tracks for the drums (superior drummer) and bass guitar (EZbass). The aim is to add an orchestral part. Although there are multiple options to do this in Cubase, my preferred way is to compose these parts in Dorico. Ideally, if Cubase and Dorico would be integrated, you would add several Midi tracks (woodwinds, horns, strings, etc) to Cubase and then edit these tracks with Dorico. Unfortunately, this is not yet possible. It is possible to export the Cubase Midi tracks (drums and bass guitar) and then import these Midi tracks into Dorico. In general this will work without problems but in some cases further tweaking is required to improve the notation or to have it sounding like in Cubase (if that is what you need). Once the tracks are imported you can compose the parts for the other instruments, export the Midi from Dorico, and import in Cubase. Done. However, one problem are the missing audio tracks (vocals and Hammond) in Dorico. Consequently, you can not hear your Dorico composition in the context of the audio files that you have in Cubase. Therefore, a nice sounding composition in Dorico may not work very well rhythmically or harmonically with the vocals and Hammond once exported back into Cubase. Thus, in practice you would have to import/export MIDI tracks back and forth until your composition is to your liking. A real workflow breaker.
What is the solution?
I have now solved this issue using the TXL timecode plugin. With help of Steinberg (who kindly provided me a Dorico hotfix) and help of several users on the Dorico forum I actually got this to work. This plugin is a SMPTE LTC (Linear timecode; Society of Motion Picture and Television Engineers), Midi Timecode (MTC), and Art-Net timecode generator synchronized to the clock of Dorico. To synchronize Dorico and Cubase, I used MTC, which embeds the same timing information as standard SMPTE timecode as a series of small ‘quarter-frame’ MIDI messages. The MTC is then transmitted over a virtual Midi port to Cubase, which must be setup as a slave to Dorico.
To setup the virtual Midi port, I used loopMidi from Tobias Erichsen (which I also use to connect my Stream Deck to Cubase). loopMidi is a virtual loopback MIDI cable to create virtual loopback MIDI-ports to interconnect applications on Windows that want to open hardware-MIDI-ports for communication.
Image: loopMidi with a virtual Midi port (TC2DAW) to transmit the MTC from Dorico to Cubase.
Next, the TXL timecode plugin is inserted as a VST instrument in the VST Rack in Dorico and configured to send MTC over the TC2DAW virtual Midi port. To check if timecode information is send over the virtual Midi port, you can use MidiOx.
Image: Configuration of the TXL timecode plugin in Dorico. In my final setup I configured with 24FPS and set the Custom Offset to have Dorico and Cubase exactly synchronized.
Image. Using MidiOx to check the setup of loopMidi and the TXL timecode plugin.
Next, Cubase is the configured to be a MMC (Midi Machine Control) slave of Dorico. MMC allows for remote control of transport functions as Play, Fast Forward, Rewind, Stop, Pause, and Record. When starting Dorico to play the score, Cubase now automatically starts in sync with Dorico.
Note: I encountered an issue where the Cubase play head moved when I started Dorico, but the Play button on the transport bar didn’t turn green. In other words, Cubase was not actually playing and therefore produced no sound. The problem was caused by the large buffer size selected for the Behringer X32 audio interface. A buffer size of 2024 prevented Cubase from playing. However, buffer sizes of 1024 and below did not cause any problems.
Image. Configuration of Cubase as a MMC slave of Dorico.
Image. In the transport bar of Cubase you can enable/disable the external synchronization, and set the display to timecode. Start Dorico and Cubase will follow.
Another pitfall: expression maps
For Dorico and Cubase expression maps for Spitfire BBCSO and other sample libraries (I am currently using BBCSO) are available. The expression maps (for BBCSO) for Cubase and Dorico are not setup in the same way and, therefore, playback in Dorico and Cubase might be different. See for example [here]. As far as I can oversee it is currently not possible to export music from Dorico (based on the Dorico BBCSO expression map) and import this in Cubase such that it automatically uses the Cubase BBCSO expression map. This requires (many) manual adjustments.
In Dorico you can export to MusicXML, which is basically a markup language for sheet music. This will contain information about playing techniques (articulations) and dynamics, and also Midi information (e.g., notes played) but probably most or all of the Midi control (CC) data will be lost. However, I did not test this. If MusicXML would contain all necessary information, then this could be imported into Cubase to work directly with the Cubase expression map. However, MusicXML is still under development and the implementations/richness in Dorico might be different from Steinberg resulting in loss of information. But again, I didn’t test this.
My current approach is to export Midi from Dorico once the composition is finalized. The Midi file will contain all dynamics and expression (i.e., various CC controllers) and the articulations as key-switches (i.e., notes bottom range of the keyboard (C-2 in the image below) that are not played as Midi notes but trigger the change to another articulation. For every Midi track (instrument), I instantiate a separate instance of BBCSO. Hit play, and it should sound like in Dorico.
The Midi import to Cubase makes the use of the Cubase expression map sort of abundant (unless you want to do a lot of tweaking in Cubase). In case you want use expression maps, you would need to manually transfer all key switches to events in the expression map lanes, and remove these key switches from the Midi track. Potentially a lot of work that can’t be automated at the moment.
Image. Imported Midi file in Cubase from Dorico. It shows the notes played by this instrument, the key-switches, the velocity lane, and the CC1 (modulation) and CC11 (expression) Midi controllers. CC1 moves between the different sample layers of an articulation.
Now start making music
Once you have resolved all these kind of technical difficulties, you can go back to making music. Here is the song that started al of this:
Troubleshooting
- For unknown reason the synchronization does not work if the buffer size of my X32 is set the the largest value of 2048 samples.
References
- SMPTE and MTC (Sound on Sound)
- Midi Timecode (MTC; midi.org)
- Dorico expression maps (Steinberg)
- Cubase expression maps (Steinberg)
- MusicXML
- Midi CC chart for Spitfire BBCSO
- Music Chef (sync Cubase and Dorico)
- Music Chef and here (export midi from Dorico to Cubase. Negative delay)
- Cubase forum