A noise source is used in all the examples. A Butterworth is a particular class of filters; they provide good audio quality. The particular filters, we shall use, are 2nd order. The higher the order, the more accurate but with more computations. With other csound opcodes, you can build any kind of filter.
There are four kinds of filter you can have. The first is the low-pass, which passes frequencies below some frequency, and rejects, that is, attenuates, higher frequencies.
The high-pass filter works in the opposite manner, to the low-pass, and lets the higher frequencies pass.
The third kind of filter is the band-pass. This let's frequencies, in a certain range pass, while, rejecting those outside a range. Here, we have to give the frequency corresponding to the middle of band, as well as the bandwidth.
The band-reject filter is opposite to the band-pass. This passes frequencies outside the range of the band.
Here, we have instrument strings for Noise, to serve as reference, and a low-pass filtered noise.
These are strings showing the other 3 band filters.
Finally, the reference, and the four filtered noise signals are added to different instruments.
This creates a score, calling each instrument for a 2 second duration.
# Filters.py from moduleCsound import * addTag(startSyn,startOpt,stopOpt,startIns) header(nch=2) # *** Instrument Strings *** WhiteNoiseString=""" asig rand 0.6 out asig, asig """ LowPassString=""" asig rand 0.6 alp butterlp asig, 1000 ;passing frequencies below 1 KHz out alp, alp """ HighPassString=""" asig rand 0.6 ahp butterhp asig, 500 ;passing frequencies above 500 Hz out ahp, ahp """ BandPassString=""" asig rand 0.6 abp butterbp asig, 1000, 100 ;passing band from 950 to 1050 Hz out abp, abp """ BandRejectString=""" asig rand 0.6 abr butterbr asig, 10000, 10000 ;rejecting band from 5 kHz to 15 kHz out abr, abr """ instrument('White Noise',1,WhiteNoiseString) instrument('Low Pass',2,LowPassString) instrument('High Pass',3,HighPassString) instrument('Band Pass',4,BandPassString) instrument('Band Reject',5,BandRejectString) addTag(stopIns,startSco) # *** Table *** table('1. Sine wave',1,0,8192,10,1) # *** Score *** rem('Noise Filtering Score') for i in range(5): score(i+1,2*i,2) addTag(stopSco,stopSyn) writeRun('Tut25')
You will find additional information at pythonaudio.blogspot.com, including the source code.
This is the video of Tutorial 25: