| 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 still the case with Dorico 6 and Cubase 15, 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 (notes) 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. Currently, Steinberg is making efforts to integrate Dorico into Cubase, but we are not there yet.
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 the orchestral 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 it back tino 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 hotfix for Dorico 5; no longer needed with Dorico 6x) and help of several users on the Dorico forum I actually got this to work. This plugin is a SMPTE LTC (Society of Motion Picture and Television Engineers; Linear timecode), 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 a virtual Midi port, I use 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.
However, I am also using Bome Network with Vienna Ensemble Pro configuration. This sometimes seems to conflict with loopMidi resulting in the TC2DAW virtual midi port being invisible. Therefore, I also created two virtual midi ports in Bome Network (TIMECODE (Src) and TIMECODE (Dst)) and made a routing (in Bome Network) from TIMECODE (Src) –> TIMECODE (Dst). This serves as an alternative to the loopMidi port. See Vienna Ensemble Pro configuration for more information about the configuration of Bome Network and the differences with loopMidi.
Image: loopMidi with a virtual Midi port (TC2DAW) to transmit the MTC from Dorico to Cubase.

Image: Bome Network with a MIDI Router from TIMECODE (Src) –> TIMECODE (Dst). The TXL timecode plugin will send to TIMECODE (Src) and Cubase will receive at TIMECODE (Dst).
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 30 fps and set the Custom Offset to have Dorico and Cubase synchronized. Make sure to also set Cubase to 30 fps in Project –> Project Setup. You will have to fine tune the Custom Offset to ensure that Dorico and Cubase start at the same position in the song.
Image. Using MidiOx to check the setup of loopMidi and the TXL timecode plugin.
Next, configure synchronization in Cubase by Activating External Sync, enabling MIDI timecode, and setting the MIDI input to the correct virtual port. This is done in Transport –> Project Synchronization Setup. Cubase now automatically starts in sync with Dorico.
- Lock Frames: Determines how many full frames of timecode it takes for Cubase to lock, that is, to establish synchronization. I have set this to 0 since the communication between Dorico and Cubase is instant.
- Drop Out Frames: Sets the number of timecode frames that must be missed until Cubase stops.
- Inhibit Restart ms: Some synchronizers still transmit MTC for a short period of time after an external tapemachine has been stopped. These extra frames of timecode sometimes cause Cubase to restart suddenly. This settings allows you to control the amount of time in milliseconds that Cubase waits before restart (ignoring incoming MTC) once it has stopped.
Image. Configuration of MTC in Cubase. This will slave Cubase to Dorico.
Notes:
- Make sure to disable the virtual midi ports in Dorico Preferences (Play section) to avoid feedback loops.
- Start the Dorico project with one (or more) empty bars, such that there is sufficient time for Cubase to sync with Dorico when Dorico is started.
- To set the Custom Offset of the TLX plugin, you may record MIDI output into Cubase to visually determine if the starting points are ok. See Vienna Ensemble Pro configuration for a possible setup to do this.
- Precision of the synchronization
- TXL Timecode can works but often feels imprecise because MIDI Timecode (MTC) itself is relatively coarse. MTC updates only in timecode frames rather than at audio-sample resolution, so small timing jitter is normal. However, we can optimize it to some extend.
- Use the highest timecode frame rate available (i.e., currently 30 fps).
- Make the audio buffer as small as possible since this will reduce transport lag. 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 too large buffer size I 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.
- Use the same audio interface and sample rate for both Cubase and Dorico (this will normally be the case).
- Optimize Custom Offset of the TLX plugin.
- Do not use a bidirectional sync, which can cause instability.
- Even when you apply also this optimization, MIDI Timecode (MTC) will never be sample-accurate because it was designed for transport sync and not for tight musical phase-locking. Typically, the best case precision is about ~5-20ms which can still be noticeable. However, during composition this will be sufficient in most cases. At the mixing stage, you should export the audio from Dorico and import this into Cubase and then ensure that each audio track is precisely aligned with the tracks already present in Cubase.
- It might be convenient to set the tempo in Dorico and Cubase to the same value (bpm) although this will not affect the synchronization.
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.
Hardware solutions
There are hardware solutions to improve synchronization but, so far, I have no experience with this.
- LTC / SMPTE hardware interfaces: A dedicated LTC (Linear Timecode) ↔ MIDI Timecode converter can reduce software timing jitter because the conversion happens in hardware rather than inside Windows. Examples include dedicated sync interfaces that convert SMPTE/LTC to MTC with very small frame delay. This will improve transport lock, start consistency, and will reduce jitter but MTC itself is still frame-based, so it will never be perfectly sample accurate.
- Audio-based master clock devices (best for tight sync). Some professional sync boxes avoid ordinary MIDI timing and instead derive sync from an audio pulse stream, which is much more precise (sample-based) than MIDI. A device such as the E-RM Multiclock uses an audio signal from the DAW and converts that into a stable hardware clock with extremely low jitter. Note, however, that E-RM company does no longer exist. An alternative could be USAMO.
- Word clock synchronization. If both devices support it, studio hardware can share Word clock or Sample clock. This keeps all digital devices running from the same timing source. Not sure how this would be used with Dorico/Cubase, if possible at all.
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












Hello, I’m also trying to synchronize Dorico 6 with Cubase 14. Your YouTube video helped me a lot, thank you very much. Following your recommendation, I’m using MIDI Loop and TXL20. It’s working, but there’s still a slight time difference. Cubase is about 1/32 ahead. My question: Is there a way to set a custom time offset in Cubase?
Thanks in advance, P. Schmidt
In principle you should set the Custom Offset in the TXL. Always takes me quite a bit of trial and error to get this right and still don’t understand how this offset exactly relates to the timecode shown in Cubase
Dear Antoine,
Thank you for your reply. But do you decide on synchronization by ear (i.e., hearing) or by comparing the timecodes of Dorico and Cubase?
by ear
thx you very much for your hlp