Hi Harry,
Exactly - I think that the script, or module, should be totally flexible. At the end of the day we actually only have a single 'blank canvas', and this has five phyical attributes. Its X and Y pixel counts are fixed (by the source data, all of which MUST jave been aligned to each other, and trimmed to be exactly 'the same' size). and the final image will have three colour channels, which we will refer to as R, G and B, and that these channels are DIRECTLY mapped to the equivalent colour of your display device.
So, into each of the three possible channels (R, G and B) of the blank canvas, the user then has the option of 'mixing' data from other (identically sized) images. At its very simplest (and trivial) level, the user would take Rd, Gn and Bu image data, and mix these - 100% each - into each of the three R, G and B channels. Nothing particualrly clever, or advantageous there!
But, let's say the user only has bi-colour data - Rd and Gn, for example. These two images can still go into their appropriate channels, at 100%. But a 'synthetic' B channel could now be made by taking (100% Rd) and (-100% Gn) and 'summing', to give a [Rd-Gn] result for use in the B channel.
[This concept, now that I have just had to consider it more closely, suggests that the 'mixer' interface may actually need a set of 'radio buttons' to allow the user to define the 'operator' that should be applied (+, -, x, /, etc.) - and this - unfortunately is where PixMath still gives you FAR greater power]
Now, for each of the R, G or B 'channels', the user needs to be able to define which images are going to be included as 'source' data. Each channel could include as many images as needed, or just one, or even 'none'. As I suggested earlier, the R channel could be a simple Rd '+' Ha 'blend', with - say - 70%Rd 'plus' 30%Ha. The user may even then choose to 'swap' then Gn and Bu source images, putting 'Gn' into B, and vice versa.
And, because the 'recombination' call would be to the LRGB Recombine process, this actually DOES give a 'fourth' channel into which data could be 'blended', prior to this extra 'L' channel being recombined with the 'standard' R, G and B channels. The user would not even then have to be aware that LRGB combination is actually a multi-stage process in itself - where, initially, it is just the R, G and B channels that are used to form the new 'blank canvas' image, which is then immediately split into the three CIE L*a.b channels, and where the extracted L* channel is then replaced with the data specified for the Lu image in the LRGB process, before the new trio are recombined (again, as CIE L*a.b data) to regenerate a three-channel RGB image (our 'blank canvas', if you will). And the LRGB Combination process also has a whole load of extra 'features' to control how this recombination progresses.
In reality, all the script is doing is allowing more than 'just three, or four' images to be included in the LRGB Combine process - and it is providing a more convenient GUI than PixelMath alone - simply by virtue of the 'blending sliders'.
If you truly want to be able to mix up your source data any way that you want, you will end up using multiple Pixelmath processes - one for each 'channel' (up to four such processes, one each for the R, G B and L channels as needed by LRGB Combine). And each of those PixMath processes will allow you TOTAL control of how you blend your individual channel 'pigments'. (For example, instead of 'multiplying' Rd and Ha, you might choose to 'average' the two channels, or even 'maximum' the two channels - and then you might even decide to apply that Pixmath process through a mask - that meant 'small scale structures, such as stars, did NOT get affected by the Ha information, thus eliminating salmon pinks haloes that can sometimes result when blending Ha data).
I would therefore now doubt that this script would really be as capable as every user would need - maybe it will just have to be restricted to simple scaling and summing of (multiple) source data into each of the four destination channels.
Leaving the 'manual' PixelMath method as an option for the more adventurous
Cheers,