Hi,
this patch adds a square fade (U parabola) to the fade effect.
I like it very much when fading out songs (30 seconds fade).
diff --git a/src/fade.c b/src/fade.c
index 3cf4876..04ebfd7 100644
--- a/src/fade.c
+++ b/src/fade.c
@@ -19,6 +19,7 @@
* in given time. */
#define FADE_TRI 't' /* Linear slope. */
#define FADE_PAR 'p' /* Inverted parabola. */
+#define FADE_SQUARE 's' /* Square. */
#include <string.h>
@@ -58,7 +59,7 @@ static int sox_fade_getopts(sox_effect_t * effp, int argc, char **argv)
* string off for later computations.
*/
- if (sscanf(argv[0], "%1[qhltp]", t_char))
+ if (sscanf(argv[0], "%1[qhltps]", t_char))
{
fade->in_fadetype = *t_char;
fade->out_fadetype = *t_char;
@@ -370,6 +371,10 @@ static double fade_gain(uint64_t index, uint64_t range, int type)
retval = (1 - (1 - findex) * (1 - findex));
break;
+ case FADE_SQUARE : /* square */
+ retval = findex * findex;
+ break;
+
/* TODO: more fade curves? */
default : /* Error indicating wrong fade curve */
retval = -1.0;