{"id":3429,"date":"2020-09-21T05:47:14","date_gmt":"2020-09-21T05:47:14","guid":{"rendered":"http:\/\/procedural-audio.com\/blog\/?p=3429"},"modified":"2022-01-06T09:58:53","modified_gmt":"2022-01-06T09:58:53","slug":"patch-anatomy-4-impacts","status":"publish","type":"post","link":"http:\/\/procedural-audio.com\/blog\/2020\/09\/21\/patch-anatomy-4-impacts\/","title":{"rendered":"Patch Anatomy #4 &#8211; Impacts!"},"content":{"rendered":"<div class=\"blog-author\">\n<img decoding=\"async\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/06\/KevinDoran.png\" alt=\"KevinDoran\">\n<\/div>\n<p>In this Patch Anatomy, we are going to look at creating a dynamically performable impact SFX generator. By using the velocity of a <strong>Meta Parameter<\/strong> slider and a few logic modules, we can simulate the effect of door or drawer slamming!<\/p>\n<p><a class=\"litymp3_new\" href=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/2020-09_Impact_1.mp4\" data-lity=\"\"><img decoding=\"async\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/patch-anatomy-4-impact-1.jpg\" alt=\"\"><\/a><\/p>\n<h2 class=\"tsugiblog-blackheader\">Sound Generation<\/h2>\n<p>The <strong>Clang<\/strong> module is ideal for generating rich, multi-layered impact sounds. It also conveniently has an \u201cimpact\u201d input, which can be used to drive a range of impact intensities. This module is placed front-and-center, with its output fed into a <strong>Saturator <\/strong>to add punch and character, finally being processed through a <strong>Cabinet<\/strong>. With subtle settings, the <strong>Cabinet <\/strong>processor adds a metallic shimmer and makes it resonate as if emanating from within a physical object. The resultant effect is a highly responsive impact generator that bellows and booms convincingly at high intensities.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" style=\"\n    max-width: 640px;\n    margin-left: 0px;\n    width: 100%;\n\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-1.png\" alt=\"Impact-1\" width=\"912\" height=\"424\" class=\"alignnone size-full wp-image-3431\" srcset=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-1.png 912w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-1-150x70.png 150w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-1-300x139.png 300w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-1-768x357.png 768w\" sizes=\"(max-width: 912px) 100vw, 912px\" \/><\/p>\n<p>\nTo ensure this patch is continuously listening for input, an infinitely running <strong>Noise <\/strong>generator is placed into the signal chain via a <strong>Mixer<\/strong>, with a Gain value of -\u221e. This inclusion won\u2019t produce any sound but will force the patch to run until manually stopped. <\/p>\n<h2 class=\"tsugiblog-blackheader\">Velocity Curve<\/h2>\n<p>\nNext, the patch needs some meaningful interactive control. This control can be achieved by using a linear <strong>Meta Parameter<\/strong> in conjunction with the <strong>Derivatives <\/strong>module. With this setup, sliding the <strong>Meta Parameter<\/strong> faster or slower will approximate the result of more or less force being applied. Plugging the output into a <strong>Biquad Filter<\/strong> with low settings will help to smooth the values out, producing a more usable signal. This final control signal can then be checked using the signal analyzer to determine if it is scaling and smoothing correctly. If the signal is too quiet, the Scaling value of the <strong>Derivatives<\/strong> module can be increased. If it is too chaotic, lower Cutoff and Resonance values on the <strong>Biquad Filter<\/strong> can be used.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" style=\"\n    max-width: 640px;\n    margin-left: 0px;\n    width: 100%;\n\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-2-1024x478.png\" alt=\"Impact-2\" width=\"640\" height=\"299\" class=\"alignnone size-large wp-image-3432\" srcset=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-2-1024x478.png 1024w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-2-150x70.png 150w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-2-300x140.png 300w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-2-768x359.png 768w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-2.png 1242w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<h2 class=\"tsugiblog-blackheader\">Logic<\/h2>\n<p>\nThe truly exciting part of this patch comes from its logical control. By checking if the slider is to the right, playback only triggers at a discrete point, with the process of getting it to that point, mimicking the interaction of slamming one object into another. This logic is easily achieved by using a <strong>Comparator <\/strong>to check if the <strong>Meta Parameter<\/strong> is greater than 0.99. We can\u2019t always be sure that the max value will be precisely 1 since the slider produces a floating-point value, so this will be a safe approximation.<\/p>\n<p>\nThen, some additional logic ensures that the sound is triggered only once, and only when the slider is on the way up. This state is determined by subtracting a delayed version of the signal from the real-time signal and checking if it is greater than 0 (i.e., a positive number). A fortunate side effect of this approach is that the sound will also not be triggered if there has been no change in velocity. It is also worth setting the <strong>Clang<\/strong>\u2019s Polyphony to 1, to ensure several sounds aren\u2019t triggered in quick succession.<\/p>\n<p>\nBoth logical statements are checked simultaneously using an AND type <strong>Logic Gate<\/strong> and applied to the trigger input of the <strong>Clang <\/strong>module. The impact input is reading continuously from the <strong>Derivatives\/Biquad Filter<\/strong> output so that the appropriate value is set right up to the point of playback. <\/p>\n<p><img decoding=\"async\" loading=\"lazy\" style=\"\n    max-width: 640px;\n    margin-left: 0px;\n    width: 100%;\n\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-3.png\" alt=\"Impact-3\" width=\"697\" height=\"571\" class=\"alignnone size-full wp-image-3433\" srcset=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-3.png 697w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-3-150x123.png 150w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Impact-3-300x246.png 300w\" sizes=\"(max-width: 697px) 100vw, 697px\" \/><\/p>\n<p>\nThe end product is a patch that can be performed and tested in an intuitive and contextualized way. Of course, the <strong>Clang <\/strong>module could easily be swapped out with any other sound generators, and the incoming velocity data could control any number of inputs. A rough way to emulate this effect for other generators could be to control the saturation input of a <strong>Saturator<\/strong>. If the effect is too extreme, a <strong>Mapper <\/strong>could be used to define a custom gradient. The possibilities truly are endless!\n<\/p>\n<div class=\"download-patches\">\n<a class=\"download-patches\" href=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/Dynamic-Impact.zip\"><br \/>\n<img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/download-patches.png\" alt=\"download-patches\" width=\"300\" height=\"86\" class=\"alignnone size-full wp-image-3447\" srcset=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/download-patches.png 300w, http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/09\/download-patches-150x43.png 150w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><br \/>\n<\/a>\n<\/div>\n<div style=\"height:10px;\"><\/div>\n<p>\n<a class=\"gs-learn-more\" href=\"http:\/\/procedural-audio.com\/web\/en\/products-gamesynth.html\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"http:\/\/procedural-audio.com\/blog\/wp-content\/uploads\/2020\/06\/2020_06_Introducing-Modular-Weapons-Modules-banner-1.png\" alt=\"GameSynth\"><br \/>\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this Patch Anatomy, we are going to look at creating a dynamically performable impact SFX generator. By using the velocity of a Meta<\/p>\n","protected":false},"author":1,"featured_media":3467,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,15,12],"tags":[],"_links":{"self":[{"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/posts\/3429"}],"collection":[{"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/comments?post=3429"}],"version-history":[{"count":17,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/posts\/3429\/revisions"}],"predecessor-version":[{"id":4917,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/posts\/3429\/revisions\/4917"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/media\/3467"}],"wp:attachment":[{"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/media?parent=3429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/categories?post=3429"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/procedural-audio.com\/blog\/wp-json\/wp\/v2\/tags?post=3429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}