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.

Can be used as amplitude value in Synthesizer.Dimensional.Causal.Process.T
or in Synthesizer.Dimensional.Abstraction.HomogeneousGen,
whenever the signal has no amplitude.
It would be a bad idea to omit the Flat parameter
in Synthesizer.Dimensional.Causal.Process.applyFlat routine,
since Synthesizer.Dimensional.Causal.Process.apply can still be used
but the correspondence between amplitude type and sample type is lost.