220C
Research Seminar in Computer-Generated Music, Spring, 2006
Adaptive
Approach for PCM Sound Font Data Compression
Project
Homepage
Kevin Kuang
kuangzn (at) ccrma.stanford.edu
|
Future works rectangular, windowing adaptive adaptive predictor echo density (STFT) division More questions: What's the best iteration steps for finding the LMS weights? How many numbers of weights are psychoacoustic enough? How many periods in a group will be more computational efficient and acoustic sufficient? If a robust system is designe |
|
|
Project Status ( updating ... )
May
9, 2006
Revised my system diagram, used NLMS instead of LMS,
used long white noise or sinusoid with as my excitation signal so
that the NLMS
has longer iteration numbers. But, it's converged
very well, more works need to be done.
May 2, 2006
Found
out one point delay in my previous works was caused by a simply
Matlab bug. See figure below. There is no delay/discontinues
if
the number of the adaptive weight is 1, which means it's a ''zero''
order filter, or say it's a scaling. However, trade off between
number
of weights and similarity of output signal is significant,
the more weights the better the output, but before the problem of
non-zero-phase FIR
is fixed, the more weights mean the more
discontinue. Another trade off is the number of period vs quality of
output, the more
period we use, the better the weight will
converge to, then the FIR itself will be more optimized in the least
square sense, however,
the output signal is less optimized
because it is difficult to have the output signal be exact while
using 2nd order FIR filtering.
From now on, my works
will try to focus on finding new ways to design adaptive zero-phase
FIR filter, and decide what's the practical
number of weights and
period will be used to make the output sounds good.
Original
guitar wav file
New no delay zero order
FIR fix at 33 wav file

Figure, fixed zero phase problem by setting number of weight is 1.
April 24, 2006



April 13, 2006
Improved the sound using series of FIR filters, tried using fixed weights for different fix location
![]()
|
|---|
![]()
|
![]()
|
![]()
|
![]()
|

Fig. 1 The first plot is the original plucked guitar string, second is the synthesis result of a sliding 2 order FIR filter using the updated weights in the adaptive system every step, the third is the synthesis result using the last updated weights in one period adaptive calculation, it's implemented by 25 series of 20 order FIR filters with.
April
10, 2006:
Revised a little bit on my previous works, generate
two synthesis sounds, (see Fig 1.) The goal is to make find the
correct
FIR filter coefficients from the adaptive system, to
generate something hopefully have reasonable result for string
sounds.
I have to deal with the trade-off in terms of number of
adaptive weights, length of the input signal being used and the
quality
of the sound. The FIR is not zero phase, so it causes
delay in time domain which I need to fix that. Much more careful
revise
of the code is needed for a acceptable result.
Original
string (wav)
Done: Synthesis string with
sliding filters (wav)
My target is to
make this one better: Synthesis string with 25 series of FIR filters
(wav)
Reference
[1]
Julius O. Smith online book,
http://ccrma.stanford.edu/~jos/SimpleStrings/Extended_Karplus_Strong_EKS_Algorithm.html