In fact, there is no official way to record AND monitor externally sequenced sounds properly and reliably regarding latency in Ableton Live, that's why you may still be periodically struggling with latency issues.
Setting the Driver Error Compensation right
In other languages, it may be on another page, for example in french it's on page 18 (last page) with Live 10.0.5. Please note that the first versions of Live 10 forgot to include the lessons, so you would need to update your version in order to get them.Driver Error Compensation FAQ wrote:How do I calculate the correct DEC value?
Live has a built-in lesson including a specifically calibrated set which allows you to set DEC. For the lesson you will need a cable and an audio interface with at least one physical input and output. This can be found in the help view:
Help → Help View → Audio I/O → Page 8 of the Lesson, click the link for Driver Error Compensation.
The main thing that is not wrote in any manual but anyone using Live really needs to know is that depending if you're recording with Monitor set to In/Auto or Off, the resulting recorded waveforms will be put at different places on the grid.
Monitor set to In/Auto is meant to record your live played performance synced by hear to what Live makes you hear and so the resulting waveforms will be placed at the time the monitoring let you hear them when you were recording. This is meant that even if you had some effects generating latency on that track that would make you hear it too late, we think that you would have adapted your play to this and did your best to sync the heard result to the track you want to overdub with.
Monitor set to Off is basically what you want in order to record an externally sequenced sound. Even if at some point Live will be shifting all your monitors and playbacks because of latency compensation for matching, it will compensate the delay so the recording will be placed at the time it was meant to come regarding timing.
Live is stuck like this, so if you want to record sequenced sounds reliably and always the same timing wise, you have to record with Monitor set to Off.
"But now how do I monitor my tracks ?" -> You have to use another track.
If you didn't know that, then the following could seem even weirder for you: using a simple MIDI track to sequences an hardware synth then recording its sound in an audio track will suffer of exactly the same latency issues if you record with Monitor set to In/Auto, that's why the "External Instrument" device exists, and with it if you don't want to use a separate audio track (with Monitor set to Off) to record, you have to right-click the track, select "freeze", then right-click again and select "flatten" in order to record the sound correctly timing wise.
Now the next level that most likely none seems to ever reach is getting recordings playback matching monitoring timing wise whatever happens, like effects adding latency being used on the subject track or other ones.
That's pretty complicated but let's try to clear up the mess a bit.
Like for Audio or MIDI tracks, Live will shift the MIDI Clock output by the amount of latency generated by all the effects used on all tracks. But this seems to be meant that you use an hardware mixing desk and you only monitor through it (=without any latency). This way the recording will be played back at the same time as the sequencer will trig sounds and they will match.
But one want to use Live to monitor... And even while having an hardware mixing desk, one could want to use Live's effects. That's where the mess begins.
If you have the "Reduced Latency when Monitoring" option disabled, Live will also shift the monitored tracks... So it will shift the MIDI Clock output plus the monitored track, and then you will have your monitored sequenced sounds being delayed twice as the playback tracks. That won't be helpful in any way...
Now we can try many things, but we can already understand with this first experimentation that the way it works is false for what we want, so believe me or not: I'm sure there is no way to get monitoring of sequenced sounds matching recordings timing wise with how works the MIDI Clock output.
After noodling for hours and days, I came across a workaround for this annoying issue. For this, it is needed to use a device which transmits the MIDI Clock via an audio output of the soundcard such as Expert Sleepers USAMO* and Innerclock Sync-Lock (never tried but maybe E-RM Multiclock too ?). Because those devices are using an audio track in Live, this allows more flexibility for how the signal will be affected by latency compensation or not. In the meantime, using such a device is a good thing for the timing of your recordings as it will reduce the jitter of your sequencer a lot, especially for the MIDI Start message which is a crucial moment for getting the same timing between the DAW and the sequencer each time it can happens (like when recording in overdub style).
Set your USAMO* / Sync-Lock the following :
Making the clock going out via an External Audio Effect device will make it being unaffected by any latency. It will just go straight out as soon as possible every time, whatever happens.
Set your instrument tracks the following :
Make a group with an External Instrument track for monitoring and a simple Audio track for recording.
For the monitoring track, setting up the MIDI From and MIDI To is not the goal here but both need to be fulfilled with something in order to get all the wanted features working. Then set the Audio From with the external input that your sound generator is feeding. Set Monitor to Off.
For the recording track, set the Audio From with the Live's internal routing feature in selecting the name of the monitoring track in the list and choose "Pre FX" in the next selection box. Set Monitor to Off.
Now, whatever effects with any big amount of latency you will add anywhere, both your monitoring and playbacked recordings will always play at the exact same time !
But while the latency could begin to be big, one could still want to record live played notes on his sequencer and so will need to monitor the live played instrument without latency in order to get the note recorded at the right time on the sequencer (which is not delayed). This is the primary goal of the "Reduced Latency when Monitoring" option, so be sure it is activated and set the Monitor of the monitoring track to In/Auto. Don't forget to set it to Off again when recording audio (except if you want to record a live played performance in audio directly).
With this workaround, you should get recordings always a few milliseconds late from the grid, but always the same. Here I have about 1.25ms minimum. It's good to have them a bit late so when you will reduce your clips so they begin at the beginning of the waveform, the fade in feature won't affect the sound. Also having the sound placed a bit late makes you sure that it won't be early and so not encounter the risk that the beginning of the clip cuts the beginning of the sound.
Now that we found the way to get the thing right, we can understand that it is not our own fault to not be able to achieve this evident goal easily and we can hope that Live's developers will get finally interested in this issue.
* Expert Sleepers USAMO disclaimer :
There is a known bug with Ableton Live where the USAMO won't be able to transmit the start message to the sequencer anymore. This comes when your project becomes of a certain size that the slaved sequencer will start like only 1/8 times, what is veeeery annoying.
Additionnally, if you still get a little delay or flange between your monitored externally sequenced sounds and playbacked recordings, you may need to adjust the driver error compensation with this method.