A short (or maybe long, let’s see…) description of the proposed song / pad implementation:
A song is a collection of sequences. Each sequence being a collection of non-overlapping patterns with a MIDI channel and JACK output.
A pad is a way to trigger a sequence, either one-shot or looped.
I propose that the pads are simply an alternative view of a song. Each pad represents a track from the song. The pad triggers the song to start playing (either looped or single-shot) and unmutes that track. It may be possible to configure a pad to unmute at the next loop point. I propose the concept of mutually exclusive groups of tracks. Only one of these tracks may unmuted, i.e. a solo within the group. This allows mutually exclusive pads: press one to play that sequence and press another to mute the first and play the second’s sequence.
The song editor presents all tracks from the song in a grid with tracks running along the vertical axis. Each track has a mute / solo button and tracks may be grouped as described above. A difference here is that there is a global transport which starts and stops all tracks / sequences. The technical implementation is the same (with a few conditional elements).
To configure the pads you would go to the song editor and select the song that represents the pads. (There would be dedicated pad songs separate to normal songs but from same underlying data set.) You then create each pad’s sequence as a track in the song.
I am working on this at the moment. (Boring stuff like encapsulation are sidetracking me - I hope to have something useful soon.) I know it may prove difficult to comprehend from a description so I will get something more tangible to you as soon as I can.
Cheers