{"id":4084,"date":"2023-01-16T09:46:58","date_gmt":"2023-01-16T00:46:58","guid":{"rendered":"https:\/\/blog.criware.com\/?p=4084"},"modified":"2024-05-21T11:03:30","modified_gmt":"2024-05-21T02:03:30","slug":"music-radio-system","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2023\/01\/16\/music-radio-system\/","title":{"rendered":"Music Radio System"},"content":{"rendered":"<p>Games set in modern settings offer a wide selection of background music through the clever implementation of broadcasting systems such as radios. In this post, we will design such a system in AtomCraft, adding a vintage feel by simulating a dial to browse through the different channels.<\/p>\n<div class=\"wp-video\" style=\"width: 800px; display: block; margin: 40px auto;\">\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-4084-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/Video-Radio-Design.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/Video-Radio-Design.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/Video-Radio-Design.mp4<\/a><\/video><\/div>\n<\/div>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Sequential Cues<\/h2>\n<p>As a radio station is just a playlist after all, we can simply use a <strong>Sequential Cue<\/strong> to embed all its music material. Each time this type of Cue is triggered, the next track &#8211; based on its position from top to bottom in the timeline view \u2013 is played. The <em>Playback Mode<\/em> of the Cue, once switched to <em>PlayList<\/em>, allows for all the tracks to be played sequentially without interruption from a single trigger. Of course, you can create as many Sequential Cues as you have radio stations in your game.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4087\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/01-Sequential-Cue.png\" alt=\"01 Sequential Cue\" width=\"949\" height=\"552\" style=\"display: block; margin: auto;\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/01-Sequential-Cue.png 949w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/01-Sequential-Cue-300x174.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/01-Sequential-Cue-768x447.png 768w\" sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/p>\n<p>For every music, jingle, ad, talk segment that compose the station\u2019s program grid, a new track should be created. Using a SubSequence on a track can also open a lot of possibilities. For instance, you could add a <strong>SubSequence<\/strong> of <em>Random<\/em> type to trigger random jingles. You could also use a Polyphonic SubSequence as a DAW-style multi-track timeline to create and edit interludes where the sound effects, music and voice over would be separated layers. Doing so not only makes it possible to use the <strong>dialogue localization features<\/strong> of AtomCraft to automatically switch the voice to the correct language, but also to use <strong>automation<\/strong> for mixing. In addition, keeping the assets in different layers makes it easier to update the materials without having to re-render everything.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4088\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/02-SubSequence.png\" alt=\"02 SubSequence\" width=\"1118\" height=\"567\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/02-SubSequence.png 1118w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/02-SubSequence-300x152.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/02-SubSequence-768x389.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/02-SubSequence-1024x519.png 1024w\" sizes=\"auto, (max-width: 1118px) 100vw, 1118px\" \/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Radio Tuning<\/h2>\n<p>Once all your radio stations have been created in their respective Sequential Cues, we can add an analogue radio tuning effect while browsing through them:<\/p>\n<ul>\n<li>First, create a <strong>Polyphonic Cue<\/strong> called Radio.<\/li>\n<li>In this Cue, add a track for each radio station.<\/li>\n<li>Then, drag and drop each Sequential Cue into their respective track to create <strong>Cue Links<\/strong>.<\/li>\n<li>Finally, create an additional track for a radio noise\/static sound that you will have designed in your DAW.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4089\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/03-Radio-Cue.png\" alt=\"03 Radio Cue\" width=\"1277\" height=\"630\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/03-Radio-Cue.png 1277w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/03-Radio-Cue-300x148.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/03-Radio-Cue-768x379.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/03-Radio-Cue-1024x505.png 1024w\" sizes=\"auto, (max-width: 1277px) 100vw, 1277px\" \/><\/p>\n<p>If you play the Cue now, every station will play simultaneously which is\u2026 not the desired effect. We need to create an AISAC that will act as a dial to sweep the range of radio frequencies and pick up the stations associated with the different frequency bands.<\/p>\n<ul>\n<li>First, create an <strong>AISAC-Control<\/strong> called Frequency.<\/li>\n<li>Then, on the Radio Cue, use the Frequency AISAC to control the <em>Volume<\/em> of each track.<\/li>\n<li>Do the same to control the <em>BandPass \u2013 Cutoff Low<\/em> parameter of each track, except for the radio noise track.<\/li>\n<li>Now, for each radio station, draw a bell-shaped <em>Volume <\/em>graph on a small part of the Frequency AISAC.<\/li>\n<li>Spread the radio stations along the AISAC.<\/li>\n<li>Make sure to align the graphs for the <em>Volume<\/em> and the <em>BandPass \u2013 Cutoff Low <\/em><\/li>\n<li>Finally, lower the <em>Volume<\/em> graph of the radio noise track when the volume of one of the radio stations is increasing.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4090\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/04-Aisac.png\" alt=\"04 Aisac\" width=\"1381\" height=\"597\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/04-Aisac.png 1381w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/04-Aisac-300x130.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/04-Aisac-768x332.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/04-Aisac-1024x443.png 1024w\" sizes=\"auto, (max-width: 1381px) 100vw, 1381px\" \/><\/p>\n<p>You can now start playing the Radio Cue and sweep the frequency range using the AISAC, as you would with an analog radio dial. Simply move your AISAC cursor in the frequency bands of the stations to listen to them.<\/p>\n<p>Download the full project below and start experimenting by creating different radio channels, it is quite fun to implement!<\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align: center;\"><a style=\"display: block; border: 1px solid #ccc; padding: 20px; max-width: 100%; margin: 0 auto;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2023\/01\/AtomCraft_Project_RadioDesign.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1813\" style=\"display: block; margin: 0 auto;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" \/>AtomCraft_Project_RadioDesign.zip<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Games set in modern settings offer a wide selection of background music through the clever implementation of broadcasting systems such<\/p>\n","protected":false},"author":2,"featured_media":5511,"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-4084","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\/4084","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=4084"}],"version-history":[{"count":14,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/4084\/revisions"}],"predecessor-version":[{"id":5513,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/4084\/revisions\/5513"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/5511"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=4084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=4084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=4084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}