 |
This module refers to LabVIEW, a software development environment that features a graphical programming language.
Please see the LabVIEW QuickStart Guide module for tutorials and documentation that will help you: |
| • Apply LabVIEW to Audio Signal Processing |
| • Get started with LabVIEW |
| • Obtain a fully-functional evaluation edition of LabVIEW |
Introduction
In the project activity of the prerequisite module
Karplus-Strong Plucked String Algorithm,
you undoubtedly noticed that
the pitch accuracy of the basic Karplus-Strong algorithm needs improvement. For example,
listen to the short MIDI test sequence
ksdemo.mid
rendered to audio with the basic algorithm using a sampling frequency of 20 kHz:
ksdemo_20kHz.wav. The individual notes sound reasonable,
but when the notes are played simultaneously as a chord, the pitch inaccuracy becomes noticeable.
The accuracy gets worse at lower sampling frequencies such as 10 kHz:
ksdemo_10kHz.wav; increasing the sampling frequency
improves the accuracy, as at 44.1 kHz:
ksdemo_44kHz.wav,
however, a discerning ear can still detect some problems.
The pitch of the plucked string tone is determined by the loop time, which must be made continuously
variable in order to precisely control the pitch. In the basic algorithm, the length of the delay line
determines the loop time, and the delay line can only be varied in integer amounts. The all-pass filter
will be introduced and studied in this module as a means to introduce an adjustable fractional delay into the loop.
As a preview of the results that you can achieve, consider the same MIDI test sequence rendered to audio using
the techniques introduced in this section:
ks2demo_10kHz.wav and
ks2demo_20kHz.wav.
Lowpass Filter Delay
In the
prerequisite module, the loop time was determined to be the product of the delay line length and the sampling interval.
The reciprocal of the loop time is the pitch (frequency) of the output signal
f
0
f
0
MathType@MTEF@5@5@+=feaagaart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8srps0lbbf9q8WrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbba9q8WqFfea0=yr0RYxir=Jbba9q8aq0=yq=He9q8qqQ8frFve9Fve9Ff0dmeaabaqaciGacaGaaeqabaWaaeaaeaaakeaacaWGMbWaaSbaaSqaaiaaicdaaeqaaaaa@3718@
:
f
0
=
f
S
N
f
0
=
f
S
N
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzamaaBaaaleaacaaIWaaabeaakiabg2da9maalaaabaGaamOzamaaBaaaleaacaWGtbaabeaaaOqaaiaad6eaaaaaaa@3AF8@
(1)
where
f
S
f
S
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzamaaBaaaleaacaWGtbaabeaaaaa@372A@
is the sampling frequency in Hz and
N
N
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOtaaaa@360E@
is the length of the delay line in samples. Because the delay line length must be an integer number of samples, the
pitch cannot be set arbitrarily.
Try the following exercises to explore this concept in more detail.
Problem 1
The sampling frequency is 40.00 kHz, and the length of the delay line is 40 samples.
What is the pitch of the output signal? If the delay line length is decreased by one sample,
what is the new pitch?
[
Click for Solution 1 ]
Solution 1
1000 Hz (40 kHz divided by 40 samples); 1026 Hz
[
Hide Solution 1 ]
Problem 2
The sampling frequency is 10.00 kHz, and the length of the delay line is 10 samples.
What is the pitch of the output signal? If the delay line length is decreased by one sample,
what is the new pitch?
[
Click for Solution 2 ]
Solution 2
1000 Hz (10 kHz divided by 10 samples); 1111 Hz
[
Hide Solution 2 ]
For each of the two exercises, the first pitch is exactly the same, i.e., 1000 Hz. However, the
change in pitch caused by decreasing the delay line by only one sample is substantial (1026 Hz compared
to 1111 Hz). But how perceptible is this difference? The module
Musical Intervals and the Equal-Tempered Scale includes a
LabVIEW interactive front panel that displays the frequency of each key on a standard 88-key piano.
Pitch C6 is 1046 Hz while pitch C♯6 (a half-step higher) is 1109 Hz. These values are similar
to the change from 1000 Hz to 1111 Hz caused by altering the delay line length by only one sample,
so the change is certainly very audible. The abrupt "jump" in frequency becomes less pronounced
at lower pitches where the delay line length is longer.
Flexibility to adjust the overall loop time in a
continuous fashion is required to improve pitch accuracy. Moreover, any sources of delay in the loop must be accurately known.
So far the delay of the low pass filter has been taken as zero, but in fact the low pass filter
introduces a delay of its own.
The
Figure 1 screencast video describes first how to calculate
the delay of an arbitrary digital filter with transfer function
H(z)
H(z)
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamisaiaacIcacaWG6bGaaiykaaaa@3860@
.
In general, therefore, the delay is the negated slope of the filter's phase function, and the
delay varies with frequency.
Now, consider the specific low pass filter used in the basic Karplus-Strong algorithm. The
filter coefficient "g" will be taken as 0.5, making the filter a true two-point averager:
H
LPF
(z)=
1+
z
−1
2
H
LPF
(z)=
1+
z
−1
2
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamisamaaBaaaleaacaqGmbGaaeiuaiaabAeaaeqaaOGaaiikaiaadQhacaGGPaGaeyypa0ZaaSaaaeaacaaIXaGaey4kaSIaamOEamaaCaaaleqabaGaeyOeI0IaaGymaaaaaOqaaiaaikdaaaaaaa@414E@
(2)
The
Figure 2 screencast video continues the discussion by
deriving the delay of the low pass filter of
Equation 2.
Several techniques for working with complex
numbers in LabVIEW are presented and used to visualize the magnitude and
phase response of the filter.
Because the delay of the low pass filter is always 1/2, the pitch may be expressed more precisely as
f
0
=
f
S
N+
1
2
f
0
=
f
S
N+
1
2
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzamaaBaaaleaacaaIWaaabeaakiabg2da9maalaaabaGaamOzamaaBaaaleaacaWGtbaabeaaaOqaaiaad6eacqGHRaWkdaWcaaqaaiaaigdaaeaacaaIYaaaaaaaaaa@3D61@
(3)
While this result more accurately calculates the pitch, it does nothing to address the frequency
resolution problem.
All-Pass Filter Delay
Now, consider the all-pass filter (APF) as a means to introduce a variable
and fractional delay into the loop. The all-pass filter has a unit magnitude response over all
frequencies, so it does not "color" the signal passing through. However, the all-pass filter has
a phase response that is approximately linear for all but the highest frequencies, so it introduces
an approximately constant delay. Even better, the slope of the phase response is continuously variable,
making it possible to adjust the delay as needed between 0 and 1 samples.
The all-pass filter transfer function is
H
APF
(z)=
C+
z
−1
1+C
z
−1
H
APF
(z)=
C+
z
−1
1+C
z
−1
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamisamaaBaaaleaacaqGbbGaaeiuaiaabAeaaeqaaOGaaiikaiaadQhacaGGPaGaeyypa0ZaaSaaaeaacaWGdbGaey4kaSIaamOEamaaCaaaleqabaGaeyOeI0IaaGymaaaaaOqaaiaaigdacqGHRaWkcaWGdbGaamOEamaaCaaaleqabaGaeyOeI0IaaGymaaaaaaaaaa@45CD@
(4)
where
| C |<1
| C |<1
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaWaaqWaaeaacaWGdbaacaGLhWUaayjcSdGaeyipaWJaaGymaaaa@3AE4@
to ensure stability.
The
Figure 3 screencast video continues the discussion by
exploring the delay of the all-pass filter of
Equation 4 as a function
of the parameter C.
Implementing the Pitch-Accurate Algorithm
Including the all-pass filter in the basic Karplus-Strong algorithm allows the loop time to be
set to an arbitrary value, making it possible to sound a tone with any desired pitch.
This section guides you through the necessary steps to augment the basic algorithm with an
all-pass filter, including the derivation of necessary equations to calculate the delay line
length and the fractional delay. Work through the derivations requested by each of the exercises.
To begin, the pitch of the output signal is the sampling frequency
f
S
f
S
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzamaaBaaaleaacaaIWaaabeaaaaa@370C@
divided by the total loop delay in samples:
f
0
=
f
S
N+
1
2
+Δ
f
0
=
f
S
N+
1
2
+Δ
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzamaaBaaaleaacaaIWaaabeaakiabg2da9maalaaabaGaamOzamaaBaaaleaacaWGtbaabeaaaOqaaiaad6eacqGHRaWkdaWcaaqaaiaaigdaaeaacaaIYaaaaiabgUcaRiabfs5aebaaaaa@3FA9@
(5)
where
Δ
Δ
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeuiLdqeaaa@36A1@
is the fractional delay introduced by the all-pass filter.
Problem 3
Refer to
Equation 5. Derive a pair of equations that can be used to calculate the length of
the delay line
N
N
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOtaaaa@360E@
and the value of the fractional delay
Δ
Δ
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeuiLdqeaaa@36A1@
.
[
Click for Solution 3 ]
Solution 3
N=⌊
f
S
f
0
−
1
2
⌋
N=⌊
f
S
f
0
−
1
2
⌋
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOtaiabg2da9maagmaabaWaaSaaaeaacaWGMbWaaSbaaSqaaiaadofaaeqaaaGcbaGaamOzamaaBaaaleaacaaIWaaabeaaaaGccqGHsisldaWcaaqaaiaaigdaaeaacaaIYaaaaaGaayj84laawUp+aaaa@4284@
(the "floor" operator converts the operand to an integer by selecting the largest integer that is less than the operand);
Δ=
f
S
f
0
−N
Δ=
f
S
f
0
−N
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeuiLdqKaeyypa0ZaaSaaaeaacaWGMbWaaSbaaSqaaiaadofaaeqaaaGcbaGaamOzamaaBaaaleaacaaIWaaabeaaaaGccqGHsislcaWGobaaaa@3D4B@
[
Hide Solution 3 ]
The all-pass filter delay can be approximated by
Equation 6 (see Moore):
Δ=
1−C
1+C
Δ=
1−C
1+C
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeuiLdqKaeyypa0ZaaSaaaeaacaaIXaGaeyOeI0Iaam4qaaqaaiaaigdacqGHRaWkcaWGdbaaaaaa@3C8C@
(6)
Problem 4
Refer to
Equation 6. Solve the equation for the all-pass filter coefficient C in terms of the
required fractional delay.
[
Click for Solution 4 ]
Solution 4
C=
1−Δ
1+Δ
C=
1−Δ
1+Δ
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4qaiabg2da9maalaaabaGaaGymaiabgkHiTiabfs5aebqaaiaaigdacqGHRaWkcqqHuoaraaaaaa@3D2A@
[
Hide Solution 4 ]
The all-pass filter can be inserted at any point in the loop;
Figure 4 shows the all-pass filter placed after
the low pass filter.
Problem 5
To simplify the derivation of the overall filter transfer function that relates y(n) to x(n), consider the three feedback elements (delay line, low pass filter,
and all-pass filter) to be a single element with transfer function
G(z)
G(z)
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4raiaacIcacaWG6bGaaiykaaaa@385F@
. Derive the transfer function of the combined element.
[
Click for Solution 5 ]
Solution 5
The elements are in cascade, so the individual transfer functions multiply together:
G(z)=
z
−N
H
LPF
(z)
H
APF
(z)
G(z)=
z
−N
H
LPF
(z)
H
APF
(z)
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4raiaacIcacaWG6bGaaiykaiabg2da9iaadQhadaahaaWcbeqaaiabgkHiTiaad6eaaaGccaWGibWaaSbaaSqaaiaadYeacaWGqbGaamOraaqabaGccaGGOaGaamOEaiaacMcacaWGibWaaSbaaSqaaiaadgeacaWGqbGaamOraaqabaGccaGGOaGaamOEaiaacMcaaaa@47E8@
[
Hide Solution 5 ]
Problem 6
Refer to the block diagram of
Figure 4. Considering that all three elements are represented by a single feedback element G(z),
derive the overall transfer function H(z) for the digital filter in terms of G(z).
[
Click for Solution 6 ]
Solution 6
H(z)=
1
1−G(z)
H(z)=
1
1−G(z)
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamisaiaacIcacaWG6bGaaiykaiabg2da9maalaaabaGaaGymaaqaaiaaigdacqGHsislcaWGhbGaaiikaiaadQhacaGGPaaaaaaa@3EFD@
[
Hide Solution 6 ]
Recall the low pass filter transfer function (
Equation 7):
H
LPF
(z)=g(1+
z
−1
)
H
LPF
(z)=g(1+
z
−1
)
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamisamaaBaaaleaacaWGmbGaamiuaiaadAeaaeqaaOGaaiikaiaadQhacaGGPaGaeyypa0Jaam4zaiaacIcacaaIXaGaey4kaSIaamOEamaaCaaaleqabaGaeyOeI0IaaGymaaaakiaacMcaaaa@42CD@
(7)
The all-pass filter transfer function is described by
Equation 4.
Problem 7
Derive the overall transfer function H(z) in terms of the filter parameters g and C. Write the transfer function
in standard form as the ratio of two polynomials in z.
[
Click for Solution 7 ]
Solution 7
H(z)=
1+C
z
−1
1+C
z
−1
−gC
z
−N
−g(1+C)
z
−(N+1)
−g
z
−(N+2)
H(z)=
1+C
z
−1
1+C
z
−1
−gC
z
−N
−g(1+C)
z
−(N+1)
−g
z
−(N+2)
MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYb1uaebbnrfifHhDYfgasaacH8YjY=vipgYlh9vqqj=hEeeu0xXdbba9frFj0=OqFfea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamisaiaacIcacaWG6bGaaiykaiabg2da9maalaaabaGaaGymaiabgUcaRiaadoeacaWG6bWaaWbaaSqabeaacqGHsislcaaIXaaaaaGcbaGaaGymaiabgUcaRiaadoeacaWG6bWaaWbaaSqabeaacqGHsislcaaIXaaaaOGaeyOeI0Iaam4zaiaadoeacaWG6bWaaWbaaSqabeaacqGHsislcaWGobaaaOGaeyOeI0Iaam4zaiaacIcacaaIXaGaey4kaSIaam4qaiaacMcacaWG6bWaaWbaaSqabeaacqGHsislcaGGOaGaamOtaiabgUcaRiaaigdacaGGPaaaaOGaeyOeI0Iaam4zaiaadQhadaahaaWcbeqaaiabgkHiTiaacIcacaWGobGaey4kaSIaaGOmaiaacMcaaaaaaaaa@5CD2@
[
Hide Solution 7 ]
Project Activity: Karplus-Strong VMI
As in the
prerequisite module, convert the pitch-accurate Karplus-Strong algorithm
into a
virtual musical instrument (
VMI)
that can be played by "MIDI Jam Session." If necessary, visit
MIDI JamSession, download the application VI .zip file, and view the
screencast video in that module to learn more about the application and how to create your
own virtual musical instrument. Your VMI will accept parameters that specify
frequency, amplitude, and duration of a single note, and will produce a corresponding array of
audio samples using the Karplus-Strong algorithm described in the previous section.
For best results, select a MIDI music file that contains a solo instrument or perhaps a duet.
For example, try "Sonata in A Minor for Cello and Bass Continuo" by Antonio Vivaldi.
A MIDI version of the sonata is available at the
Classical Guitar MIDI Archives, specifically
Vivaldi_Sonata_Cello_Bass.mid.
References
- Moore, F.R., "Elements of Computer Music," Prentice-Hall, 1990, ISBN 0-13-252552-6.
- Karplus, K., and A. Strong, "Digital Synthesis of Plucked String and Drum Timbres,"
Computer Music Journal 7(2): 43-55, 1983.
"This online course covers signal processing concepts using music and audio to keep the subject relevant and interesting. Written by Prof. Ed Doering from the Rose-Hulman Institute of Technology, […]"