{"id":2776,"date":"2020-02-18T10:04:53","date_gmt":"2020-02-18T01:04:53","guid":{"rendered":"https:\/\/blog.criware.com\/?p=2776"},"modified":"2020-02-18T10:04:53","modified_gmt":"2020-02-18T01:04:53","slug":"transitioning-from-one-shot-to-looped-sounds-in-atom-craft","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2020\/02\/18\/transitioning-from-one-shot-to-looped-sounds-in-atom-craft\/","title":{"rendered":"Transitioning from One-Shot to Looped Sounds in Atom Craft"},"content":{"rendered":"<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Introduction<\/h2>\n<p>ADX2 offers many solutions to help solve our creative and technical problems. One problem we might want to address is that of a quickly repeating sound. Do we want to repeatedly playback a one-shot sound, or do we want to transition into a loop? Retriggering a one-shot sound does mean that changes to playback rate will be reflected synchronously, but it also means that we might eat up our voice count. Transitioning into a loop may mean that we\u2019ll need to edit it in future, but this could significantly reduce our voice count (which is especially important when developing for mobile).<\/p>\n<p>This month&#8217;s blog will look at setting up a minigun-style firing effect that increases in playback rate over time, culminating in a continuous, single-voice loop.<\/p>\n<p><!-- video and download start --><\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px;\">\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-2776-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/2020_02_OneshotToLoop.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/2020_02_OneshotToLoop.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/2020_02_OneshotToLoop.mp4<\/a><\/video><\/div>\n<\/div>\n<p><!-- download start --><\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align: center;\">\n<p><a style=\"display: inline-block; border: 1px solid #ccc; padding: 20px;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/2020_02_OneshotToLoop.zip\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" style=\"margin: 0 auto; display: block;\" class=\"alignnone size-full wp-image-1813\" style=\"max-width: 900px; display: block; margin: 0 auto;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" \/><br \/>\n2020_02_OneshotToLoop.zip<br \/>\n<\/a><\/p>\n<\/div>\n<p><!-- video and download end --><\/p>\n<p><em>This project was created using CRI Atom Craft Ver.3.41.04<\/em><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Designing the Sound<\/h2>\n<p>To save time in future editing, we can snap our individual shots to a timeline grid, and simply adjust our tempo based on gameplay design changes. In Reaper, for example, we can navigate to <strong>File <\/strong>\u2192 <strong>Project Settings<\/strong>, and set our <strong>Timebase for items<\/strong> to <strong>Beats (position only)<\/strong>. This will prevent automatic re-pitching of our items, but it still will keep everything on the timeline grid when we change the tempo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin: 0 auto; display: block;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-1.png\" alt=\"20200128_from One-Shot to Looped-1\" width=\"1412\" height=\"437\" class=\"alignnone size-full wp-image-2783\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-1.png 1412w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-1-300x93.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-1-768x238.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-1-1024x317.png 1024w\" sizes=\"auto, (max-width: 1412px) 100vw, 1412px\" \/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Atom Craft<\/h2>\n<p>The gameplay logic for our weapon sound will likely be controlled from within the game engine, but we can prototype some behaviour from within Atom Craft.<\/p>\n<ul>\n<li>First, we need to create our one-shot Cue and our loop Cue. We can use a <strong>Random Cue<\/strong> for our one-shot and load it with variations of the same sound. For our loop, we can simply use a <strong>Polyphonic Cue<\/strong>.<\/li>\n<li>Then, we need another <strong>Polyphonic Cue<\/strong> for prototyping playback.<\/li>\n<li>Finally, we can drag in our one-shot Cues, layering them so that the playback rate increases over time, eventually triggering our loop.<\/li>\n<li>If we want to test stopping our sound, we can add a <strong>Stop Action<\/strong> on an Action Track linked to our loop and trigger a one-shot sound to act as a release sample.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin: 0 auto; display: block;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-2.png\" alt=\"20200128_from One-Shot to Looped-2\" width=\"1293\" height=\"310\" class=\"alignnone size-full wp-image-2784\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-2.png 1293w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-2-300x72.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-2-768x184.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-2-1024x246.png 1024w\" sizes=\"auto, (max-width: 1293px) 100vw, 1293px\" \/><\/p>\n<p>We can sell this system further by using an Auto Modulation AISAC set to control Pitch. This might smear the transient sound of gunfire, but it can be used to great effect if a motor sound is layered in underneath.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin: 0 auto; display: block;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-3.png\" alt=\"20200128_from One-Shot to Looped-3\" width=\"969\" height=\"304\" class=\"alignnone size-full wp-image-2785\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-3.png 969w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-3-300x94.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-3-768x241.png 768w\" sizes=\"auto, (max-width: 969px) 100vw, 969px\" \/><\/p>\n<p>If our one-shot sounds are relatively short, we can also help keep the voice count low using a Voice Limit Group.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin: 0 auto; display: block;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-4.png\" alt=\"20200128_from One-Shot to Looped-4\" width=\"561\" height=\"170\" class=\"alignnone size-full wp-image-2786\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-4.png 561w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/02\/20200128_from-One-Shot-to-Looped-4-300x91.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/p>\n<p>The logic needed to implement the above prototype within our game engine is slightly more complicated, as it is will require collaboration between gameplay design and audio design\/implementation departments. The important thing to note is that we will need to design for whether the player is holding down the trigger, and whether we are in the high-intensity loop phase. Our low-intensity phase is simple to deal with, but since the loop is made up of a single piece of continuous audio, we will need to play a final one-shot Cue when the trigger is released (to allow for a full release tail to play out).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction ADX2 offers many solutions to help solve our creative and technical problems. One problem we might want to address<\/p>\n","protected":false},"author":2,"featured_media":2779,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[5,7],"tags":[],"class_list":["post-2776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adx","category-tutorials"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/2776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/comments?post=2776"}],"version-history":[{"count":12,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/2776\/revisions"}],"predecessor-version":[{"id":2795,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/2776\/revisions\/2795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/2779"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=2776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=2776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=2776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}