In this section, the creation of a complex waveform, like a square wave via an additive process and the application of the Karplus-Strong model of a plucked string to subtractive synthesis are analysed and compared.

Additive synthesis

If you take a sinusoidal sound, and start adding odd partials to the fundamental, you obtain a square wave with one component, two, three and so on. To obtain that, you need to make sure that the amplitudes of each of the harmonics are inversely proportional to their partial number, the third partial is 1/3 as strong as the first, the fifth partial is 1/5 as strong, and so on.

You can try this out by downloading the Partials patch by Jean-Francois Charles available here.

In that patcher, at the top left, you can set your preferred frequency. Still on the left hand side but below, in the amplitude section, please click on the button labelled square: this will set the correct amplitudes proportions. Then, in the top left section, labelled frequency, type in the correspondent value for each of the harmonics (3rd, 5th, 7th…) and you will be able to see in the waveform display (to the right, in blue) the gradual forming of the square wave.

screen-shot-2016-10-10-at-22-54-02 screen-shot-2016-10-10-at-22-53-53 screen-shot-2016-10-10-at-22-53-39
screen-shot-2016-10-10-at-22-53-26

From bottom to top: starting from a sinusoidal sound at 400 Hz, increasing the amplitude for 3rd, 5th, and 7th harmonic, respectively at 1200 Hz, 2000 Hz, 2400 Hz

This brief recall of additive synthesis should evidence once more how a complex timbre is achieved by increasing the number of harmonics, being careful to adjust adequately their reciprocal amplitudes, thus producing a richer sounding waveform.

If amplitudes are not just fixed over time, but they vary and have different shapes, the timbre complexity can expand further.

screen-shot-2016-10-10-at-23-17-19

This picture shows three sinusoidal waveforms set at different frequencies, duration, and shape, and triggered at the same time to create a more complex waveform

By working on the shape of sound, on the complexity of its transient attack, its body, and decay times and shape, and on the number and amplitudes of the forming harmonics, it is possible to obtain numerous sounds just with the simplest of the waveforms, the sinusoidal (cycle~ object).

Subtractive synthesis: Karplus-Strong

A reverse idea to that of additive synthesis is subtractive synthesis. Starting from a complex sound, most often a full spectrum broadband white noise (noise~ object in Max), and reducing its harmonic and amplitude content with different methods, we can achieve a variety of very interesting sounds. One of the most remarkable methods is the one obtained using the Karplus-Strong model.

This algorithm is a physical model of the acoustics of a plucked string. Just by triggering a burst of noise and applying to that a feedback delay effect, to reduce at each delay the sound’s frequency content, the acoustic model of a plucked string is represented.

The basic idea is, in fact, that the transient attack of a plucked string can be as rich in frequency as a burst of noise (recall the Lesson 3 reading by M. Schafer). As soon as the attack time has passed, friction between the air and the string help to normalise the string motion, leading to a less rich sound, because it loses harmonics and amplitudes on the way. The feedback delay effect applied to the burst of noise has this specific purpose: the sound passing through the delay, and feeding back infinitely until complete reduction to silence of its amplitude, simulate exactly the progressive simplification of the string motion of a plucked string. Thus the sound passes from a very complex attack transient to a simpler body and decay.

To try the effect in Max, please select and copy to your clipboard all the text in green here below. Once you have done it, open Max and from the menu bar select File>New From Clipboard. This should create the patch for you. Have fun!

ps.: if you can’t copy the text or something wrong happens in the visualisation of the patcher, please download it from here: karlplus_explained-maxpat.

<pre><code> ———-begin_max5_patcher———- 2899.3oc4cs0aaibE9Y6eEypFflj5KbtRxf9R2Mn.EEaQv118gcy1fwjijXL EIAu3XmEq+s2gyPpKwhCG4HxXIu.qjmQ7x47Mm6ygL+9omL4pzaEES.uA7qf SN42O8jSTSUOwIMiOYxB9sAw7B0gMIHcwBQR4jyz+Vo31R07+vbdxLAnbt.T LmmI.oSUCtpJunDvK.2kVAhitVzdlwQIhfzpD0oiZlLiWFLOJY1GxEAkZxBR ctv4L.Bwp+B5o9h3dgC32ZNonPEEjd0GOG62d4SpVjVUFKJUjsSyrSSSJS3K DpS3ukGwiaO9hx6h0SOYsisH5ypIgdWzdIxxEER.fWFklrFYh0jIt9CmlOVR gRhIJokVf0y8GmdZ8Gm8Uh5+m4QE.EnAlKw3qDhD.OjmUJBASSyAoU4.0UAL MOcAPbKeQVrbQ4NvOxuETUHxAKjqIuUvS.ubdYYVwat7xf6BjKNybIWHusWx qJmmleI1AQ7t7OcwO+gO8Kge9e9Ku6G+uu5L.+FdTL+J4kbtHW7Fv1uDRJoZ QwkkoYQAWlEWEbsH77hxb4Qb9m32HlUEEJN+ZddbVUQ8OjJ+gEogh3la3O8w 5a3OuqhNXX8BASJxPkRNHriIQGDa+J5LkGH9xy2dwIjaMs5hf0j99WdJQ7II O+.woWe+jtQSsBHBQqIIju5STGX41gRXyr5oJuKSnuxSJhlkHwykWpGhnavw n8GGWKJYhoYdWfk+GxaImiafgN3busy5ndX8y.StRZ.8aADjCJpJJ4QIlV6g J4QHpFAnlQ.+cbw2Zd14QvyKDEE7YhGvzEhxvzERlF7BX+7MUoF5gMw2Xmgh u2qq0RqtylIxMvyPBdEOSQF4Y5So05N44qj777xDonPul2fPbMa6Zdo18Pfs 4Ig2CXNN8yyLkCRF0HO6Mr1zeLdwlVkDT62reg4lkUjixUJzwY6LIoCcXxxa PtLBfRQ9GDI0Q8rt+8G..SiS4k0F1a++9LvqMHUOEdY3AahQMSxCCyRiRJaB b2YULm0eSgNLrW8e44wXL21oIHJEW+WHxxoQW3Qbj+P64C9s8XvouKRtb7FP VL+Nv0B9cWkxyCAkoxXE4RmNoKjoJHihKzjVoGlnC6ud4i3qrFgwcr54NLA+ iHcrbrGwp+GPEJ+Bd4b4GWKJjNkyqSmhWBlKsdARRKkSNkGJ.xoToYIYEPNu TTmcUb5mzGxViQFaH.GlxCG1W6fmRLEiLgMPoWgFdD9mDAQ4AUwxHsSlAdqP JU99j5rVVKMUYNqIoQEBfboHHMQFUTRY7cxDrJJjITUNOOsRtTvASihkFA.h aD42Isl.VrcXm1MrSTrrztjyZY0Bc5B2QCdZsCFt+uT.52WiuS5KUMWkQZnN 9xtvB3gKV7WO+bvaSS9yk0ImOSTVaLrPnUmuIMtRpPK8ZCJqxS.u8e+NPZx2 sq471HXQgZ+dMUknCKl3C.84tRbKkGVGbesmMS9OzQ0fcUxWdlilkXNDmtQi cJfumn.EQWlMpM.E9HGnf8CTTGhE.E5YsDkNjBByBfBdLBTuVhPVHI4pi.CY rhZt6M.RmWxWIJsGqIQgE0eRlwFUiUdpu7LVAJ5AqWs+B.ZRhwGisWhAczJw 7ZUh7lzr7VWyhXzzCBe3iSEwQgFqoWqoF8WPlNO50qBxRxZIUsNF0SjQ6TcQ LBP0Hn7LxpJW+5ObFnQHGZOFoUADQXJuXTi0HC5eDqxYiqLhVUqGCSNOeT3H Z2V6tBG73TgS5eqG4HMPoiYDazMOz631AmMJbXjBuH9FAJ2mOJbHuGmBGjcf qv0UIm9GKxphKDf2VkyWeuRrt8aZJQIU2QBPGcOUzwFn.cd5WBd4Jf7Zr5tj ufq3UlEoef8WCDvzN.Ap4d.vjrztjnqEaozPgg1pNB8dbAbhOv0FUDmo9Jgz nUo2ukFTpipzB2wcdsWizCk287lMFw.eSaTczVSZrY2keqmN0i0YeVtidAoV yMD8lWSL1LBP3g6dx8206i1OTUlNc5i0yD1WgO58FtSGSniZGSDc0n6ywD9n 2wTmVllyimFGMUXPsyUKOgzaEN0nVm+wooIKPoVQNLB2eEQ7NXqDaF+ZvTvT isFJacWYFEWbexHtrGyRUbaVN38SxR+zKcpK3yKlBu7ESQu58Sr.0n5zIL2M srCZXq6NQoHMgmDH.ubQgH3UOBGePcGRn6gDrqIOejiZGeHOab7Qet52qvtd eUFIUidnBMcM2IntGtV0snf+PmVS4j98ugccetVx+kZfZbxbM+wtrCebpK64 euUpXNMI46pKgDxXqrhcoG0lsaPAl+CrZKuCQKjW0NqLj6xL4jje6g5rNW8L yBe+OQGLTSD65hXRLZQic31Sf7rLQRH.Z5Qdf3qSxS21y5O6FKnGk8uUOOya sPjNOXyQniYDywVsCPj8OJbirmvRvUlyDTqX0BXl8Dxv6M.SASmsm7HtGEv9 tKqMzaL5gVHi0970YTFy4nMHqEko1HYoSwCa1xM0+f1Z008uoRZ.fQVqAbcY cgFdO9j9d.dDkndRtp+x.xzwyx8pmOKr1XJE20yx89L786k2SeeS6ESSuwqK Ei4dHPdP6Mgq9ex.GYkvzDQVZr3doLkwGWRh9MHPCf46XFvXGu.VIOSRj22S jVMnkt9nLOynE8IFZA2qnUTx88iTMNCI8Xke+sqnRBKHMIQQGiOZI9bHOvl8 HWWlSBs8ysCKXyosL.Oi8y3lWVw5dQhn6BYjN8ehSWL.ZO5uZUnz83xR9yh7 LENzYCP7XvlLdhH1zZaaAG0Q90rya0tz2ZMr+5Vba4p5WoLqeZxvmavwkR0W MKHMNMu0wsuCzmAOSUJBk6TDj5pFtjLyxSyRyUsVk5Jg8G.3hQ0dm8g51oYU aHsU3h7sBt7HXHoFobaPpU+k0Xl5nTIo9EuXpT3R87aBjEoU4AsB9M6MKX08 JTTTFkvauY+5xMjC.WdLyiBCEIqyqgQE0JYgcuCq1RMtVPMrMNlgjZXVPMpX 8LhNKh13EP.yW+lwQu0dL11FQZ1jJxxQqnh8F2Qsf67FMrt9sIwZv31IGTez yWf0HoKXu12HQPkc.o+kMlY..VrmEHKZzPV01tzubrq2HRQVoY8Ez8vRQHqn H1SRJBNRTjMDzHJEwrwBlplqiFEQrxiAc2rhQ7Uu+3v52ucD7pQCgwq5Rt1q gX2ciCXDOc1s59guwCHBNLleUbP+xEintrUX5WJOuinJkwt.QevPTaAqzuCB otCDl6XEliGOLm5aEE4LhTjmUVG72Mo.YVDp2Xm5Gyaul2RYaLBodcs.XXh9 UFi2vHCPsxAAkra7G0krVDxDntLraLpUFGOrx3T6yGXWrtqo5llRlpKn0liZ xGnEIHea4Ozii+fJuWM8etZzfvCVES.cDs8S2OwDrOoHqhrjheRRQvmPTDbD QHKHGxH5KyFgZzHhO1DxGbD05sQ7AMhYl.sQAa7HGmmXhyVkpMZWCLSGNhtt SdMsFzFiVUaZkmc0vAvqHxpPgGO3FYaAxFGi8HahaEMdZGHqLt59DjdFo0Ka TWQiWAVQVEqvNlbuOQ0YbL8tc6goObDEsg0C0vgv5gM9NPin0CqomQRbzFmY P+wCeFhrv0RbHJ6BW5ZYZWObHD4FhDQwM+KRATwBMIhpGN.r.zFetP7NFRA0 Q+p8lpMC.e3HrOYciBpgCA6YiKb5txcZNvsgezcD0FiPtavcpgCA2YSDAvwa qNf1TYF33EQ.zlzQQiWIMfDqq5yNrS8TnRaC27OtGqMZHD4rJC1GaF051Dgm kciHun4ZpHkIK3eT2RJtmcp9wDROT0IUSxE2D0d7pWP6S34AyiJEAkU45th4 VOcuap5.l7jpnlVbSdm+iS++.uws3C. ———–end_max5_patcher———– </code></pre>