From db5ef58f82cd52855ffd95532a214b33c47f2137 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Sat, 17 May 2014 13:11:25 +0100 Subject: [PATCH] Adjust Volume Control Transfer function to make it a bit slower at very low volumes. Add PDF of transfer function and Mac Grapher source document. --- common.c | 8 ++++---- ...airport Volume Control Transfer Function.gcx | Bin 0 -> 45202 bytes ...airport Volume Control Transfer Function.pdf | Bin 0 -> 28203 bytes 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 documents/Shairport Volume Control Transfer Function.gcx create mode 100644 documents/Shairport Volume Control Transfer Function.pdf diff --git a/common.c b/common.c index 66dc829c..d024c5b1 100644 --- a/common.c +++ b/common.c @@ -186,11 +186,11 @@ double vol2attn(double vol, long max_db, long min_db) { // We build the transfer function from one or more lines. We characterise each line with two numbers: // the first is where on x the line starts when y=0 (from 0 to -30); the second is where on y the line stops when when x is -30. // thus, if the line was characterised as {0,-30}, it would be an identity transfer. -// Assuming, for example, a dynamic range of lv=-70 to hv=0 +// Assuming, for example, a dynamic range of lv=-60 to hv=0 // Typically we'll use three lines -- a three order transfer function // First: {0,25} giving a gentle slope -// Second: {-17,-25-(lv+25)/2} giving a faster slope from y=0 at x=-17 to y=-50 at x=-30 -// Third: {-23,lv} giving a fast slope from y=0 at x=-23 to y=-70 at x=-30 +// Second: {-12,-25-(lv+25)/2} giving a faster slope from y=0 at x=-12 to y=-42.5 at x=-30 +// Third: {-19,lv} giving a fast slope from y=0 at x=-19 to y=-60 at x=-30 #define order 3 @@ -202,7 +202,7 @@ double vol2attn(double vol, long max_db, long min_db) { double first_slope = -2500.0; // this is the slope of the attenuation at the high end -- 25dB for the full rotation. if (-range_db>first_slope) first_slope = range_db; - double lines[order][2] = {{0,first_slope},{-17,first_slope-(range_db+first_slope)/2},{-23,-range_db}}; + double lines[order][2] = {{0,first_slope},{-12,first_slope-(range_db+first_slope)/2},{-19,-range_db}}; int i; for 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 U;lp`}-TFuRy~fr=-jMeH0jbPAZ2$lO literal 0 HcmV?d00001 diff --git a/documents/Shairport Volume Control Transfer Function.pdf b/documents/Shairport Volume Control Transfer Function.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f5fcf6096f22cb177627b4b28c4a162de2732f53 GIT binary patch literal 28203 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