You can subscribe to this list here.
2004 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}
(40) 
_{Dec}
(29) 

2005 
_{Jan}
(7) 
_{Feb}
(12) 
_{Mar}
(28) 
_{Apr}
(27) 
_{May}

_{Jun}
(13) 
_{Jul}
(4) 
_{Aug}
(7) 
_{Sep}
(1) 
_{Oct}
(2) 
_{Nov}
(32) 
_{Dec}
(49) 
2006 
_{Jan}
(31) 
_{Feb}
(16) 
_{Mar}
(15) 
_{Apr}
(15) 
_{May}
(21) 
_{Jun}
(1) 
_{Jul}
(1) 
_{Aug}
(5) 
_{Sep}
(2) 
_{Oct}
(21) 
_{Nov}

_{Dec}
(6) 
2007 
_{Jan}
(21) 
_{Feb}

_{Mar}

_{Apr}
(5) 
_{May}
(1) 
_{Jun}
(3) 
_{Jul}
(10) 
_{Aug}
(38) 
_{Sep}
(21) 
_{Oct}
(38) 
_{Nov}
(23) 
_{Dec}
(3) 
2008 
_{Jan}
(72) 
_{Feb}
(45) 
_{Mar}
(46) 
_{Apr}
(5) 
_{May}
(2) 
_{Jun}
(33) 
_{Jul}

_{Aug}
(9) 
_{Sep}
(6) 
_{Oct}
(1) 
_{Nov}
(17) 
_{Dec}
(73) 
2009 
_{Jan}
(20) 
_{Feb}
(28) 
_{Mar}
(7) 
_{Apr}
(24) 
_{May}
(8) 
_{Jun}
(59) 
_{Jul}
(38) 
_{Aug}
(25) 
_{Sep}
(19) 
_{Oct}
(40) 
_{Nov}
(43) 
_{Dec}
(53) 
2010 
_{Jan}
(22) 
_{Feb}
(12) 
_{Mar}
(14) 
_{Apr}
(4) 
_{May}
(29) 
_{Jun}
(26) 
_{Jul}
(7) 
_{Aug}
(14) 
_{Sep}
(16) 
_{Oct}
(34) 
_{Nov}
(13) 
_{Dec}
(8) 
2011 
_{Jan}

_{Feb}

_{Mar}
(1) 
_{Apr}
(1) 
_{May}

_{Jun}
(5) 
_{Jul}
(10) 
_{Aug}
(2) 
_{Sep}
(3) 
_{Oct}

_{Nov}
(1) 
_{Dec}
(1) 
2012 
_{Jan}

_{Feb}
(1) 
_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}
(4) 
_{Aug}

_{Sep}
(21) 
_{Oct}

_{Nov}

_{Dec}

2013 
_{Jan}

_{Feb}

_{Mar}
(1) 
_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}
(6) 
_{Nov}

_{Dec}

2014 
_{Jan}

_{Feb}
(2) 
_{Mar}

_{Apr}

_{May}
(1) 
_{Jun}

_{Jul}
(3) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 




1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
(8) 
22
(2) 
23

24

25
(2) 
26
(2) 
27
(1) 
28

29

30

31


From: Roger Dannenberg <rbd@cs...>  20060327 13:53:15

sndifft (and almost all "snd..." functions) are primitives implemented in C. For what it's worth, I would be surprised if there was any difference between the Audacity and Nyquist versions, as the fft code has been around quite some time. You can certainly compare sources to find out. You can also develop and test in Nyquist where debugging support is better, and then move your code to a plugin. I would recommend this, because as some point you are probably going to be writing some fairly lowlevel code that steps through FFT coefficient arrays and you want to make debugging as easy as possible. Roger 
From: David R. Sky <davidsky@sh...>  20060326 16:51:39

Hi Kurt, If you can locate where sndfft is located in the 'standalone' version of= =20 Nyquist (that is, in which .lsp file), then copy and paste the defun of=20 sndfft into your plugin. It should work as long as all the individual=20 functions used to define sndfft are themselves defined in Audacity's=20 version of Nyquist. David On Sun, 26 Mar 2006, Kurt Zawiedek wrote: > Hi Alex! > > Thanks for your quick answer. Indeed, we are currently working on the bas= ic=20 > input/output, in this case: ffttransform a sound and retransform it aga= in. > > The core function of what we want to do with the fftarray isn't included= in=20 > the code yet. > > We have also thought to develop it for Nyquist, but it would be very=20 > convienient to have it as a Audacity plugin. This would also give us bett= er=20 > possibilites to distribute it for the community. > > Therefore, we checking our options and looking for background info about= =20 > using 'sndifft' with a window in Audacity. > > We would even be willing to bugfix/hack Audacity's NY implementation. > > Thanks a lot so far, > > Kurt > > > > Alex S. Brown schrieb: > >> Kurt, >> >> Sorry that I cannot speak specifically to the fft functions you list, b= ut >> you >> definitely need to retest things that work in standalone Nyquist in >> Audacity. >> I know that Audacity does not always include the latest version of >> Nyquist, and >> there may be other reasons that some functions are missing or work >> differently >> in the two tools. I usually do a quick test function in Audacity before= I >> start >> writing a plugin around that function, because sometimes I run into >> issues >> like you have. >> >> Worst case, you could consider running your script in standalone Nyquis= t >> instead >> of Audacity, loading the sounds from files and saving the processed >> result. I >> like using Audacity better when I can for convenience, but if it is >> missing >> something essential, Nyquist can operate in a standalone mode to proces= s >> the >> sound, too. >> >> Alex >> >> Quoting Kurt Zawiedek <kurt.zawiedek@...>: >> >>=20 >> > Hi! >> >=20 >> >=20 >> > I'm looking for advice regarding the sndfft/sndifft implementation i= n=20 >> > Audacity. >> >=20 >> > An Audacity plugin (tested in 1.2.4) using fft only gets executed=20 >> > correctly when sndifft gets nil for window. Passing a window to sndi= fft=20 >> > results in an empty track, losing the data that should have been=20 >> > processed. >> >=20 >> >=20 >> > Trying to debug our code, we made two observations: >> >=20 >> > * sndfft works fine with and without a window. >> > * sndifft works fine with and without a window in Nyquist. >> >=20 >> > We asked us if the problem is located in the nyquist implementation in= =20 >> > Audacity rather than in our code. >> >=20 >> > Any hints? >> >=20 >> >=20 >> > Regards, Kurt >> >> >>  >> Alex S. Brown, PMP >> alexsbrown@... >> http: //www.alexsbrown.com/ >> http: //www.linkedin.com/in/alexsbrown >> >> >>  >> This SF.Net email is sponsored by xPML, a groundbreaking scripting >> language >> that extends applications into web and mobile media. Attend the live >> webcast >> and join the prime developer group breaking into this new coding >> territory! >> http://sel.asus.falkag.net/sel?cmd=3Dlnk&kid=3D110944&bid=3D241720&dat= =3D121642 >> _______________________________________________ >> Audacitynyquist mailing list >> Audacitynyquist@... >> https://lists.sourceforge.net/lists/listinfo/audacitynyquist >>=20 > > =20 > ################################################################## > # Parapsychologie, Hypnose, Mind Control  ES WIRKT TATS=C4CHLICH! # > # WISSENSCHAFTLICH erwiesen, garantiert kein Betrug! # > # Erfahren Sie mehr: http://sundaychocolateclub.de # > ################################################################## > > >  > This SF.Net email is sponsored by xPML, a groundbreaking scripting langua= ge > that extends applications into web and mobile media. Attend the live webc= ast > and join the prime developer group breaking into this new coding territor= y! > http://sel.asus.falkag.net/sel?cmd=3Dlnk&kid=3D110944&bid=3D241720&dat= =3D121642 > _______________________________________________ > Audacitynyquist mailing list > Audacitynyquist@... > https://lists.sourceforge.net/lists/listinfo/audacitynyquist > > 
From: Kurt Zawiedek <kurt.zawiedek@t...>  20060326 12:12:34

Hi Alex! Thanks for your quick answer. Indeed, we are currently working on the basic input/output, in this case: ffttransform a sound and retransform it again. The core function of what we want to do with the fftarray isn't included in the code yet. We have also thought to develop it for Nyquist, but it would be very convienient to have it as a Audacity plugin. This would also give us better possibilites to distribute it for the community. Therefore, we checking our options and looking for background info about using 'sndifft' with a window in Audacity. We would even be willing to bugfix/hack Audacity's NY implementation. Thanks a lot so far, Kurt Alex S. Brown schrieb: > Kurt, > > Sorry that I cannot speak specifically to the fft functions you list, but you > definitely need to retest things that work in standalone Nyquist in Audacity. > I know that Audacity does not always include the latest version of Nyquist, and > there may be other reasons that some functions are missing or work differently > in the two tools. I usually do a quick test function in Audacity before I start > writing a plugin around that function, because sometimes I run into issues > like you have. > > Worst case, you could consider running your script in standalone Nyquist instead > of Audacity, loading the sounds from files and saving the processed result. I > like using Audacity better when I can for convenience, but if it is missing > something essential, Nyquist can operate in a standalone mode to process the > sound, too. > > Alex > > Quoting Kurt Zawiedek <kurt.zawiedek@...>: > > >>Hi! >> >> >>I'm looking for advice regarding the sndfft/sndifft implementation in >>Audacity. >> >>An Audacity plugin (tested in 1.2.4) using fft only gets executed >>correctly when sndifft gets nil for window. Passing a window to >>sndifft results in an empty track, losing the data that should have >>been processed. >> >> >>Trying to debug our code, we made two observations: >> >>* sndfft works fine with and without a window. >>* sndifft works fine with and without a window in Nyquist. >> >>We asked us if the problem is located in the nyquist implementation in >>Audacity rather than in our code. >> >>Any hints? >> >> >>Regards, Kurt > > >  > Alex S. Brown, PMP > alexsbrown@... > http://www.alexsbrown.com/ > http://www.linkedin.com/in/alexsbrown > > >  > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.asus.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Audacitynyquist mailing list > Audacitynyquist@... > https://lists.sourceforge.net/lists/listinfo/audacitynyquist >  ################################################################## # Parapsychologie, Hypnose, Mind Control  ES WIRKT TATSÄCHLICH! # # WISSENSCHAFTLICH erwiesen, garantiert kein Betrug! # # Erfahren Sie mehr: http://sundaychocolateclub.de # ################################################################## 
From: Alex S. Brown <alexsbrown@al...>  20060325 16:45:28

Kurt, Sorry that I cannot speak specifically to the fft functions you list, but you definitely need to retest things that work in standalone Nyquist in Audacity. I know that Audacity does not always include the latest version of Nyquist, and there may be other reasons that some functions are missing or work differently in the two tools. I usually do a quick test function in Audacity before I start writing a plugin around that function, because sometimes I run into issues like you have. Worst case, you could consider running your script in standalone Nyquist instead of Audacity, loading the sounds from files and saving the processed result. I like using Audacity better when I can for convenience, but if it is missing something essential, Nyquist can operate in a standalone mode to process the sound, too. Alex Quoting Kurt Zawiedek <kurt.zawiedek@...>: > Hi! > > > I'm looking for advice regarding the sndfft/sndifft implementation in > Audacity. > > An Audacity plugin (tested in 1.2.4) using fft only gets executed > correctly when sndifft gets nil for window. Passing a window to > sndifft results in an empty track, losing the data that should have > been processed. > > > Trying to debug our code, we made two observations: > > * sndfft works fine with and without a window. > * sndifft works fine with and without a window in Nyquist. > > We asked us if the problem is located in the nyquist implementation in > Audacity rather than in our code. > > Any hints? > > > Regards, Kurt  Alex S. Brown, PMP alexsbrown@... http://www.alexsbrown.com/ http://www.linkedin.com/in/alexsbrown 
From: Kurt Zawiedek <kurt.zawiedek@t...>  20060325 12:53:34

Hi! I'm looking for advice regarding the sndfft/sndifft implementation in Audacity. An Audacity plugin (tested in 1.2.4) using fft only gets executed correctly when sndifft gets nil for window. Passing a window to sndifft results in an empty track, losing the data that should have been processed. Trying to debug our code, we made two observations: * sndfft works fine with and without a window. * sndifft works fine with and without a window in Nyquist. We asked us if the problem is located in the nyquist implementation in Audacity rather than in our code. Any hints? Regards, Kurt  ################################################################## # Parapsychologie, Hypnose, Mind Control  ES WIRKT TATSÄCHLICH! # # WISSENSCHAFTLICH erwiesen, garantiert kein Betrug! # # Erfahren Sie mehr: http://sundaychocolateclub.de # ################################################################## 
From: David R. Sky <davidsky@sh...>  20060322 12:04:26

Thanks Roger. I was asking about convolution because I'd seen it in one of= =20 Gary's first posts. david On Tue, 21 Mar 2006, Roger Dannenberg wrote: > Nyquist does not have a fast convolution function, but it has a "na=EFve" > convolution function that should solve the task that was described in Gar= y > Nelson's post. If you need more speed, I might be able to speed it up, or > maybe someone else could do it. > > I didn't get what the goal was  convolution may be just what you need, = but > there are a variety of other, faster filters in Nyquist, and since there = was > some mention of sample rates, note that Nyquist also has highquality > resampling as a primitive. I think the way to deal with different sample > rates is to resample the filter impulse response before convolving. > > Finally, Gary asked about compiling to make things run faster. Nyquist is > interpreted, but the signal processing primitives are compiled and > optimized. Typically, Nyquist spends about 5% of the time running the Lis= p > interpreter and the rest in optimized C code, so in many cases there's > virtually no advantage to any further compilation. In many cases, > handoptimized C code will be slower than Nyquist because Nyquist's suppo= rt > for multiple sample rates and inline interpolation goes beyond what most > people would try to implement in C. There are definitely exceptions. E.g. > FFT's return Lisp arrays, so any FFT processing currently uses a lot of L= isp > code, which runs about 100 times slower than C. > > Roger > > > > >  > This SF.Net email is sponsored by xPML, a groundbreaking scripting langua= ge > that extends applications into web and mobile media. Attend the live webc= ast > and join the prime developer group breaking into this new coding territor= y! > http://sel.asus.falkag.net/sel?cmd______________________________________= _________ > Audacitynyquist mailing list > Audacitynyquist@... > https://lists.sourceforge.net/lists/listinfo/audacitynyquist > > 
From: Roger Dannenberg <rbd@cs...>  20060322 02:41:54

Nyquist does not have a fast convolution function, but it has a = "na=EFve" convolution function that should solve the task that was described in = Gary Nelson's post. If you need more speed, I might be able to speed it up, = or maybe someone else could do it. I didn't get what the goal was  convolution may be just what you need, = but there are a variety of other, faster filters in Nyquist, and since there = was some mention of sample rates, note that Nyquist also has highquality resampling as a primitive. I think the way to deal with different sample rates is to resample the filter impulse response before convolving. Finally, Gary asked about compiling to make things run faster. Nyquist = is interpreted, but the signal processing primitives are compiled and optimized. Typically, Nyquist spends about 5% of the time running the = Lisp interpreter and the rest in optimized C code, so in many cases there's virtually no advantage to any further compilation. In many cases, handoptimized C code will be slower than Nyquist because Nyquist's = support for multiple sample rates and inline interpolation goes beyond what = most people would try to implement in C. There are definitely exceptions. = E.g. FFT's return Lisp arrays, so any FFT processing currently uses a lot of = Lisp code, which runs about 100 times slower than C. Roger 
From: Alex S. Brown <alexsbrown@al...>  20060321 20:35:18

Gary, Besides using the standalone Nyquist, you can also write compiled plug ins for Audacity or for Nyquist itself. In that way you could use Nyquist as a prototyping language and then write a compilable version in C or some other language. Audacity supports LADSPA and VST plugins. See http://audacity.sourceforge.net/download/plugins for details. I do not know how to write them, but I understand these plugins can be authored and compiled. The full Nyquist documentation, which comes with the standalone package, includes instructions on how to write plugins for Nyquist. That might be the best of both worlds for you. You can read more in Appendix 1: http://www.cs.cmu.edu/~rbd/doc/nyquist/part14.html#139 If you review the whole documentation set, you will find other ways to link Nyquist into other libraries. Here is the main online documentation group: http://www.cs.cmu.edu/~rbd/doc/nyquist/root.html I see ways to call C routines, if you need to. I emphasize that I have never done these extensions myself, and some may not work with Audacity's version of Nyquist, but they are tools to try out. Quoting "David R. Sky" <davidsky@...>: > Gary wrote: > > Apparently Nyquist is an interpreted language? Is there any compiled > > version that we can use after we understand what wants to be done and we > > need to get more speed? > > > David: > Yes, there is a 'standalone' version of Nyquist, which can be accessed > somewhere on Roger Dannenberg's website > > http://www.cs.cmu.edu/~music/nyquist >  Alex S. Brown, PMP alexsbrown@... http://www.alexsbrown.com/ http://www.linkedin.com/in/alexsbrown 
From: Gary Nelson <gnelson@qu...>  20060321 19:12:42

David, I have the source for your Buzz Generator. I wonder if we could tag up by phone. I would appreciate a walk through of that code to understand how it works. I don't see how to get it into Audacity. I can call you as I have a flat rate phone service as long as you are in the US GN 
From: David R. Sky <davidsky@sh...>  20060321 18:15:25

Thanks very much Gary for your extensive explanations! I understood a lot of it as individual 'units', but I need to study it more offline. Gary wrote: > (convolve s {filename}){David's question:) > Gary: > === What is the syntax here? David: In audacity, 's' represents the selected sound by default. I was asking Roger and/or someone else on this list how to use convolve in Audacity. > (David previously:) Convolve is defined in Audacity dspprims.lsp as > > (defun convolve (s r) > (multichanexpand #'sndconvolve s r)) > > sndconvolve is not defined in any .lsp file, so I assume it's one > of the "builtin" functions (macros?) like sndtapv. > Gary: > ===Can we get the source code for these to see how they work? > David: I assume Roger can post that here. cheers David 
From: Gary Nelson <gnelson@qu...>  20060321 17:44:02

David, My earlier post described convolution without explicitly saying so. Convolution is a mathematical operation that can be done either with sampled data sequences or with continuous (idealiszed) functions.. We need to review the concepts of the Fourier Transform as well to get the whole picture. The Analyze/PlotSpectrum operation in Audacity computes the Fourier Transform and then shows us the magnitude of that computation. One thing that is going on here is the use of "Complex Numbers"  complex numbers have two dimensions  leftright (real part) and updown (imaginary part). Numbers are expressed z = x + iy where i = sqrt(1) This way of looking at complex numbers uses rectangular coordinates, but we can also express the same point on the complex plane (a piece of paper) in polar coordinates using a little vector from the origin (where xy meet) to the point z = x + iy. The length of the vector is a = sqrt(x^2 + y^2) and the angle from the xaxis will be angle = atan(y/x). Why is this an issue? When we invoke Analyze/PlotSpectrum, it takes the Fourier Transform of the selected audio and that result is a list of complex numbers. The spectrum is the list of lengths as above  sometimes called the amplitude spectrum. The angles could be shown and would be called the phase spectrum. In radio and optics the sqrt is not taken and the plot is called the power spectrum. A filter is most easily viewed from the frequency domain. We talk about filters as having passbands and corner frequencies and rolloffs. If we put a capacitor in series with an audio signal, it will block the DC part and will flatten out above some frequency assuming there is a resistor in there. The rolloff of such simple filters is 6dB/octave  the rolloff slope is 6dB/octave = 20dB/decade. If we were to make a digital filter that models a real world RC filter, we would use the Infinite Impulse Response (IIR) methods. If we add an inductor, we can make a filter that has 12dB/octave and the L and C will interact at some resonant frequency. Equalizers often use such filters where the Q setting expresses how the filter reacts at the resonant frequency  high Q makes a large gain. Those low frequency speakers we hear in lot of cars have a high Q at some frequency and make that awful BOOOM by amplifying the audio at the resonant freq of the tube. If we draw the shape of the filter in the frequency domain, it would have an amplitude and a phase part. If we do Generate/WhiteNoise and then Analyze/PlotSpectrum we will see that the spectrum of white noise is flat. Now do Effect/LowPassFilter (set at 4kHz for example) and then do the PlotSpectrum again. If you select log Freq, you will see that the slope of the filter is 6dB/octave. The shape you see is the Transfer Function of the filter (absent the phase info). In the frequency domain, we multiply the transfer function of the filter with the spectrum of the signal to get the spectrum of the result. It is possible to do an Inverse Fourier Transform to get the time domain signal of the filtered result. One point to take away is that when we multiply two functions in the frequency domain, we convolve them in the time domain. The converse is also true  multiply two functions in the time domain is equivalent to convolving their individual spectra in the frequency domain. So convolution takes a weighted moving average. A simple moving average might be to take the average of 10 samples to get one number, then move the window to the right and take the average again and repeat again and again as we slide the averaging window past the data (stock market data are often smoothed with a moving average). We could add up the 10 samples and divide by 10, or we could imagine the filter as having 10 taps each with a value of .1. Multiply each audio sample by the tap weight and sum  same result but now we can choose any values for the taps. We just convolved an FIR filter with some data that is audio for our purposes. Why Finite Impulse Response? Because the length of the filter is finite. ========= One of my questions regarding the FIR filter  what is convolution?I seem to have picked up that convolution can be used to simulate reverb of a large area such as a church, by using a recorded balloon "pop", then apply that reverb response to a different input signal. Great example. The popping balloon is an audio impulse. An ideal unit impulse is a pulse of zero width and infinite height with an area of one. The balloon pop is a real world approximation that excites the 3 dimensional transfer function of the room. If we pop a balloon in an anechoic chamber, and record the result with a B&K condenser mike, we will see the acoustic pulse of the result and the result will be largely uncolored by the mike as it is flat from say 10Hz to 40KHz and the room has no color if it is perfect. So now we go to a room and pop an identical balloon at some point in the room we will convolve the pulse with the 3D impulse response of the room and sample the result at some point in the room with a microphone. If we wanted to do this right, we would put 3 microphones pointing in 3 perpendicular directions to sample the audio response at each point  imagine a stereo pair with one more mike pointing perpendicular. The ideal would be to measure the sound pressure level coming from all directions. As you say, the reverb response is the impulse response of the room at the point where the measurement was made. If we were designing an auditorium, we would want to do this at all the seats in the house. Realistically, this would be done at a few points, but doing it at only one point would not necessarily provide conclusive results. If we compute the spectrum of the balloon pop recording we will see that the room has natural resonances so the spectrum of the pop is equivalent to the PlotSpectrum of filtered white noise we did earlier. If the room has a lot of hard surfaces, it will be like an equalizer with a high Q for each of the resonant frequencies of the room. What we are doing with audio signal processing is a onedimensional version of the above. A filter has a transfer function. If we apply a short pulse to the filter and measure the output, it will be amplitude versus time  one dimension. === I have not gotten any results from using convolve in audacity using the Nyquist definition below (which is the only Nyquist reference I've been able to find). Looking at it again, I suspect that I need to use a file for the response signal, is that correct? for example, (convolve s {filename}) === What is the syntax here? Convolve is the operation, s is the filter, (filename) When we invoke a filter in Audacity the output overwrites the input data. Perhaps we could create a new track? (convolve sound response) Convolves two signals. The first can be any length, but the computation time per sample and the total space required are proportional to the length of response. If the filter has length N and data has length M, we will need about N x M multiplyadd operations. Convolve is defined in Audacity dspprims.lsp as (defun convolve (s r) (multichanexpand #'sndconvolve s r)) sndconvolve is not defined in any .lsp file, so I assume it's one of the "builtin" functions (macros?) like sndtapv. ===Can we get the source code for these to see how they work? Thanks Gary 
From: David R. Sky <davidsky@sh...>  20060321 17:17:33

Gary wrote: > Thanks. I have followed your move to this list. > Is there any filter program we can start with to see how filtering is done? David: It sounds like you want some type of lowpass filter. There are several which are readytowork in Audacity: lp, lowpass2, lowpass4, lowpass6 and lowpass8, from single to 8pole Butterworth. (The lowpass filter under the Audacity effects menu uses the lp function. In Audacity, the sound which has been selected is by default 's'. If we call the cutoff frequency 'f', lp works like this: (lp s f) which works on mono and stereo signals. Lowpass2 through lowpass8 need a bit of code addition in order to work on stereo audio, but that's quite simple. You can test what the effects of running any Nyquist function by first selecting some audio in Audacity then using the Nyquist Prompt under the effects menu. With each of these lowpass filters the layout is the same: lowpass function, s, cutoff frequency. For instance: (lowpass2 s 1000) Gary: > Apparently Nyquist is an interpreted language? Is there any compiled > version that we can use after we understand what wants to be done and we > need to get more speed? > David: Yes, there is a 'standalone' version of Nyquist, which can be accessed somewhere on Roger Dannenberg's website http://www.cs.cmu.edu/~music/nyquist I may have missed an 'rbd/' before the music/. I have rarely used the standalone version because it doesn't work with my screen reader. In regard to processing at 88.2 khz, I think that can be done using 'forcesrate' (forcesrate 88200 {other code}) I _suspect_ you could try this with a lowpass filter: (forcesrate 88200 (lp s 44100)) which I think means 'apply a singlepole lowpass filter at cutoff frequency 44.1khz and sampling rate of 88.2khz'. I'm not sure if you already need your audio to have been sampled at 88.2khz. David 
From: Gary Nelson <gnelson@qu...>  20060321 16:26:32

David Thanks. I have followed your move to this list. Is there any filter program we can start with to see how filtering is done? Apparently Nyquist is an interpreted language? Is there any compiled version that we can use after we understand what wants to be done and we need to get more speed? Thanks Gary Original Message From: audacitynyquistadmin@... [mailto:audacitynyquistadmin@...] On Behalf Of David R. Sky Sent: Tuesday, March 21, 2006 12:09 AM To: Audacitynyquist@... Subject: [Audacitynyquist] RE: [Audacityusers] Antialiasing Finite Impulse Response (FIR) filter (fwd) Hi, I'd like to help the sender of the following email in creating the plugin he describes, but there are several things I don't yet understand. I'm not experienced enough with Nyquist/dsp yet to understand much of what Gary is talking about, and I'd like to learn. Is there somewhere in particular any of you would suggest starting (to learn)? Thanks David  Forwarded message  From: Gary Nelson < Subject: RE: [Audacityusers] Antialiasing Finite Impulse Response (FIR) filter David We need to convolve the impulse response of our FIR filter with the audio file in 32bit floating mode. The impulse response is an even function so we add a pair of samples to left and right of a center point and multiply by a filter coefficient. A trivial filter would have three coefficients, say .25, .5, .25. The coefficients add to 1 so that the filter has unity gain. We can make the filter have any gain by making the sum of the filter coefficients equal the desired gain. To convolve this filter with a file of audio samples, we would pad the file with an extra zero sample at each end, then position the filter centered on the first sample, add the sample to the left to the sample to the right, multiply by .25 and add the center sample * .5 to get the first filtered result. Then move the filter to the right one sample and do it again to create the second output sample. Slide the filter past all the audio samples to create the filtered output. If we want to discard every other sample, we can slide the filter to the right 2 samples to create the second desired output. The filter we will want to use will also have an odd number of samples where all the sample pairs at equal distances from the center will have the same value  ie, if we folded the impulse response about the center sample, the halves would be identical. That is the definition of an even function. The filter we want will have perhaps 1001 or so samples, but the concept will be the same as the trivial example above. What say we make the trivial example work to get the concept and structure of the solution, then expand to any number of samples. We can test the results by using the <Generate white noise> function and run our filter over it and then plot the spectrum. Also, if we can put the impulse response in an audio file and run the spectrum, we will see the transfer function of the filter. I think we want to make this filter start rolling off at about 19kHz and be down 100 dB by 22kHz and have no funny side lobes above 22.05kHz that will alias back into our audio band. Let's make this work without the decimation (bimation) first, and then add that feature. I don't understand how we will change the resulting file characteristics to say that its sample rate is 44.1 instead of 88.2. The file will be half as long and that also will need to be handled. I have perused the Nyquist documents and a couple examples, but can't say that I have any idea how to do this problem. I wrote a lot of these filter algorithms in assembly language years ago but am rusty to say the least. Thanks Gary Nelson  This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.asus.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642  Mailing list: Audacityusers@... To UNSUBSCRIBE, use the form at the bottom of this web page: https://lists.sourceforge.net/lists/listinfo/audacityusers  This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.asus.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ Audacitynyquist mailing list Audacitynyquist@... https://lists.sourceforge.net/lists/listinfo/audacitynyquist 
From: David R. Sky <davidsky@sh...>  20060321 08:51:06

One of my questions regarding the FIR filter  what is convolution?I seem to have picked up that convolution can be used to simulate reverb of a large area such as a church, by using a recorded balloon "pop", then apply that reverb response to a different input signal. I have not gotten any results from using convolve in audacity using the Nyquist definition below (which is the only Nyquist reference I've been able to find). Looking at it again, I suspect that I need to use a file for the response signal, is that correct? for example, (convolve s {filename}) (convolve sound response) Convolves two signals. The first can be any length, but the computation time per sample and the total space required are proportional to the length of response. Convolve is defined in Audacity dspprims.lsp as (defun convolve (s r) (multichanexpand #'sndconvolve s r)) sndconvolve is not defined in any .lsp file, so I assume it's one of the "builtin" functions (macros?) like sndtapv. Thanks David 
From: David R. Sky <davidsky@sh...>  20060321 08:08:40

Hi, I'd like to help the sender of the following email in creating the plugin he describes, but there are several things I don't yet understand. I'm not experienced enough with Nyquist/dsp yet to understand much of what Gary is talking about, and I'd like to learn. Is there somewhere in particular any of you would suggest starting (to learn)? Thanks David  Forwarded message  From: Gary Nelson < Subject: RE: [Audacityusers] Antialiasing Finite Impulse Response (FIR) filter David We need to convolve the impulse response of our FIR filter with the audio file in 32bit floating mode. The impulse response is an even function so we add a pair of samples to left and right of a center point and multiply by a filter coefficient. A trivial filter would have three coefficients, say .25, .5, .25. The coefficients add to 1 so that the filter has unity gain. We can make the filter have any gain by making the sum of the filter coefficients equal the desired gain. To convolve this filter with a file of audio samples, we would pad the file with an extra zero sample at each end, then position the filter centered on the first sample, add the sample to the left to the sample to the right, multiply by .25 and add the center sample * .5 to get the first filtered result. Then move the filter to the right one sample and do it again to create the second output sample. Slide the filter past all the audio samples to create the filtered output. If we want to discard every other sample, we can slide the filter to the right 2 samples to create the second desired output. The filter we will want to use will also have an odd number of samples where all the sample pairs at equal distances from the center will have the same value  ie, if we folded the impulse response about the center sample, the halves would be identical. That is the definition of an even function. The filter we want will have perhaps 1001 or so samples, but the concept will be the same as the trivial example above. What say we make the trivial example work to get the concept and structure of the solution, then expand to any number of samples. We can test the results by using the <Generate white noise> function and run our filter over it and then plot the spectrum. Also, if we can put the impulse response in an audio file and run the spectrum, we will see the transfer function of the filter. I think we want to make this filter start rolling off at about 19kHz and be down 100 dB by 22kHz and have no funny side lobes above 22.05kHz that will alias back into our audio band. Let's make this work without the decimation (bimation) first, and then add that feature. I don't understand how we will change the resulting file characteristics to say that its sample rate is 44.1 instead of 88.2. The file will be half as long and that also will need to be handled. I have perused the Nyquist documents and a couple examples, but can't say that I have any idea how to do this problem. I wrote a lot of these filter algorithms in assembly language years ago but am rusty to say the least. Thanks Gary Nelson  This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.asus.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642  Mailing list: Audacityusers@... To UNSUBSCRIBE, use the form at the bottom of this web page: https://lists.sourceforge.net/lists/listinfo/audacityusers 