Stats for this track
In 1 Set
- 59 Tracks, 7.54.05
In 1 Group
This track demonstrates an SC based environment for modelling coupled string vibration using a hybrid finite difference/modal approach. In SC you can specify the setup of the string network, i.e. how many strings you want to include, their physical parameters and boundary conditions and their inter-connection location. This information will then be send on to Python, which translates this in a suitable finite difference formulation in state space form. This means the complete system can be put into one giant matrix, which can be diagonalized to find the eigenvalues and eigenvectors of the system. From the eigenvalues the modes and damping constants of the complete system may be determined easily. This information is send back to SuperCollider and is used to provide the filter coefficients of a parallel bank of second-order resonators which when excited will generate the sound output.
The advantage of the finite difference formulation is that one has a lot of freedom in assembling the network of inter-connected objects and determining the inter-connection locations in that it is a very general approach. The downside is that the computational complexity of finite difference based models is usually rather large, making it unsuitable for real-time applications. This is where the diagonalisation to modal coordinates proves to be very valuable, since you end up with a large array of filter coefficients representing the modes of the complete system. One can then discard all modes which have a minor contribution (i.e. by excluding all modes below a certain threshold amplitude) and hence end up with a hugely more efficient model. Another nice feature of having your system expressed in modal coordinates is that it becomes possible to use simple second-order resonators readily available in SuperCollider (or any other audio environment for that matter) to simulate the system. The limitation of the modal formulation is that it is only possible to simulate linear systems though. Python was used because it has an excellent library (Numpy and Scipy) for doing more complex numerical computations (i.e. support for sparse matrices, diagonalising matrices, solving large linear systems efficiently), which are not possible to do (efficiently at least) with SuperCollider.
For this composition the environment was used to model two inter-connected strings. The strings are fixed at one side and free and inter-connected at the other side. The physical parameters of the string system are tuned so that the sound output sounds (pleasantly) harmonic, which was a long trial and error process. The string network is excited using various synthetically generated excitation signals.
All sound synthesis/design and sequencing was done entirely in SuperCollider. The overall structure of the composition is fixed, although micro-fluctuations will occur everytime the piece is played making every listening experience a little unique (at least that is the idea).