Musical Synthesis with Physical Modeling
Introduction
Physical Modeling is the most recent generation of musical synthesis.
In the past, synthesis has evolved through several forms. First there
were analog methods of combining wave generators and filters to generate
sounds. These sounds were expressive, but were not very "realistic"
and had the same limitations of analog recordings. Digital techniques
were incorporated with FM synthesis, which wasn't much more realistic.
Sampling synthesis can yield a realistic sound for a given note (since
it is fundamentally a recording of that note), but where it fails is that
it assumes everything about the instrument to stay fixed except for the
pitch, which with acoustic instruments, is the exact opposite of what really
happens. Physical modeling generates sounds based on an actual model
of the instrument which allows for complete interaction with the parameters
of synthesis, yielding unsurpassed expression and sonic quality.
The physical model is implemented using a digital waveguides to simulate
the traveling waves which forms the heart of all acoustic instruments.
These digital waveguides can be efficiently implemented in either hardware
or software using digital delays. This technology was pioneered at
Stanford's CCRMA (Center for Computer
Research in Music and Acoustics) and has been licensed to Yamaha
for use in both hardware synthesizers, the VL
series, and a soon to come software synth, Sondius.
Parts
Conclusion
We learned a lot about physical modeling. If we had more time, we
would like to implement a more sophisticated model, and add real-time control
and interaction. This would allow us to more easily experiment with
the effect of the parameters, and also take advantage of the expression
that physical modeling gives. Perry
Cook has a good C++ class framework for the basis of physical modeling.
Unfortunately, we were unable to get this working on the computers we have
access to, so we couldn't build on the tools that he gave us. Also,
the reverb was incredibly slow, since it required a for loop in Matlab.
The code would be fairly straightforward to convert to C, and would would
probably have real-time performance.
This is a Gang Project for Elec431.
Members: Bryan
Cook | Vijay Iyer |
Rebecca Ma | Jill
Nelson | Mara Prandi-Abrams