## audacity-nyquist

 [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-24 18:51:03 ```eq-band(signal, hz, gain, width) I'm trying to write an EQ routine for audacity and I'm having trouble understanding the width parameter. I had thought that High Hz - Low Hz over 2 is what should be width. But my routine doesn't work that way when it uses that on the larger Hz values. But over 4 does seem to work. I'd like to sort out why so I don't have any gap or overlap in the EQ bands. When it does the EQ for the higher bands ~18kHz, it basically nulls out the audio if /2 is used. 20000 - 16000 = 4000 4000/2 = 2000 = width? or 4000/4 = 1000 = width? or Some other factor I seem to not quite get yet. To be used like (eq-band s 18000 2.0 2000) Per the documentation: --- and width (a FLONUM) is the half-gain width in octaves --- Could someone give me a human-esque interpretation of that phrase. Am I supposed to make it a factor of the gain that I'm applying or something? If so, what does that do to the gain value? Also, is there any sort of debugging tutorial, even if I have to use emacs or something. Even though my routine is fairly simple, I hate having no ability to peak at the values (after applied arithmetic) before they get used. Thanks, - James ```
 Re: [Audacity-nyquist] eq-band and "width" From: Roger Dannenberg - 2010-10-25 01:26:19 ```On 10/24/10 2:50 PM, James Shatto wrote: > eq-band(signal, hz, gain, width) > > I'm trying to write an EQ routine for audacity and I'm having trouble > understanding the width parameter. I had thought that High Hz - Low > Hz over 2 is what should be width. But my routine doesn't work that > way when it uses that on the larger Hz values. But over 4 does seem > to work. I'd like to sort out why so I don't have any gap or overlap > in the EQ bands. I guess you know there will always be overlap. These are not "brick wall" filters. > When it does the EQ for the higher bands ~18kHz, it > basically nulls out the audio if /2 is used. > > 20000 - 16000 = 4000 > 4000/2 = 2000 = width? > or > 4000/4 = 1000 = width? > or > Some other factor I seem to not quite get yet. To be used like > (eq-band s 18000 2.0 2000) > > Per the documentation: > --- and width (a FLONUM) is the half-gain width in octaves --- > > Could someone give me a human-esque interpretation of that phrase. Am > I supposed to make it a factor of the gain that I'm applying or > something? If so, what does that do to the gain value? The gain is measured in dB. The width is measured in octaves, e.g. if the width is 2, the range of frequencies affected by the filter is from hz/2 (an octave below) to hz*2 (an octave above). At these points (hz/2 and hz*2), the filter gain will be gain/2, measured in dB. To compute width, the octaves between f1 and f2, where f2 > f1, use log2(f2 / f1). log2(x) is not built-in, but log2(x) = log(x) / log(2.0). To hz, get the frequency in the middle, use hz = f1 * power(2.0, width / 2.0). I wrote a little program to send a sine sweep through a filter and plot the peak amplitude of the output as a function of frequency (works in the Nyquist IDE, and since the output is a sound, I guess you run something similar to this in Audacity: function test() begin ;; probe is a sinusoidal sweep at 1Hz/s with probe = hzosc(pwl(0, 0, 1000, 1000, 1000, 0)), ;; filt is a filtered probe filt = eq-band(probe, 200, -6.0, 2.0), ;; out is the rms of the input scaled to get peak out = rms(filt, 10) * sqrt(2.0) return out end exec s-plot(test(), 1000, 1000) > Also, is there any sort of debugging tutorial, even if I have to use > emacs or something. Even though my routine is fairly simple, I hate > having no ability to peak at the values (after applied arithmetic) > before they get used. Maybe someone has a better answer for Audacity-nyquist, but I use the Nyquist IDE. -Roger > Thanks, > - James ```
 Re: [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-25 02:22:07 ```What I'd really like to do is sort of a spline adjustment to EQ across the board maxing out at the high end at a specific dB level. And close to 0dB on the low end. Could that be done per frequency? I'm trying to compensate for the HF loss due to fake fur. And I've grown tired of entering 15 numbers for every adjustment. Plus I'd like a few more bands for a smoother adjustment. Hopefully with some control over how linear or dipped / curved the adjustment will be. For my current setup I'm needing near 2dB to 4dB on the high end. As much as 6dB on previous contraptions. So far results are promising for the restoration of certain percussion instruments and certain wildlife. Plus the spoken word seems to need a bit of high end for clarity. My lisp is a little weak, having only used it before to do a bunch of notch filters to counter sox's noise reduction that seems to omit the 1000Hz multiples from it's filter. Ultimately I'd like the actually measure the mics response in said configuration and base compensation off of that information. But for now, just trying to keep it simple and mostly automated. I don't really care if it takes a day for an hours audio, as long as it's good audio. Thanks for the clarification on width. That helps a bit. - James On 10/24/10, Roger Dannenberg wrote: > > On 10/24/10 2:50 PM, James Shatto wrote: >> eq-band(signal, hz, gain, width) >> >> I'm trying to write an EQ routine for audacity and I'm having trouble >> understanding the width parameter. I had thought that High Hz - Low >> Hz over 2 is what should be width. But my routine doesn't work that >> way when it uses that on the larger Hz values. But over 4 does seem >> to work. I'd like to sort out why so I don't have any gap or overlap >> in the EQ bands. > I guess you know there will always be overlap. These are not "brick > wall" filters. >> When it does the EQ for the higher bands ~18kHz, it >> basically nulls out the audio if /2 is used. >> >> 20000 - 16000 = 4000 >> 4000/2 = 2000 = width? >> or >> 4000/4 = 1000 = width? >> or >> Some other factor I seem to not quite get yet. To be used like >> (eq-band s 18000 2.0 2000) >> >> Per the documentation: >> --- and width (a FLONUM) is the half-gain width in octaves --- >> >> Could someone give me a human-esque interpretation of that phrase. Am >> I supposed to make it a factor of the gain that I'm applying or >> something? If so, what does that do to the gain value? > The gain is measured in dB. The width is measured in octaves, e.g. if > the width is 2, the range of frequencies affected by the filter is from > hz/2 (an octave below) to hz*2 (an octave above). At these points (hz/2 > and hz*2), the filter gain will be gain/2, measured in dB. > > To compute width, the octaves between f1 and f2, where f2 > f1, use > log2(f2 / f1). log2(x) is not built-in, but log2(x) = log(x) / log(2.0). > To hz, get the frequency in the middle, use hz = f1 * power(2.0, width / > 2.0). > > I wrote a little program to send a sine sweep through a filter and plot > the peak amplitude of the output as a function of frequency (works in > the Nyquist IDE, and since the output is a sound, I guess you run > something similar to this in Audacity: > > function test() > begin > ;; probe is a sinusoidal sweep at 1Hz/s > with probe = hzosc(pwl(0, 0, 1000, 1000, 1000, 0)), > ;; filt is a filtered probe > filt = eq-band(probe, 200, -6.0, 2.0), > ;; out is the rms of the input scaled to get peak > out = rms(filt, 10) * sqrt(2.0) > return out > end > > exec s-plot(test(), 1000, 1000) >> Also, is there any sort of debugging tutorial, even if I have to use >> emacs or something. Even though my routine is fairly simple, I hate >> having no ability to peak at the values (after applied arithmetic) >> before they get used. > Maybe someone has a better answer for Audacity-nyquist, but I use the > Nyquist IDE. -Roger >> Thanks, >> - James > > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America contest > Create new apps & games for the Nokia N8 for consumers in U.S. and Canada > \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Audacity-nyquist mailing list > Audacity-nyquist@... > https://lists.sourceforge.net/lists/listinfo/audacity-nyquist > ```
 Re: [Audacity-nyquist] eq-band and "width" From: Roger Dannenberg - 2010-10-25 02:54:09 Attachments: Message as HTML ```On 10/24/10 10:22 PM, James Shatto wrote: > What I'd really like to do is sort of a spline adjustment to EQ across > the board maxing out at the high end at a specific dB level. And > close to 0dB on the low end. Could that be done per frequency? I'm > trying to compensate for the HF loss due to fake fur. And I've grown > tired of entering 15 numbers for every adjustment. Plus I'd like a > few more bands for a smoother adjustment. Hopefully with some control > over how linear or dipped / curved the adjustment will be. How would you specify the spline? There's a file in nyquist/lib/grapheq.lsp that implements NBAND-RANGE: |nband-rang/e//(input/, /gains/, /lowf/, /highf/)| A graphical equalizer applied to /input/ (a |SOUND|). The gain controls and number of bands is given by /gains/, an ARRAY of |SOUND|s (in other words, a Nyquist multichannel |SOUND|). Any sound in the array may be replaced by a |FLONUM|. The bands are geometrically equally spaced from the lowest frequency /lowf/ to the highest frequency /highf/ (both are |FLONUM|s). I think you could generate an array of gains according to some parametric description. > For my current setup I'm needing near 2dB to 4dB on the high end. As > much as 6dB on previous contraptions. So far results are promising > for the restoration of certain percussion instruments and certain > wildlife. Plus the spoken word seems to need a bit of high end for > clarity. My lisp is a little weak, having only used it before to do a > bunch of notch filters to counter sox's noise reduction that seems to > omit the 1000Hz multiples from it's filter. > > Ultimately I'd like the actually measure the mics response in said > configuration and base compensation off of that information. But for > now, just trying to keep it simple and mostly automated. I don't > really care if it takes a day for an hours audio, as long as it's good > audio. One well-known problem with EQ is that it introduces lots of frequency-dependent phase shift. Esp. for percussion, you might be better off with a simple low-order parametric filter that just boosts the highs a bit rather than a big multi-band EQ. The latter will let you model the overall amplitude response in detail, but the phase response will be erratic. > Thanks for the clarification on width. That helps a bit. > > - James > > > On 10/24/10, Roger Dannenberg wrote: >> On 10/24/10 2:50 PM, James Shatto wrote: >>> eq-band(signal, hz, gain, width) >>> >>> I'm trying to write an EQ routine for audacity and I'm having trouble >>> understanding the width parameter. I had thought that High Hz - Low >>> Hz over 2 is what should be width. But my routine doesn't work that >>> way when it uses that on the larger Hz values. But over 4 does seem >>> to work. I'd like to sort out why so I don't have any gap or overlap >>> in the EQ bands. >> I guess you know there will always be overlap. These are not "brick >> wall" filters. >>> When it does the EQ for the higher bands ~18kHz, it >>> basically nulls out the audio if /2 is used. >>> >>> 20000 - 16000 = 4000 >>> 4000/2 = 2000 = width? >>> or >>> 4000/4 = 1000 = width? >>> or >>> Some other factor I seem to not quite get yet. To be used like >>> (eq-band s 18000 2.0 2000) >>> >>> Per the documentation: >>> --- and width (a FLONUM) is the half-gain width in octaves --- >>> >>> Could someone give me a human-esque interpretation of that phrase. Am >>> I supposed to make it a factor of the gain that I'm applying or >>> something? If so, what does that do to the gain value? >> The gain is measured in dB. The width is measured in octaves, e.g. if >> the width is 2, the range of frequencies affected by the filter is from >> hz/2 (an octave below) to hz*2 (an octave above). At these points (hz/2 >> and hz*2), the filter gain will be gain/2, measured in dB. >> >> To compute width, the octaves between f1 and f2, where f2> f1, use >> log2(f2 / f1). log2(x) is not built-in, but log2(x) = log(x) / log(2.0). >> To hz, get the frequency in the middle, use hz = f1 * power(2.0, width / >> 2.0). >> >> I wrote a little program to send a sine sweep through a filter and plot >> the peak amplitude of the output as a function of frequency (works in >> the Nyquist IDE, and since the output is a sound, I guess you run >> something similar to this in Audacity: >> >> function test() >> begin >> ;; probe is a sinusoidal sweep at 1Hz/s >> with probe = hzosc(pwl(0, 0, 1000, 1000, 1000, 0)), >> ;; filt is a filtered probe >> filt = eq-band(probe, 200, -6.0, 2.0), >> ;; out is the rms of the input scaled to get peak >> out = rms(filt, 10) * sqrt(2.0) >> return out >> end >> >> exec s-plot(test(), 1000, 1000) >>> Also, is there any sort of debugging tutorial, even if I have to use >>> emacs or something. Even though my routine is fairly simple, I hate >>> having no ability to peak at the values (after applied arithmetic) >>> before they get used. >> Maybe someone has a better answer for Audacity-nyquist, but I use the >> Nyquist IDE. -Roger >>> Thanks, >>> - James >> ------------------------------------------------------------------------------ >> Nokia and AT&T present the 2010 Calling All Innovators-North America contest >> Create new apps& games for the Nokia N8 for consumers in U.S. and Canada >> \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing >> Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store >> http://p.sf.net/sfu/nokia-dev2dev >> _______________________________________________ >> Audacity-nyquist mailing list >> Audacity-nyquist@... >> https://lists.sourceforge.net/lists/listinfo/audacity-nyquist >> > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America contest > Create new apps& games for the Nokia N8 for consumers in U.S. and Canada > \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Audacity-nyquist mailing list > Audacity-nyquist@... > https://lists.sourceforge.net/lists/listinfo/audacity-nyquist > ```
 Re: [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-25 09:49:42 ```> How would you specify the spline? linearly it would be (current frequency)/(max frequency)*(dB adjustment) = (dB adjustment) my current math is more like (current gain for frequency) = (previous gain for frequency) * 0.75 (over 20-ish bands, going from highest to lowest). Which works pretty good using audacities 15 band mutiband eq and a value closer to 0.60. But I'm wanting something less step ladder and needing only one or two values (with defaults) on the effects initiation. Not that I know if nyquist supports it, but some sort of sin / cos arc averaged with the linear model to determine the depth of the arc. Based on the bottom right quadrant of a circle from lowest Hz to highest Hz. Or something like that. Perhaps some averaging to 2 line + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just the implementation of actually doing the eq that seems problematic right now. At a minimum the math for x^2+y^2=r^2 seems to be implemented. Where r is the max frequency, x is the current frequency and y the unknown would be scaled to the gain adjustment ((y/max frequency)*dB). But it's not that math that's got me stumped. It's how to use the result to affect the eq with the least issues. - James ```
 Re: [Audacity-nyquist] eq-band and "width" From: Roger Dannenberg - 2010-10-25 11:57:35 ```On 10/25/10 5:49 AM, James Shatto wrote: >> How would you specify the spline? > linearly it would be (current frequency)/(max frequency)*(dB > adjustment) = (dB adjustment) > > my current math is more like (current gain for frequency) = (previous > gain for frequency) * 0.75 (over 20-ish bands, going from highest to > lowest). > > Which works pretty good using audacities 15 band mutiband eq and a > value closer to 0.60. But I'm wanting something less step ladder and > needing only one or two values (with defaults) on the effects > initiation. > > Not that I know if nyquist supports it, but some sort of sin / cos arc > averaged with the linear model to determine the depth of the arc. > Based on the bottom right quadrant of a circle from lowest Hz to > highest Hz. Or something like that. Perhaps some averaging to 2 line > + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just > the implementation of actually doing the eq that seems problematic > right now. At a minimum the math for x^2+y^2=r^2 seems to be > implemented. Where r is the max frequency, x is the current frequency > and y the unknown would be scaled to the gain adjustment ((y/max > frequency)*dB). But it's not that math that's got me stumped. It's > how to use the result to affect the eq with the least issues. > > - James > OK, you could try the NBAND-RANGE function. Here, I believe frequency bands are geometrically spaced rather than linear, but you can compute an array of gains. If you tell me whether you are using Lisp or SAL, I think I can send a small example that computes a set of gains for NBAND-RANGE. (I still think for a few dB, you are better off with only a few bands, but if you like the sound, that's the ultimate test.) -Roger ```
 Re: [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-25 16:40:15 ```Based on the band being frequency/width to frequency*width, that really simplified what I was trying to do. For 22-ish bands the width would be 1.2-ish. Which places the 22nd band up past sampling rates of 48kHz, so I don't know if that will be problematic for samples at or less than 48kHz. Most of my samples are in the 192kHz / 96kHz realm, so not a problem for me (at the moment). I'll probably want to expand it later to allow a variable width and therefor variable bands. And I'm still not entirely sure if it does exactly what I want. But it does seem to work. And with most of the desired effect. In some respects better than expected, but I've still got to run the results through the ringer. i.e. downsample the long way to maximize clarity. http://home.earthlink.net/~shadow_7/FauxFurEQ.ny Feel free to set me straight if my logic is based on misunderstanding. It wouldn't be the first time. - James On 10/25/10, Roger Dannenberg wrote: > On 10/25/10 5:49 AM, James Shatto wrote: >>> How would you specify the spline? >> linearly it would be (current frequency)/(max frequency)*(dB >> adjustment) = (dB adjustment) >> >> my current math is more like (current gain for frequency) = (previous >> gain for frequency) * 0.75 (over 20-ish bands, going from highest to >> lowest). >> >> Which works pretty good using audacities 15 band mutiband eq and a >> value closer to 0.60. But I'm wanting something less step ladder and >> needing only one or two values (with defaults) on the effects >> initiation. >> >> Not that I know if nyquist supports it, but some sort of sin / cos arc >> averaged with the linear model to determine the depth of the arc. >> Based on the bottom right quadrant of a circle from lowest Hz to >> highest Hz. Or something like that. Perhaps some averaging to 2 line >> + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just >> the implementation of actually doing the eq that seems problematic >> right now. At a minimum the math for x^2+y^2=r^2 seems to be >> implemented. Where r is the max frequency, x is the current frequency >> and y the unknown would be scaled to the gain adjustment ((y/max >> frequency)*dB). But it's not that math that's got me stumped. It's >> how to use the result to affect the eq with the least issues. >> >> - James >> > OK, you could try the NBAND-RANGE function. Here, I believe frequency > bands are geometrically spaced rather than linear, but you can compute > an array of gains. If you tell me whether you are using Lisp or SAL, I > think I can send a small example that computes a set of gains for > NBAND-RANGE. > > (I still think for a few dB, you are better off with only a few bands, > but if you like the sound, that's the ultimate test.) > > -Roger > > > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America contest > Create new apps & games for the Nokia N8 for consumers in U.S. and Canada > \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Audacity-nyquist mailing list > Audacity-nyquist@... > https://lists.sourceforge.net/lists/listinfo/audacity-nyquist > ```
 Re: [Audacity-nyquist] eq-band and "width" From: Stevethefiddle - 2010-10-25 18:18:19 ```If you are running this in Audacity, have you considered using "Draw Curves" in the Equalizer effect? (available in Audacity 1.3.x). Custom curves may be saved and reused when you need them. -- View this message in context: http://audacity.238276.n2.nabble.com/eq-band-and-width-tp5668375p5671802.html Sent from the audacity-nyquist mailing list archive at Nabble.com. ```
 Re: [Audacity-nyquist] eq-band and "width" From: Roger Dannenberg - 2010-10-25 18:36:04 ```On 10/25/10 12:40 PM, James Shatto wrote: > Based on the band being frequency/width to frequency*width, that > really simplified what I was trying to do. For 22-ish bands the width > would be 1.2-ish. Which places the 22nd band up past sampling rates > of 48kHz, so I don't know if that will be problematic for samples at > or less than 48kHz. Most of my samples are in the 192kHz / 96kHz > realm, so not a problem for me (at the moment). > > I'll probably want to expand it later to allow a variable width and > therefor variable bands. And I'm still not entirely sure if it does > exactly what I want. But it does seem to work. And with most of the > desired effect. In some respects better than expected, but I've still > got to run the results through the ringer. i.e. downsample the long > way to maximize clarity. > > http://home.earthlink.net/~shadow_7/FauxFurEQ.ny I took a look here: it looks like your width parameter is 1.2, but bands go from freq/1.2 to freq*1.2. Your bandwidth is 1.44, but you need to specify this in octaves. A ratio of 1.44 is 0.526069 octaves, so the width parameter to eq-band should be 0.526069. That's if you want the filter response to be gain/2 at freq/1.2 and freq*1.2. You could increase or decrease width to get more or less overlap. There's no need to write out equations for each band -- you could use a loop to simplify the code (or maybe that would "complexify" it by adding control constructs and data structures). The nband-range function uses a loops-and-array approach to do something similar. -Roger > Feel free to set me straight if my logic is based on misunderstanding. > It wouldn't be the first time. > > - James > > > On 10/25/10, Roger Dannenberg wrote: >> On 10/25/10 5:49 AM, James Shatto wrote: >>>> How would you specify the spline? >>> linearly it would be (current frequency)/(max frequency)*(dB >>> adjustment) = (dB adjustment) >>> >>> my current math is more like (current gain for frequency) = (previous >>> gain for frequency) * 0.75 (over 20-ish bands, going from highest to >>> lowest). >>> >>> Which works pretty good using audacities 15 band mutiband eq and a >>> value closer to 0.60. But I'm wanting something less step ladder and >>> needing only one or two values (with defaults) on the effects >>> initiation. >>> >>> Not that I know if nyquist supports it, but some sort of sin / cos arc >>> averaged with the linear model to determine the depth of the arc. >>> Based on the bottom right quadrant of a circle from lowest Hz to >>> highest Hz. Or something like that. Perhaps some averaging to 2 line >>> + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just >>> the implementation of actually doing the eq that seems problematic >>> right now. At a minimum the math for x^2+y^2=r^2 seems to be >>> implemented. Where r is the max frequency, x is the current frequency >>> and y the unknown would be scaled to the gain adjustment ((y/max >>> frequency)*dB). But it's not that math that's got me stumped. It's >>> how to use the result to affect the eq with the least issues. >>> >>> - James >>> >> OK, you could try the NBAND-RANGE function. Here, I believe frequency >> bands are geometrically spaced rather than linear, but you can compute >> an array of gains. If you tell me whether you are using Lisp or SAL, I >> think I can send a small example that computes a set of gains for >> NBAND-RANGE. >> >> (I still think for a few dB, you are better off with only a few bands, >> but if you like the sound, that's the ultimate test.) >> >> -Roger ```
 Re: [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-25 19:55:53 ```I guess I'm not understanding this version of octaves. Simple physic has a string cut in half is an octave up, doubled in length is an octave down. My interpretation translated to Hz is Hz/2 = down an octave and Hz*2 = up an octave. I'm using 1.2 for pseudo octaves for more bands. What would be the formula for width in this case? (sqrt (mult 1.2 1.2)) ? Isn't that 1.2? Or is it more complex? Ultimately I'll use a loop, just keeping it simple to get the jist of it for now. aka Semi-Human readable. On 10/25/10, Roger Dannenberg wrote: > On 10/25/10 12:40 PM, James Shatto wrote: >> Based on the band being frequency/width to frequency*width, that >> really simplified what I was trying to do. For 22-ish bands the width >> would be 1.2-ish. Which places the 22nd band up past sampling rates >> of 48kHz, so I don't know if that will be problematic for samples at >> or less than 48kHz. Most of my samples are in the 192kHz / 96kHz >> realm, so not a problem for me (at the moment). >> >> I'll probably want to expand it later to allow a variable width and >> therefor variable bands. And I'm still not entirely sure if it does >> exactly what I want. But it does seem to work. And with most of the >> desired effect. In some respects better than expected, but I've still >> got to run the results through the ringer. i.e. downsample the long >> way to maximize clarity. >> >> http://home.earthlink.net/~shadow_7/FauxFurEQ.ny > I took a look here: it looks like your width parameter is 1.2, but bands > go from freq/1.2 to freq*1.2. Your bandwidth is 1.44, but you need to > specify this in octaves. A ratio of 1.44 is 0.526069 octaves, so the > width parameter to eq-band should be 0.526069. That's if you want the > filter response to be gain/2 at freq/1.2 and freq*1.2. You could > increase or decrease width to get more or less overlap. > > There's no need to write out equations for each band -- you could use a > loop to simplify the code (or maybe that would "complexify" it by adding > control constructs and data structures). The nband-range function uses a > loops-and-array approach to do something similar. > > -Roger >> Feel free to set me straight if my logic is based on misunderstanding. >> It wouldn't be the first time. >> >> - James >> >> >> On 10/25/10, Roger Dannenberg wrote: >>> On 10/25/10 5:49 AM, James Shatto wrote: >>>>> How would you specify the spline? >>>> linearly it would be (current frequency)/(max frequency)*(dB >>>> adjustment) = (dB adjustment) >>>> >>>> my current math is more like (current gain for frequency) = (previous >>>> gain for frequency) * 0.75 (over 20-ish bands, going from highest to >>>> lowest). >>>> >>>> Which works pretty good using audacities 15 band mutiband eq and a >>>> value closer to 0.60. But I'm wanting something less step ladder and >>>> needing only one or two values (with defaults) on the effects >>>> initiation. >>>> >>>> Not that I know if nyquist supports it, but some sort of sin / cos arc >>>> averaged with the linear model to determine the depth of the arc. >>>> Based on the bottom right quadrant of a circle from lowest Hz to >>>> highest Hz. Or something like that. Perhaps some averaging to 2 line >>>> + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just >>>> the implementation of actually doing the eq that seems problematic >>>> right now. At a minimum the math for x^2+y^2=r^2 seems to be >>>> implemented. Where r is the max frequency, x is the current frequency >>>> and y the unknown would be scaled to the gain adjustment ((y/max >>>> frequency)*dB). But it's not that math that's got me stumped. It's >>>> how to use the result to affect the eq with the least issues. >>>> >>>> - James >>>> >>> OK, you could try the NBAND-RANGE function. Here, I believe frequency >>> bands are geometrically spaced rather than linear, but you can compute >>> an array of gains. If you tell me whether you are using Lisp or SAL, I >>> think I can send a small example that computes a set of gains for >>> NBAND-RANGE. >>> >>> (I still think for a few dB, you are better off with only a few bands, >>> but if you like the sound, that's the ultimate test.) >>> >>> -Roger > > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America contest > Create new apps & games for the Nokia N8 for consumers in U.S. and Canada > \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Audacity-nyquist mailing list > Audacity-nyquist@... > https://lists.sourceforge.net/lists/listinfo/audacity-nyquist > ```
 Re: [Audacity-nyquist] eq-band and "width" From: Roger Dannenberg - 2010-10-25 20:16:54 ```Maybe this will help. Suppose instead of 1.2, you use 8. That is, Hz/8 for the low frequency, and Hz*8 for the high frequency. (I'm using a really big number, 8, even though it is not a practical value.) A factor of 8 is 3 octaves (2*2*2). So that's 3 octaves down and 3 octaves up. The width is therefore 3+3=6. It is not 8; it is not sqrt(8) or sqrt(8*8). 6 is log-base-2(8*8). I had some more math in a previous message, and maybe the text below will make more sense now. -Roger On 10/25/10 3:55 PM, James Shatto wrote: > I guess I'm not understanding this version of octaves. Simple physic > has a string cut in half is an octave up, doubled in length is an > octave down. My interpretation translated to Hz is Hz/2 = down an > octave and Hz*2 = up an octave. I'm using 1.2 for pseudo octaves for > more bands. What would be the formula for width in this case? (sqrt > (mult 1.2 1.2)) ? Isn't that 1.2? Or is it more complex? > > Ultimately I'll use a loop, just keeping it simple to get the jist of > it for now. aka Semi-Human readable. > > > On 10/25/10, Roger Dannenberg wrote: >> On 10/25/10 12:40 PM, James Shatto wrote: >>> Based on the band being frequency/width to frequency*width, that >>> really simplified what I was trying to do. For 22-ish bands the width >>> would be 1.2-ish. Which places the 22nd band up past sampling rates >>> of 48kHz, so I don't know if that will be problematic for samples at >>> or less than 48kHz. Most of my samples are in the 192kHz / 96kHz >>> realm, so not a problem for me (at the moment). >>> >>> I'll probably want to expand it later to allow a variable width and >>> therefor variable bands. And I'm still not entirely sure if it does >>> exactly what I want. But it does seem to work. And with most of the >>> desired effect. In some respects better than expected, but I've still >>> got to run the results through the ringer. i.e. downsample the long >>> way to maximize clarity. >>> >>> http://home.earthlink.net/~shadow_7/FauxFurEQ.ny >> I took a look here: it looks like your width parameter is 1.2, but bands >> go from freq/1.2 to freq*1.2. Your bandwidth is 1.44, but you need to >> specify this in octaves. A ratio of 1.44 is 0.526069 octaves, so the >> width parameter to eq-band should be 0.526069. That's if you want the >> filter response to be gain/2 at freq/1.2 and freq*1.2. You could >> increase or decrease width to get more or less overlap. >> >> There's no need to write out equations for each band -- you could use a >> loop to simplify the code (or maybe that would "complexify" it by adding >> control constructs and data structures). The nband-range function uses a >> loops-and-array approach to do something similar. >> >> -Roger >>> Feel free to set me straight if my logic is based on misunderstanding. >>> It wouldn't be the first time. >>> >>> - James >>> >>> >>> On 10/25/10, Roger Dannenberg wrote: >>>> On 10/25/10 5:49 AM, James Shatto wrote: >>>>>> How would you specify the spline? >>>>> linearly it would be (current frequency)/(max frequency)*(dB >>>>> adjustment) = (dB adjustment) >>>>> >>>>> my current math is more like (current gain for frequency) = (previous >>>>> gain for frequency) * 0.75 (over 20-ish bands, going from highest to >>>>> lowest). >>>>> >>>>> Which works pretty good using audacities 15 band mutiband eq and a >>>>> value closer to 0.60. But I'm wanting something less step ladder and >>>>> needing only one or two values (with defaults) on the effects >>>>> initiation. >>>>> >>>>> Not that I know if nyquist supports it, but some sort of sin / cos arc >>>>> averaged with the linear model to determine the depth of the arc. >>>>> Based on the bottom right quadrant of a circle from lowest Hz to >>>>> highest Hz. Or something like that. Perhaps some averaging to 2 line >>>>> + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just >>>>> the implementation of actually doing the eq that seems problematic >>>>> right now. At a minimum the math for x^2+y^2=r^2 seems to be >>>>> implemented. Where r is the max frequency, x is the current frequency >>>>> and y the unknown would be scaled to the gain adjustment ((y/max >>>>> frequency)*dB). But it's not that math that's got me stumped. It's >>>>> how to use the result to affect the eq with the least issues. >>>>> >>>>> - James >>>>> >>>> OK, you could try the NBAND-RANGE function. Here, I believe frequency >>>> bands are geometrically spaced rather than linear, but you can compute >>>> an array of gains. If you tell me whether you are using Lisp or SAL, I >>>> think I can send a small example that computes a set of gains for >>>> NBAND-RANGE. >>>> >>>> (I still think for a few dB, you are better off with only a few bands, >>>> but if you like the sound, that's the ultimate test.) >>>> >>>> -Roger >> ------------------------------------------------------------------------------ >> Nokia and AT&T present the 2010 Calling All Innovators-North America contest >> Create new apps& games for the Nokia N8 for consumers in U.S. and Canada >> \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing >> Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store >> http://p.sf.net/sfu/nokia-dev2dev >> _______________________________________________ >> Audacity-nyquist mailing list >> Audacity-nyquist@... >> https://lists.sourceforge.net/lists/listinfo/audacity-nyquist >> > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America contest > Create new apps& games for the Nokia N8 for consumers in U.S. and Canada > \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Audacity-nyquist mailing list > Audacity-nyquist@... > https://lists.sourceforge.net/lists/listinfo/audacity-nyquist > ```
 Re: [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-26 02:13:37 ```Thanks. I just didn't have a clue of how you came up with 0.5..... So log-base-2(1.2*1.2) returns that value. I can't quite find a log-base-2 equivalent in code for nyquist 1.37, that is supposedly what audacity's nyquist is based on. But the pdf version I downloaded isn't that searchable given the "log"ical word used everywhere and stuff. At least the taskbar calculator app has that function. What a difference a day makes. With the correct width(or at least close enough), so far so good. Lots of old captures to re-render to get the full feel for it. But nice to have that little bit of high end sheen that makes it sound like less of a recording, and more like being there. Without all the oddness. Now what to do about all those crickets (and small kids) that were otherwise tamed by the HF loss from faux fur. - James On 10/25/10, Roger Dannenberg wrote: > Maybe this will help. Suppose instead of 1.2, you use 8. That is, Hz/8 > for the low frequency, and Hz*8 for the high frequency. (I'm using a > really big number, 8, even though it is not a practical value.) A factor > of 8 is 3 octaves (2*2*2). So that's 3 octaves down and 3 octaves up. > The width is therefore 3+3=6. It is not 8; it is not sqrt(8) or > sqrt(8*8). 6 is log-base-2(8*8). I had some more math in a previous > message, and maybe the text below will make more sense now. -Roger > > On 10/25/10 3:55 PM, James Shatto wrote: >> I guess I'm not understanding this version of octaves. Simple physic >> has a string cut in half is an octave up, doubled in length is an >> octave down. My interpretation translated to Hz is Hz/2 = down an >> octave and Hz*2 = up an octave. I'm using 1.2 for pseudo octaves for >> more bands. What would be the formula for width in this case? (sqrt >> (mult 1.2 1.2)) ? Isn't that 1.2? Or is it more complex? >> >> Ultimately I'll use a loop, just keeping it simple to get the jist of >> it for now. aka Semi-Human readable. >> >> >> On 10/25/10, Roger Dannenberg wrote: >>> On 10/25/10 12:40 PM, James Shatto wrote: >>>> Based on the band being frequency/width to frequency*width, that >>>> really simplified what I was trying to do. For 22-ish bands the width >>>> would be 1.2-ish. Which places the 22nd band up past sampling rates >>>> of 48kHz, so I don't know if that will be problematic for samples at >>>> or less than 48kHz. Most of my samples are in the 192kHz / 96kHz >>>> realm, so not a problem for me (at the moment). >>>> >>>> I'll probably want to expand it later to allow a variable width and >>>> therefor variable bands. And I'm still not entirely sure if it does >>>> exactly what I want. But it does seem to work. And with most of the >>>> desired effect. In some respects better than expected, but I've still >>>> got to run the results through the ringer. i.e. downsample the long >>>> way to maximize clarity. >>>> >>>> http://home.earthlink.net/~shadow_7/FauxFurEQ.ny >>> I took a look here: it looks like your width parameter is 1.2, but bands >>> go from freq/1.2 to freq*1.2. Your bandwidth is 1.44, but you need to >>> specify this in octaves. A ratio of 1.44 is 0.526069 octaves, so the >>> width parameter to eq-band should be 0.526069. That's if you want the >>> filter response to be gain/2 at freq/1.2 and freq*1.2. You could >>> increase or decrease width to get more or less overlap. >>> >>> There's no need to write out equations for each band -- you could use a >>> loop to simplify the code (or maybe that would "complexify" it by adding >>> control constructs and data structures). The nband-range function uses a >>> loops-and-array approach to do something similar. >>> >>> -Roger >>>> Feel free to set me straight if my logic is based on misunderstanding. >>>> It wouldn't be the first time. >>>> >>>> - James >>>> >>>> >>>> On 10/25/10, Roger Dannenberg wrote: >>>>> On 10/25/10 5:49 AM, James Shatto wrote: >>>>>>> How would you specify the spline? >>>>>> linearly it would be (current frequency)/(max frequency)*(dB >>>>>> adjustment) = (dB adjustment) >>>>>> >>>>>> my current math is more like (current gain for frequency) = (previous >>>>>> gain for frequency) * 0.75 (over 20-ish bands, going from highest to >>>>>> lowest). >>>>>> >>>>>> Which works pretty good using audacities 15 band mutiband eq and a >>>>>> value closer to 0.60. But I'm wanting something less step ladder and >>>>>> needing only one or two values (with defaults) on the effects >>>>>> initiation. >>>>>> >>>>>> Not that I know if nyquist supports it, but some sort of sin / cos arc >>>>>> averaged with the linear model to determine the depth of the arc. >>>>>> Based on the bottom right quadrant of a circle from lowest Hz to >>>>>> highest Hz. Or something like that. Perhaps some averaging to 2 line >>>>>> + 1 arc / 3 or 1 arc + 2 line / 3 type slider to tweak it. It's just >>>>>> the implementation of actually doing the eq that seems problematic >>>>>> right now. At a minimum the math for x^2+y^2=r^2 seems to be >>>>>> implemented. Where r is the max frequency, x is the current frequency >>>>>> and y the unknown would be scaled to the gain adjustment ((y/max >>>>>> frequency)*dB). But it's not that math that's got me stumped. It's >>>>>> how to use the result to affect the eq with the least issues. >>>>>> >>>>>> - James >>>>>> >>>>> OK, you could try the NBAND-RANGE function. Here, I believe frequency >>>>> bands are geometrically spaced rather than linear, but you can compute >>>>> an array of gains. If you tell me whether you are using Lisp or SAL, I >>>>> think I can send a small example that computes a set of gains for >>>>> NBAND-RANGE. >>>>> >>>>> (I still think for a few dB, you are better off with only a few bands, >>>>> but if you like the sound, that's the ultimate test.) >>>>> >>>>> -Roger >>> ------------------------------------------------------------------------------ >>> Nokia and AT&T present the 2010 Calling All Innovators-North America >>> contest >>> Create new apps& games for the Nokia N8 for consumers in U.S. and >>> Canada >>> \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in >>> marketing >>> Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store >>> http://p.sf.net/sfu/nokia-dev2dev >>> _______________________________________________ >>> Audacity-nyquist mailing list >>> Audacity-nyquist@... >>> https://lists.sourceforge.net/lists/listinfo/audacity-nyquist >>> >> ------------------------------------------------------------------------------ >> Nokia and AT&T present the 2010 Calling All Innovators-North America >> contest >> Create new apps& games for the Nokia N8 for consumers in U.S. and Canada >> \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in >> marketing >> Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store >> http://p.sf.net/sfu/nokia-dev2dev >> _______________________________________________ >> Audacity-nyquist mailing list >> Audacity-nyquist@... >> https://lists.sourceforge.net/lists/listinfo/audacity-nyquist >> > > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America contest > Create new apps & games for the Nokia N8 for consumers in U.S. and Canada > \$10 million total in prizes - \$4M cash, 500 devices, nearly \$6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Audacity-nyquist mailing list > Audacity-nyquist@... > https://lists.sourceforge.net/lists/listinfo/audacity-nyquist > ```
 Re: [Audacity-nyquist] eq-band and "width" From: edgar - 2010-10-26 07:51:25 ``` > So log-base-2(1.2*1.2) returns that value. I can't quite find a > log-base-2 equivalent in code for nyquist 1.37, that is supposedly > what audacity's nyquist is based on. Audacity 1.3.x-beta is based on Nyquist 3.03, the Audacity 1.2.x code has not been updated since 2005 or similar. http://www.audacity-forum.de/download/edgar/nyquist/nyquist-doc/nyquist.htm log-base-2(1.2*1.2) using the XLISP log-base-e function: math: log2(n) = ln(n)/ln(2) = log(n)/log(2) Nyquist/XLISP: (defun log-base-2 (number) (/ (log (float number)) (log 2.0))) (log-base-2 (* 1.2 1.2)) => 0.526069 Hope that helps... - edgat -- The author of this email does not necessarily endorse the following advertisements, which are the sole responsibility of the advertiser: ```
 Re: [Audacity-nyquist] eq-band and "width" From: James Shatto - 2010-10-28 21:41:29 ```I changed to nband-range. Unfortunately it doesn't look like my version of audacity ships with that function. And not available in my distro either. So I had to download the nyquist sources and quite literally cut and paste it's definition into my routine. Copying grapheq.lsp straight to /usr/share/audacity/nyquist/ wasn't enough it seems. Once past that hurdle, it seems to be exactly what I needed / wanted. It would be nice to probably use nyquist directly and batch script the EQ step. The plugin is mainly to ID what values seem best suited. Somewhere near 3dB and 80% for each lower band of EQ gain. For my current project. So, any tips for file I/O howto / example with nyquist directly. To be executed from a bash prompt. And of course thanks for all your insights to help me figure this one out. - James On 10/24/10, Roger Dannenberg wrote: > There's a file in nyquist/lib/grapheq.lsp that implements NBAND-RANGE: > > |nband-rang/e//(input/, /gains/, /lowf/, /highf/)| ```
 Re: [Audacity-nyquist] eq-band and "width" From: Roger Dannenberg - 2010-11-02 14:33:13 ```On 10/28/10 5:41 PM, James Shatto wrote: > I changed to nband-range. Unfortunately it doesn't look like my > version of audacity ships with that function. And not available in my > distro either. So I had to download the nyquist sources and quite > literally cut and paste it's definition into my routine. Copying > grapheq.lsp straight to /usr/share/audacity/nyquist/ wasn't enough it > seems. Once past that hurdle, it seems to be exactly what I needed / > wanted. It would be nice to probably use nyquist directly and batch > script the EQ step. The plugin is mainly to ID what values seem best > suited. Somewhere near 3dB and 80% for each lower band of EQ gain. > For my current project. > > So, any tips for file I/O howto / example with nyquist directly. To > be executed from a bash prompt. And of course thanks for all your > insights to help me figure this one out. You can run nyquist from the command line, although for linux you'll have to download sources and build your own (there might be some packages available for some distros -- I'm not sure). Also, there are some build problems for 64-bit architectures I am working on (Nyquist has some dependencies on 32 bit addresses and must be compiled as a 32-bit application, although this is not a problem for Intel/AMD architectures since even 64-bit OS X and Linux can run 32-bit applications. Anyway, assuming you have the binary (named ny), the simplest thing to do is just invoke ny in a directory with init.lsp. Nyquist will load and execute the init.lsp file and you can exit by evaluating (EXIT). Functions are all documented, but to get you started (S-READ filename) returns audio, and (S-SAVE sound-expression NY:ALL filename :PLAY NIL) writes a sound to a file as fast as possible (or in real time with simultaneous playback if you leave off the :PLAY option or set it to T). > - James > > > On 10/24/10, Roger Dannenberg wrote: >> There's a file in nyquist/lib/grapheq.lsp that implements NBAND-RANGE: >> >> |nband-rang/e//(input/, /gains/, /lowf/, /highf/)| ```