This MaM can produce any 3 shapes without crystals. For each such shape, it produces 4 belts.
Architecture
Overview
The MaM has a centralized control module where the shapes to produce are specified. In terms of resources, it takes as input the the four basic shapes, and the three primary colors. It can output 3 different shapes – 4 belts for each such shape – containing those basic shapes and colors, or empty quarters. For now it does not support pins, secondary colors or crystals. I’m working on adding those features and will probably make an update once I’ve added them.

There is additional post-processing logic that allows to stack the three different shapes, if desired. That allows me to configure the machine for shapes that have up to 3 layers, but at the same time I can still output them separately if needed.
Every row of the design corresponds to a quarter shape in the output.The first step is shape selection, where each shape type is fed vertically into the machine. Then, there is painting with the right color. Finally, the shapes are split into quarters and merged together using stackers. The shapes are only split into quarters right before being merged together, because it takes less belts to move full shapes than quarters. That way, it leaves space to pass the signals through the machine.
Note that for shape selection and painting, I managed to fit the design on a single layer. This means that I could simply stack the design three times on top of itself to support 3 different shapes. For step 3, however, I could not fit everything on a single layer, so the design is repeated 3 times horizontally.
The signals that go through the machines are already split into shape and color before going in all the modules. This saves shape analyzers in the modules, which is good for space efficiency.
Shape selection
For shape selection, I use a simple belt filter that selects the input if it matches the shape passed as instruction. There are trashers to speed up the re-configuration procedure.

Again here, I use a belt filter to redirect the shapes towards the painters if the color instruction matches the available color.

Merging
At this step, 4 belts of full shapes are coming in on four different rows. They are first split into quarters, and then merged together two by two which results in 4 belts of output. The stacking logic support empty quarters. When an empty quarter needs to be merged with a non-empty quarter, the stackers are bypassed using belt filters. A signal is passed from the first set of mergers to the last merger in order to indicate when there is an empty half.

Output logic
The post-processing modules allow to optionally stack the 3 layers of shapes that are produced. It can also swap two layers in case I want to stack them in a different order. This is not really needed to make this MaM work. But it makes it faster to change the shapes that are produced by the MaM without touching the shape instructions – which takes more time to update.

Conclusion
I plan to upgrade this design to support painting, pins and crystals! For pins, it should be pretty easy to add a row to the inputs. For color mixing, I’m working on a module that would support all the colors with the same amount of space.