{"id":2946,"date":"2020-06-19T19:12:40","date_gmt":"2020-06-19T10:12:40","guid":{"rendered":"https:\/\/blog.criware.com\/?p=2946"},"modified":"2020-06-19T19:12:40","modified_gmt":"2020-06-19T10:12:40","slug":"dynamic-music-with-adx2-part3-the-beyond","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2020\/06\/19\/dynamic-music-with-adx2-part3-the-beyond\/","title":{"rendered":"Dynamic Music with ADX2 \u2013 Part3: The Beyond"},"content":{"rendered":"<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Introduction<\/h2>\n<p>In the first two parts of this series, we laid out some simple horizontal and vertical music systems. These two systems can fulfill most of our interactive music needs. However, ADX2 still has many more tricks available for creating new musical gameplay dynamics.<\/p>\n<p>In this month\u2019s blog, we\u2019ll look at using Atom Craft to create a few different systems which can be used instead of, or in conjunction with the techniques we have already investigated. The first is by using a Track Transition by Selector Cue to switch between two or more tracks of music quickly. The second approach looks at a more randomized approach using Random Cues as containers.<\/p>\n<p><!-- download start --><\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align:center;\">\n<a style=\"display: inline-block; border: 1px solid #ccc; padding: 20px;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/DynamicMusicP3.zip\"><br \/>\n<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1813\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" style=\"\n    display: block;\n    margin: 0 auto;\n\"><br \/>\n2020_05_DynamicMusicP3.zip<\/a>\n<\/div>\n<p><!-- download end --><\/p>\n<p style=\"text-align:center\">This project was created using CRI Atom Craft Ver.3.43.05<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Track Transition Cue<\/h2>\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-2946-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/TrackTransitionCue.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/TrackTransitionCue.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/TrackTransitionCue.mp4<\/a><\/video><\/div>\n<\/div>\n<p>Track Transition by Selector Cues offers a convenient way to switch between Tracks based on some gameplay logic. This Cue type is commonly used when creating footfall interactions, such as for switching between stepping on grass or gravel. However, it can be an excellent tool for dynamic music as well.<\/p>\n<p>In the example above, the melody and rhythm are similar, but the tonality of the parts has changed. One track has an aggressive sound, and the other is more subdued. This technique could be used in a game that has several playable characters, each with their own unique sound pallet, but with one unifying composition.<\/p>\n<ul>\n<li>In the Project Tree, right-click Selector Folder \u2192 New Object \u2192 Create Selector\n<ul>\n<li>Name it \u201cTrackSelector\u201d<\/li>\n<li>Right-click TrackSelector and create 2 Selector Labels\n<ul>\n<li>Name them \u201cRiffA\u201d and \u201cRiffB\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Create Track Transition By Selector Cue, name it \u201cTransition_Cue\u201d\n<ul>\n<li>Change the Time Base to Cue, and set:\n<ul>\n<li><strong>Setting Type<\/strong> to <em>Bars\/Beats<\/em><\/li>\n<li><strong>Measure<\/strong> and <strong>BPM<\/strong> to match our music<\/li>\n<\/ul>\n<\/li>\n<li>Right-click Cue \u2192 New Object \u2192 Create BeatSync Parameter<\/li>\n<li>Add riff Materials to separate Tracks<\/li>\n<li>Assign Selector Labels to respective Tracks (can be assigned in Timeline view)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_03_24-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020.png\" alt=\"2020-06-15 15_03_24-CRI Atom Craft Ver.3.43.05 (built on Jan 23 2020)\" width=\"617\" height=\"332\" class=\"alignnone size-full wp-image-2949\" style=\"\n    display: block;\n    margin: 0 auto;\n\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_03_24-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020.png 617w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_03_24-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020-300x161.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/p>\n<p>Once the above is set up, we can finesse the transition settings in the Inspector on the Cue. The Fade-in and Fade-out times, together with the Curve Type, will affect how quickly and smoothly the Tracks will be swapped. Changing the Offset time can help preserve the transient at transition, which might otherwise be faded over.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_05_47-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020.png\" alt=\"2020-06-15 15_05_47-CRI Atom Craft Ver.3.43.05 (built on Jan 23 2020)\" width=\"562\" height=\"253\" class=\"alignnone size-full wp-image-2950\" style=\"\n    display: block;\n    margin: 0 auto;\nmargin-bottom:40px;\n\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_05_47-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020.png 562w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_05_47-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020-300x135.png 300w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Random Loop Container<\/h2>\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-2946-2\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/LoopContainerCue-1.mp4?_=2\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/LoopContainerCue-1.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/LoopContainerCue-1.mp4<\/a><\/video><\/div>\n<\/div>\n<p>Depending on the type and style of the game, it can be essential to have some randomization in the music to keep it from getting boring. This is often true of games that feature large open worlds that aren\u2019t tightly scripted. In this case, it can help to have modular chunks of music that can be randomly sequenced. The hardest part of this system is figuring out how to compose modular pieces of music that sound good in random configurations. Fortunately, the implementation is straight-forward, and all we need to do is:<\/p>\n<ul>\n<li>Create Random Cue containers for each set of stems<\/li>\n<li>Create Polyphonic Cue, and name it \u201cMusicSequencer_Cue\u201d<\/li>\n<li>Drag the containers onto the MusicSequencer_Cue\n<ul>\n<li>Change the Time Base to Cue, and set:\n<ul>\n<li><strong>Setting Type<\/strong> to <em>Bars\/Beats<\/em><\/li>\n<li><strong>Measure<\/strong> and <strong>BPM<\/strong> to match our music<\/li>\n<\/ul>\n<\/li>\n<li>Create a Loop Marker and set the bounds around the loop<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n[Note] When bouncing down stems from your DAW, it is a good idea to render beyond the length of the intended loop, to ensure natural-sounding decay tails.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_18_50-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020.png\" alt=\"2020-06-15 15_18_50-CRI Atom Craft Ver.3.43.05 (built on Jan 23 2020)\" width=\"619\" height=\"329\" class=\"alignnone size-full wp-image-2951\" style=\"\n    display: block;\n    margin: 0 auto;\n\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_18_50-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020.png 619w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/06\/2020-06-15-15_18_50-CRI-Atom-Craft-Ver.3.43.05-built-on-Jan-23-2020-300x159.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In the first two parts of this series, we laid out some simple horizontal and vertical music systems. These<\/p>\n","protected":false},"author":2,"featured_media":2948,"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-2946","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\/2946","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=2946"}],"version-history":[{"count":12,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/2946\/revisions"}],"predecessor-version":[{"id":2967,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/2946\/revisions\/2967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/2948"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=2946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=2946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=2946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}