Crash or strange rendering occurs when using Bezier curves with volume automation

Using Bezier curves in volume automation can cause a crash on playback or rendering.
This crash only occurs with volume fader automation.

How to reproduce

  1. Create an audio track.
  2. Set two events on the volume automation track. At this time, it is easier to reproduce if the interval between the two points is less than the process block size.
  3. Use the handle between the automation to make it a Bezier curve.
  4. Set a new automation event inside the Bezier curve. This will create two adjacent Bezier curves.
  5. Cubase will crash when playing before this automation.

It may not reproduce. Try narrowing the automation interval or changing the audio buffer size and playing again.
In the attached video, buffer size 32, ASIO-Guard off, automation interval about 20 samples

About process block size

When processing in real time, this value is determined by the audio device buffer size and the ASIO-Guard settings. (Project playback, real-time export)
When rendering offline, the ASIO-Guard settings have no effect. The process block size is the same as the audio buffer size. (Export Audio Mixdown, Render in Place)

When ASIO-Guard is enabled (low 256, normal 512, high 1024 samples), the process block size is larger than the audio device’s buffer size. (Sometimes it’s different)

Example: If ASIO-Guard is low and Buffer Size is 32 samples, the process block size is 256
Example: If ASIO-Guard is high and Buffer Size is 2048 samples, the process block size is 2048

The process block size value was verified by creating a plugin with VST3SDK.

Related bugs in Cubase 12 and 13

There has been a problem with Bezier curves for volume automation since previous versions. The following image was verified with CubasePro13.0.41. A new feature in Cubase 12 has improved the resolution of volume automation, but this is a bug that has existed since then.

  1. In a 48kHz project, a 24kHz square wave was loaded into the audio track.
  2. Volume automation was written at short intervals. A Bezier curve was used towards the end.
  3. Render in Place was performed while changing the process block size.

The track name is the process block size.
The rendering result near the Bezier curve is strange. If you look closely, it seems that the data before the Bezier curve is copied for a certain length and then rendered. The larger the process block size, the wider the range of influence.

When I tried to test this phenomenon on Cubase 14, I found that the above crash occurred.

I believe the reason why Cubase 14 crashes is because they tried to fix a bug that existed in Cubase 12 but were unable to fix it completely. Actually, I did a more detailed investigation and found various phenomena, but this is a bit off topic, so I’ll stop here.

I have the same problem on both Mac and Windows.

Mac Studio Apple M2 Max macOS Sonoma 14.7
Windows 11

This issue still exists after the Cubase Pro 14.010 maintenance update.