Thank you Valetin, David, and Leo for your support! I really appreciate it!
Summary of the proposed options
- af = \after \etc simple, yet effective solution within the Lilypond syntax, that is less efficient as it creates a wrapper
- #(define af \after) simple, yet efficient solution that creates an alias using Scheme and correctly handles arbitrary complex parameters
- af = #(define-music-function (dur mus) (ly:duration?) (ly:music?) #{ \after #dur \! #mus #}) more complex solution that correctly implements the initial requirement and allows for additional logic to be automatically executed
I've settled on the second option for my use case.
Thank you very much,
Vlad