Documentation

This type shall ensure, that you do not accidentally
bring amplitudes and the corresponding low-level signal values out of sync.
We also use it for generation of internal control parameters
in Synthesizer.Dimensional.Causal.ControlledProcess.
In principle this could also be T,
but maps are not bound to a sampling rate,
and thus do not need the s type parameter.

We restrict the amplitude types to those of class Amplitude.
Otherwise mapAmplitude could be abused
for bringing amplitudes and respective sample values out of sync.
For mapping amplitudes that are nested in some pairs,
use it in combination with first and second.

FIXME:
Using this function is however still unsafe,
since normally it should not be observable
how the volume is balanced between amplitude and signal.
This function allows to replace an actual amplitude by Flat,
which is also unsafe.
This may only be used for proportional mappings.
See T.