{"id":1017,"date":"2017-04-11T11:52:47","date_gmt":"2017-04-11T02:52:47","guid":{"rendered":"http:\/\/blog.criware.com\/?p=1017"},"modified":"2017-04-11T11:52:47","modified_gmt":"2017-04-11T02:52:47","slug":"composing-adaptive-music-in-atomcraft","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2017\/04\/11\/composing-adaptive-music-in-atomcraft\/","title":{"rendered":"Composing Adaptive Music in AtomCraft"},"content":{"rendered":"<p><em>This post explains how to implement interactive music in your game with AtomCraft.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Music in Video Games<\/strong><\/span><\/p>\n<p>In our recent implementation posts we have talked a lot about sound effects. However, a complete interactive audio experience only comes together with music. The music is equally important as it conveys emotion and helps telling a story.<br \/>\nUnlike movies, games are a nonlinear media. It means that your game music needs to be adaptive in order to accommodate the interactive nature of the medium. In other words, your game music needs to be fully interactive to follow what is happening in the game due to the player\u2019s actions.<br \/>\nFrom the very beginning, the music must be written with game interactivity in mind. Indeed, it is critical for the composer to understand the basics of adaptive music in order to successfully create assets that can be used in the game. Fortunately, AtomCraft provides a set of features that empower the composer and allow him to create interactive music very easily.<br \/>\nIn this post, we will explain how to leverage AtomCraft\u2019s features to implement compelling interactive music in your project. Let\u2019s dive into it!<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Adaptive Music Implementation in AtomCraft<\/strong><\/span><\/p>\n<p>To be able to successfully create interactive music with AtomCraft, there are four key features that you will need to understand: Blocks, Beat-sync, AISACs and Selectors.<br \/>\nThis graphic demonstrates a basic interactive music workflow using ADX2. In this example, the composer creates interactive music using these four key features. The integration in AtomCraft can be easily done by the composer himself or any other team members working on the project. At runtime, the game will send data to the ADX2\u2019s engine which will adapt the music in real-time according to the action.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1064\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_Interactive-music.png\" alt=\"Blog Picture_Samurai Music_Diagram_Interactive music\" width=\"743\" height=\"419\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_Interactive-music.png 743w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_Interactive-music-300x169.png 300w\" sizes=\"auto, (max-width: 743px) 100vw, 743px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Working with Blocks<\/strong><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1019\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_02-1024x531.png\" alt=\"ADX2_IM_02\" width=\"800\" height=\"415\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_02-1024x531.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_02-300x156.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_02-768x398.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_02.png 1909w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>There are many powerful ways to implement interactive music with AtomCraft. Let\u2019s start with the Block playback system. Blocks allow you to organize your Cues in vertical sections that can be played in a different order depending on the game context. They are a bit similar to the pattern-based systems you can find in some sequencers.<\/p>\n<p>Blocks have a lot of benefits:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1074\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB1.png\" alt=\"ADX2 - IM - TAB1\" width=\"710\" height=\"114\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB1.png 710w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB1-300x48.png 300w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/p>\n<p><strong>Step by Step<\/strong><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 1:<\/span><\/em>\u00a0Change the display units of the timeline to bars and beats.<br \/>\n\u2022 Start by opening your Cue<br \/>\nRight-click on the ruler and select [Timebase Settings]\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1020\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_03.png\" alt=\"ADX2_IM_03\" width=\"643\" height=\"195\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_03.png 643w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_03-300x91.png 300w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/p>\n<p>\u2022 In the [Timebase Settings] window, choose Bars\/Beat<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1021\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_04.png\" alt=\"ADX2_IM_04\" width=\"288\" height=\"206\" \/><\/p>\n<p><span style=\"text-decoration: underline;\"><em>Step 2:<\/em><\/span> Create Blocks in a Cue.<br \/>\n\u2022 Right-click on the timeline and, in the context menu, select [New Object].<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1022\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_05.png\" alt=\"ADX2_IM_05\" width=\"779\" height=\"321\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_05.png 779w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_05-300x124.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_05-768x316.png 768w\" sizes=\"auto, (max-width: 779px) 100vw, 779px\" \/><\/p>\n<p>\u2022 Chose [Create Block].<br \/>\nA new Block appears at the top of the time line<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1023 size-medium\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_06-300x127.png\" alt=\"ADX2_IM_06\" width=\"300\" height=\"127\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_06-300x127.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_06-768x326.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_06.png 986w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\u2022 Create more Blocks for your music<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1024\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_07-1024x361.png\" alt=\"ADX2_IM_07\" width=\"800\" height=\"282\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_07-1024x361.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_07-300x106.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_07-768x271.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_07.png 1162w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 3<\/span>:<\/em> If you like, change the color of your Blocks to organize them.<br \/>\n\u2022 Right-click on a Block and select [colour settings].<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1025 size-medium\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_08-300x287.png\" alt=\"ADX2_IM_08\" width=\"300\" height=\"287\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_08-300x287.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_08.png 642w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 4<\/span><\/em>: Add your music<br \/>\n\u2022 Create a Track per instrument or per type of music loop.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1026 size-medium\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_09-300x160.png\" alt=\"ADX2_IM_09\" width=\"300\" height=\"160\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_09-300x160.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_09-768x409.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_09-1024x545.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_09.png 1487w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\u2022 Simply drop the loops on the right tracks in the appropriate Blocks.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1027\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_10-1024x547.png\" alt=\"ADX2_IM_10\" width=\"800\" height=\"427\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_10-1024x547.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_10-300x160.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_10-768x410.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_10.png 1485w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 5<\/span><\/em>: Define the Block&#8217;s behaviour.<br \/>\n\u2022 Double-click on a block to open the properties pane.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1028\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_11-1024x270.png\" alt=\"ADX2_IM_11\" width=\"800\" height=\"211\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_11-1024x270.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_11-300x79.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_11-768x203.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_11.png 1296w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Here we can rename the Block or change its duration.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1029\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_12.png\" alt=\"ADX2_IM_12\" width=\"489\" height=\"190\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_12.png 489w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_12-300x117.png 300w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/p>\n<p>The Block destination corresponds to where the playback jumps when the Block has finished playing or has reached a transition point.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1030\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_13.png\" alt=\"ADX2_IM_13\" width=\"550\" height=\"187\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_13.png 550w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_13-300x102.png 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/p>\n<p>There are 3 types of transitions available:<br \/>\nThe first one is [None]. It will stop the playback at the end of the block. The 2nd one is [Next Block]. The Block will transition to the next block. The 3rd one is [Block Destination]. The Block will transition to a block from a list of our choice.<br \/>\n\u2022 If you select 3rd option, the [Block Destination Setting] window will appear.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1031\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_14.png\" alt=\"ADX2_IM_14\" width=\"462\" height=\"433\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_14.png 462w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_14-300x281.png 300w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><\/p>\n<p>Here we can add or remove destination Blocks and chose among 4 types of transitions. For instance, if we chose [Sequential] and select a Block as destination, the Block will transition to the selected block at the end of the playback. If we chose [Random] and insert all the available Blocks, it will transition to a random Block at the end of the playback.<br \/>\nLet&#8217;s go back to the Block properties pane.<br \/>\nHere we can define the number of times the block should loop before transitioning. Enter either -1 for an infinite loop or the actual number of loops to perform.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1032\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_15.png\" alt=\"ADX2_IM_15\" width=\"549\" height=\"183\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_15.png 549w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_15-300x100.png 300w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/p>\n<p>The [Block number of divisions] setting divides the Block in intervals at which transitions can occur.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1033\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_16.png\" alt=\"ADX2_IM_16\" width=\"552\" height=\"183\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_16.png 552w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_16-300x99.png 300w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/p>\n<p>For instance, if we have a 4 bars music loop, set the division number to 4 and select [Division] for the [Block transition timing], the Block will wait until the 1st beat of the next bar before transitioning to the destination Block.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1034\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_17-1024x149.png\" alt=\"ADX2_IM_17\" width=\"800\" height=\"116\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_17-1024x149.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_17-300x44.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_17-768x112.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_17.png 1306w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 6<\/span><\/em>: Add transitioning Tracks if needed.<br \/>\nIt is possible to play a specific Track only when transitioning (end or beginning of the transition).<br \/>\n\u2022 Create a Track and add a transition segment at the end of a Block.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1035\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_18-1024x464.png\" alt=\"ADX2_IM_18\" width=\"800\" height=\"363\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_18-1024x464.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_18-300x136.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_18-768x348.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_18.png 1234w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>\u2022 Right-click on the track and in the context menu, select the [Block Transition Playback Type] and chose [Playback Transition].<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1036\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_19.png\" alt=\"ADX2_IM_19\" width=\"832\" height=\"151\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_19.png 832w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_19-300x54.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_19-768x139.png 768w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/p>\n<p>The Track now appears differently to indicate that it will only be playing during transitions.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1037\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_20-1024x252.png\" alt=\"ADX2_IM_20\" width=\"800\" height=\"197\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_20-1024x252.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_20-300x74.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_20-768x189.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_20.png 1314w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Working with Selectors and BeatSync<\/span><\/strong><\/p>\n<p>The second feature in AtomCraft that allows you to easily integrate interactive music in your game is called a Selector. Selectors are variables that can take several predefined values called Selector Labels. At run-time, the Cues will check the value of Selector and only play the tracks that are associated with the appropriate Selector Label. Here, we will use Selectors to make the music change according to the game action. We are also going to introduce the BeatSync feature in this section.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1065 size-medium\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_Selector-Labels-300x189.png\" alt=\"Blog Picture_Samurai Music_Diagram_Selector Labels\" width=\"300\" height=\"189\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_Selector-Labels-300x189.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_Selector-Labels.png 642w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>There is a Cue type of in AtomCraft, specifically designed for music tracks using Selectors, called &#8220;Track transition by selector&#8221;. Unlike other Cue types, when the selector label is changed during playback, the Track will transitions and crossfade automatically to the Track with the matching selector label. It means that music tracks can be easily switched depending on the game context and it can be done with minimum resource consumption. It is also possible to change the music tracks in sync and at specific timing (e.g. only on the 1st beat of every measure of a 4-bar loop).<br \/>\nA transition by Selector has a lot of benefits:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1072\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB2.png\" alt=\"ADX2 - IM - TAB2\" width=\"694\" height=\"112\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB2.png 694w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB2-300x48.png 300w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><\/p>\n<p>However, a Cue of type &#8220;Track transition by selector&#8221; has also many restrictions. Therefore, this Cue type must be specified when it is created and cannot be changed afterwards.<br \/>\nRestrictions:<br \/>\n\u2022 You cannot register multiple Waveforms to one Track<br \/>\n\u2022 You can only place the Waveform at the start time of the Track (00:00:00)<br \/>\n\u2022 You cannot use sequence Markers with this type of Cue<br \/>\n\u2022 It cannot be used in conjunction with the block feature<br \/>\n\u2022 You must set a selector label to each Track (each selector must be different)<br \/>\n\u2022 You cannot set random playback timing to a Waveform region<br \/>\n\u2022 You cannot use the Subsequence and the CueLink functions<br \/>\n\u2022 You must set the Beat-Sync information<br \/>\n\u2022 Sampling rate must be the same for each Waveform<\/p>\n<p><strong>Step by Step<\/strong><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 1<\/span><\/em>: Create the Cues<br \/>\nRight-Click on a CueSheet, select \u201cNew Object\u201d and click \u201cCreate Cue Track Transition by Selector\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1039\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_21b.png\" alt=\"ADX2_IM_21b\" width=\"795\" height=\"245\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_21b.png 795w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_21b-300x92.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_21b-768x237.png 768w\" sizes=\"auto, (max-width: 795px) 100vw, 795px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 2<\/span><\/em>: Create a Selector and Selector Labels<br \/>\nThe first thing we need to create is the Selector. In the Global Settings section of the project tree, right-click on the Selector Folder, select \u201cNew Object\u201d and then click on \u201cCreate Selector\u201d. The Selector will appear and we will rename it \u201cMusic\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1040\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_22.png\" alt=\"ADX2_IM_22\" width=\"496\" height=\"308\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_22.png 496w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_22-300x186.png 300w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/p>\n<p>Now we need to create the Selector Labels. Right-click on the Selector, select \u201cNew Object\u201d and then click on \u201cCreate Selector Label\u201d. A new Selector Label will appear and we will rename it \u201cNavigation\u201d. We need to create one Selector Label for each of our music track (Navigation, combat &#8230;)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1041\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_23.png\" alt=\"ADX2_IM_23\" width=\"460\" height=\"340\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_23.png 460w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_23-300x222.png 300w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 3<\/span><\/em>: Assign your Selector Labels<br \/>\nTo assign a Selector to a music Track: click on the Selector tab, specify which Selector to use and select a Selector Label.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1042\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_24.png\" alt=\"ADX2_IM_24\" width=\"265\" height=\"266\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_24.png 265w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_24-150x150.png 150w\" sizes=\"auto, (max-width: 265px) 100vw, 265px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 4<\/span><\/em><strong>: <\/strong>Add your music<br \/>\nSimply drag and drop your music on the right track.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1043\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_25.png\" alt=\"ADX2_IM_25\" width=\"722\" height=\"622\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_25.png 722w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_25-300x258.png 300w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 5<\/span><strong>:\u00a0<\/strong><\/em>Create the Beat Sync Parameter<br \/>\nThe BeatSync feature allows for a seamless transition between music tracks, while staying in sync with the tempo and\/or the beat divisions. It is also possible to change the volume in sync with the beat during playback.<br \/>\nTo insert a BeatSync Parameter: right-click on the timeline, select \u201cNew Object\u201d and choose \u201cCreate BeatSync Parameter\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1044\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_26.png\" alt=\"ADX2_IM_26\" width=\"728\" height=\"228\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_26.png 728w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_26-300x94.png 300w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1045\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_27.png\" alt=\"ADX2_IM_27\" width=\"160\" height=\"238\" \/><\/p>\n<p>Finally specify the start time, BPM and select on which beats you want the music to change.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1046\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_28.png\" alt=\"ADX2_IM_28\" width=\"672\" height=\"224\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_28.png 672w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_28-300x100.png 300w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 6<\/span><\/em><strong>: <\/strong>Adjust the crossfading<br \/>\nClick on the cue track and set the fade in and fade out time.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1047\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_29-1024x360.png\" alt=\"ADX2_IM_29\" width=\"800\" height=\"281\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_29-1024x360.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_29-300x105.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_29-768x270.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_29.png 1162w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><span style=\"text-decoration: underline;\"><em>Step 7<\/em><\/span>: Listen to the result and adjust the parameters.<br \/>\nIt is possible to test the implementation in the Session Window. To open the Session Window: select your Cue, click on the \u201cView\u201d menu and open the Session Window.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1048\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_30.png\" alt=\"ADX2_IM_30\" width=\"331\" height=\"317\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_30.png 331w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_30-300x287.png 300w\" sizes=\"auto, (max-width: 331px) 100vw, 331px\" \/><\/p>\n<p>Click the play button and change the Selector Labels to transition between tracks.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1049\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_31.png\" alt=\"ADX2_IM_31\" width=\"630\" height=\"690\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_31.png 630w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_31-274x300.png 274w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Working with AISACs<\/strong><\/span><\/p>\n<p>The last feature in AtomCraft that allows you to implement interactive music in your game is called AISAC.<br \/>\nAISAC is a system allowing the control of audio parameters by values coming from the game. This kind of feature is also often called Real-time Parameter Controls (RPC or RTPC) by sound designers. In AtomCraft, it is possible to use this feature to implement interactive music. In that case, the game will send a value to the Cue which will then change the music in real-time in order to make it follow the action. For instance, with AISACs it is possible to fade-in and out music layers depending on what is happening in the game.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1050\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_32.png\" alt=\"ADX2_IM_32\" width=\"994\" height=\"554\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_32.png 994w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_32-300x167.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_32-768x428.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_32-800x445.png 800w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p>Transitioning with AISAC offers a lot of benefits:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1073\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB3.png\" alt=\"ADX2 - IM - TAB3\" width=\"747\" height=\"110\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB3.png 747w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2-IM-TAB3-300x44.png 300w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/p>\n<p><strong>Step by Step<\/strong><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 1<\/span><\/em>: Create an AISAC Control<br \/>\nFirst we need to create an AISAC Control in order to make the link between the game and the AISACs. An AISAC Control is simply an identification name that allows the programmer to pass a value from the game to ADX2 so that it can be mapped to an AISAC curve.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1066\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_AISAC.png\" alt=\"Blog Picture_Samurai Music_Diagram_AISAC\" width=\"761\" height=\"45\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_AISAC.png 761w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Diagram_AISAC-300x18.png 300w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/p>\n<p>To create an AISAC Control: go in the Global Settings section of the project tree, right-click on the AISAC-Control Folder, select \u201cNew Object\u201d and then click on \u201cCreate AISAC-Control\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1051\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_33.png\" alt=\"ADX2_IM_33\" width=\"475\" height=\"278\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_33.png 475w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_33-300x176.png 300w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><\/p>\n<p>Let\u2019s simply name it \u201cMusic\u201d.<\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 2<\/span><\/em><strong>: <\/strong>Create AISACs<br \/>\nTo add an AISAC to your first music layer: select the Track, click on the \u201c+\u201d button in the AISAC pane and select \u201cAdd AISAC\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1052\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_34.png\" alt=\"ADX2_IM_34\" width=\"242\" height=\"258\" \/><\/p>\n<p>A window called \u201cAdd AISAC\u201d will appear, allowing you to associate a parameter with the new AISAC control. Select your AISAC Control \u201cMusic\u201d and choose the \u201cVolume\u201d Graph type.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1053\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_35.png\" alt=\"ADX2_IM_35\" width=\"405\" height=\"219\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_35.png 405w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_35-300x162.png 300w\" sizes=\"auto, (max-width: 405px) 100vw, 405px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 3<\/span><\/em>: Once the window closed, the AISAC tab is selected in the FX \/ AISAC panel at the bottom of the main window and a default line is drawn. We can now draw our volume curves. Simply click on the line to add points and drag them to shape the curve (you can also type in the values directly in a pane on the right).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1054\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_36.png\" alt=\"ADX2_IM_36\" width=\"1019\" height=\"166\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_36.png 1019w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_36-300x49.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_36-768x125.png 768w\" sizes=\"auto, (max-width: 1019px) 100vw, 1019px\" \/><\/p>\n<p>To change the curve type of your AISAC: simply right-click on a dot.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1055\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_37.png\" alt=\"ADX2_IM_37\" width=\"1018\" height=\"238\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_37.png 1018w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_37-300x70.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_37-768x180.png 768w\" sizes=\"auto, (max-width: 1018px) 100vw, 1018px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 4<\/span><\/em>: Repeat the same process for all your music layers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1056\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_38.png\" alt=\"ADX2_IM_38\" width=\"995\" height=\"489\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_38.png 995w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_38-300x147.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_38-768x377.png 768w\" sizes=\"auto, (max-width: 995px) 100vw, 995px\" \/><\/p>\n<p><em><span style=\"text-decoration: underline;\">Step 5<\/span><\/em>: Listen to the result and fine-tune your AISACs.<br \/>\nPlay the Cue and while the music is looping drag the AISAC cursor from left to right in order to hear the AISAC affecting the music. Finally, adjust your volume curves accordingly.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1057\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_39.png\" alt=\"ADX2_IM_39\" width=\"1018\" height=\"202\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_39.png 1018w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_39-300x60.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_39-768x152.png 768w\" sizes=\"auto, (max-width: 1018px) 100vw, 1018px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Demo project<\/span><\/strong><\/p>\n<p>To listen and look at some examples of interactive music implementations, we have created a small AtomCraft project that you can download below:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Interactive-Music.zip\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-882 size-full\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/InteractiveMusicZip.png\" alt=\"\" width=\"160\" height=\"169\" \/><\/a><\/p>\n<p style=\"text-align: center;\">[This project requires AtomCraft version 2.27 or higher]\n<p>In this project, we simulate a game with 4 states:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1061\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Pic.png\" alt=\"Blog Picture_Samurai Music_Pic\" width=\"756\" height=\"201\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Pic.png 756w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/Blog-Picture_Samurai-Music_Pic-300x80.png 300w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" \/><\/p>\n<p>The music was made and implemented to accommodate a simple gameplay sequence in which the player has to navigate and fight enemies. First, the navigation music will play and if the player encounters an enemy the music intensity will start to increase.<\/p>\n<p>You will find 2 Cues named Blocks and AISAC. With these 2 Cues, we demonstrated the implementation of interactive music using the some key features we have explained in this post: Blocks &amp; AISACs.<\/p>\n<p><span style=\"text-decoration: underline;\">Using the AISACs (click on the picture to watch the video)<\/span><\/p>\n<p><a href=\"https:\/\/youtu.be\/yZS6bAKuxYU\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1058\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_40-1024x562.png\" alt=\"ADX2_IM_40\" width=\"800\" height=\"439\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_40-1024x562.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_40-300x165.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_40-768x422.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_40.png 1592w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline;\">Using the Blocks (click on the picture to watch the video)<\/span><\/p>\n<p><a href=\"https:\/\/youtu.be\/enAvqiA2DlI\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1059\" src=\"http:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_41-1024x409.png\" alt=\"ADX2_IM_41\" width=\"800\" height=\"320\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_41-1024x409.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_41-300x120.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_41-768x307.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2017\/04\/ADX2_IM_41.png 1792w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p><em>This concludes our post about the ADX2\u2019s interactive music system. Let us know if you want to learn more about a specific ADX2 feature!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post explains how to implement interactive music in your game with AtomCraft. &nbsp; Music in Video Games In our<\/p>\n","protected":false},"author":2,"featured_media":1060,"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-1017","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\/1017","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=1017"}],"version-history":[{"count":26,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/1017\/revisions"}],"predecessor-version":[{"id":1094,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/1017\/revisions\/1094"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/1060"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}