Currently, PulseTemplate.create_program and called functions depend on a select subset of the Loop class' interface to build the final program. We can standardize this interface and adapt/extend it so it can be used to efficiently create laboneq and similar backend code.
One important extension is the support of for loops that includes an efficient translation of ramps or increments if the packend supports it.