Physical modeling synthesis is the method of creating audio with a numerical model of a physical system. This method is distinct from other types of synthesis, because a modeling synthesis algorithm attempts to embody the characteristics of 'real' instruments, using a model motivated by a physical analysis of the system. In contrast to modeling synthesis, most other methods of synthesis can be thought of as 'descriptive' sound synthesis, because they use waveform generators and filters in an attempt to emulate the timbre of a real instrument. We can loosely think of modeling synthesis as a 'predictive' sound synthesis method, because the sound is generated in a way that refers to the actual physical response of the system.
It is useful to note that there are many methods of modeling synthesis. I chose the implementation below chiefly for simplicity, and also because it refers more directly to a physically motivated model for the string. There are other models however, which are more computationally efficient than the one I have outlined below. The most successful modeling synthesis scheme is called waveguide synthesis. I have included a link below, for interested readers, to an excellent (if somewhat technical) discussion of waveguide synthesis.
CCRMA Introduction to Waveguide SynthesisTo build a simulation, I started by choosing a physical analysis for the string system. A simple model based on coupled oscillators from Crawford's excellent Waves (1) seemed to lend itself to efficient implementation.
CLICK HERE for "Coupled Oscillator Model"To solve for the physical response of the system, I use a numerical integration procedure to the solution of a second-order initial value problem. I tried two numerical integration schemes, a second-order extension of the Euler-Cauchy method, and the Runge-Kutta-Nystrom method.
CLICK HERE for "Numerical Integration Schemes"I implemented my simulation entirely in MATLAB. I have included source files as well as sample outputs and parameter sets for each. The first simulation I wrote, based on Euler-Cauchy is fairly rudimentary and is only useful for comparison against the simulations using Runge-Kutta-Nystrom.
It is important to note that the RKN simulation requires 3 files. The simulation itself (rkn.m), as well as a file for simulation parameters (params.m) and initial conditions (init.m). The user may define parameters and initial conditions of their own by overriding the definitions given in these default files. See the files attached to the audio examples below to see how this is done.
CLICK HERE for "Source Code"I have provided some sample output for visualizing propagation of waves in my simulation. The user can set my program to output the motion sequence for any given simulation parameters. Here is a link to the parameters used to produce this output, as well as the image itself.
CLICK HERE for "Wave Propagation"I have also included some sample audio output, as well as the user-defined parameters associated with each sound file.
CLICK HERE for "Audio Examples"