Sometimes, a person might want to process recorded audio with a particular transfer function in the time domain, either for a particular effect, or for research. For example, I want to experiment with crossover distortion, which would compress the samples near the zero crossing. Or I might want to simulate a particular type of distortion, such as one might get from a particular kind of guitar amplifier.
If a person knew the kind of transfer function they wanted, they could simply draw it in, freehand with the mouse. Or, one might use a Bezier or curve-fit tool to help the user produce the desired result. It might be worthwhile for users to be able to enter or select from algebraic expressions as well (exponential, trignonometric, etc.)
Often, the transfer function in the third quadrant would mirror the first quadrant (e.g., class B or class A-B behavior), but to simulate single-ended or class A behavior, a full range function might be desired (i.e, everything is in the first quadrant – actually just a y-intercept offset).
Note that effects such as clippers and amplifiers are a predefined (although adjustable) form of this tool. An amplifier has a linear transfer function with an adjustable slope. A clipper has a linear transfer function with a slope of 1 up to an adjustable clip level, where the slope becomes zero. I’m envisioning an arbitrary transfer function.
Users should be able to save and load their transfer functions. Some presets might be interesting, and possibly products in their own right. For example, if someone came up with a really great Vox or Marshall Amp transfer function or whatever, that they could share with the community.
Since transfer function non-linearity can produce aliasing effects, oversampling calculations with a lowpass filter might be necessary, although a person should be able to adjust it or switch it off, if aliasing is what they want.
I have searched for this type of tool or add-in for Audacity, but have not found one. Does such a thing exist?