I discussed this request on IRC earlier today, when someone asked me to make image mockups to illustrate what I was attempting to explain. Basically, my request is a rather large one but I think would have a large pay-off for trackers willing to work in itp or mptm format -- I'd like to see the idea of macros implemented into MPT.
When I think of macros, normally I think of old chiptunes and music programming languages like MML, only keeping with MPT's tradition of visually illustrating the concept in an easy, straightforward manner. What inspired this idea specifically was the ability to change various properties of an instrument in FamiTracker, namely the duty cycle and arpeggio "envelopes" could be changed independently of other features.
I thought it would be extremely useful to genericize this as macros rather than creating endless redundant bloat in the instruments tab with various envelopes. By decoupling instruments and some more special properties into macros, they can be re-used in other instruments, and I can think of many traditional demoscene tricks made much easier with them.
Here is a practical example of a possible implementation:
This is how a default macro would be associated with an instrument, if any. In this mockup, I used a spin button, but it would probably be more appropriate to use a combo box (drop-down) with names and numbers of the macros, so it would be easier to choose macros by name (name examples: "-- None", "01: Guitar Strum", "02: five-note arpeggio", "03: Major chord", etc).
The macro tab itself would look something like this:
Please ignore the fact I mostly ripped off the existing patterns window for consistency. There shouldn't be any orders in the macros, since each macro should only consist of one pattern of variable length and only have as many rows / channels as necessary. The very first thing that's different in the macros tab from patterns would be that the primary instrument is a pass-thru to whatever its parent instrument is. I also toyed with the idea of having pass-thru offsets for multiple-sample instruments, but this may be overly complex and that level of decoupling may not be necessary in the majority of cases. (I can mainly only think of using it for multiple-duty-cycle samples, dual instruments, etc.) From here, the primary notes and effects are entered into the pattern macro. Patterns can be imported or saved individually for re-use or redistribution.
Ideally, no effects in macros would have a global effect on the MOD. Instead, their scope should be adjusted for the fact they're being used as a macro (for example, Vxx would translate to an instrument volume falloff, not the entire MOD getting quieter). Similarly, the speed multiplier (Axx) would allow for fast trills and arpeggios "between rows" in the main patterns window not normally possible at the default speed without unnecessarily expanding patterns to fit these notes otherwise.
Once macros are attached to instruments, playing the instrument in the normal patterns window should produce the sound from the associated macro transposed to the note in the main patterns window. All effects in the main pattern window would override the macro on a global level, for example making a chord from a single string sample in a macro, and using the "string popping" trick common in oldschool mods and doskpop tunes.
If there is still letter space internally for mapping a new effect, I would propose something like \xx to switch an instrument's macro on the channel level. The override could behave similarly to other instrument control effect extensions implemented into MPT -- allowing the musician to change an instrument to a duet or trio for example on the fly, or adding a "fake echo" / delay effect from the macro.
Hmm, this request would probably take a lot of overhead and possibly new logic in the replayer to be implemented, but I sure would use it a lot if it ever did get implemented