Do you also dislike using faucet knobs as lightsaber pommels?
Using things in ways they weren’t intended is a time-honored art form.

Would it be crazy to imagine EFFECT3(X, Y, Z) where if Y = Z, X would play and seemlessly play Y looping to Y ?
#define EFFECT3(X, Y, Z) Effect SFX_##X(#X, &SFX_##Y, &SFX_##Z)
The way to do that is:
EFFECT2(third, third);
EFFECT2(second, third);
EFFECT2(first, second);
No need for an EFFECT3 macro.

What is the command/syntax to start “playing” EFFECT2(X, Y) ?
In most cases, you probably want something like:
hybrid_font.PlayPolyphonic(&SFX_first);