Unlinking Stereo Channels II |
January 10th, 2013 |
experiment, math, music, sound, tech, vsl1818 |
I have stereo channels I want to unlink.
Simple linear interpolation turns out not to be the answer, so I need
to determine the relationship between gain, pan, and the output levels
experimentally. I set up my VSL1818 as:
Referenced in: Unlinking Stereo Channels III
The phone generated a tone, which went into input 1 of the mixer. I connected outputs 3 and 4 of the vsl1818 back to inputs 2 and 3. In software I set the mixer to send input 1 to outputs 3 and 4. Then a program I wrote iterated through combinations of gain and pan while measuring the levels of input 2 and 3:smartphone AB 1818 VSL +------------+ +-----------+ | sine wave | | | | generation >--------> in1 | | app | | aux3 >-----+ +------------+ +-----> in2 | | | | aux4 >--+ | | +--> in3 | | | | | | | | | | | +-----------+ | | | +-----------------+ | +-----------------------+
This is frustrating because of two different sources of nonlinearity. The first is that gain and pan are combined in some way I don't yet understand. The second is that the chosen gain (out) and measured level (in) aren't linear either:pan %, gain %, left, right ... 30, 60, 165, 143 30, 61, 166, 145 30, 62, 168, 146 30, 63, 170, 147 30, 64, 172, 150 30, 65, 174, 151 30, 66, 175, 153 30, 67, 177, 156 30, 68, 179, 157 ...(full data, 10000 rows)
Still, I can look at equivalence classes, combinations of gain and pan that all keep one channel the same while varying the other. Each graph shows all the combinations of gain (red) and pan (blue) that keep one channel at the specified level.
- One channel constant at 0 (raw)
- One channel constant at 24 (raw)
- One channel constant at 65 (raw)
- One channel constant at 84 (raw)
- One channel constant at 113 (raw)
- One channel constant at 131 (raw)
- One channel constant at 160 (raw)
- One channel constant at 187 (raw)
- One channel constant at 221 (raw)
- One channel constant at 235 (raw)
My goal is two functions:
I think I now have the data I need to write these functions, but I'm still not sure what they are.def to_gain_pan(left, right): ... return gain, pan def to_left_right(gain, pan): ... return left, right
Comment via: google plus, facebook