{"id":37744,"date":"2024-12-31T12:06:49","date_gmt":"2024-12-31T12:06:49","guid":{"rendered":"https:\/\/new-blog.artlist.io\/blog\/?p=37744"},"modified":"2024-12-31T12:06:53","modified_gmt":"2024-12-31T12:06:53","slug":"how-to-make-your-audience-cry","status":"publish","type":"post","link":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/","title":{"rendered":"How to make your audience cry: a guide to creating deep emotional impact"},"content":{"rendered":"\n<p>As filmmakers, the ability to evoke an emotional response from your audience is one of the most powerful tools at your disposal. Certain moments resonate deeply with viewers, whether it\u2019s a scene in a movie, TV show, or even a brand story. But how exactly do filmmakers create these moments that make us cry? In this guide, we\u2019ll explore the techniques and elements you can use to tap into the raw emotion of your audience.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The power of emotive storytelling<\/h2>\n\n\n\n<p>Storytelling is inherently emotional, and throughout history, humans have used stories to share their experiences and pass on information. The first step to making your audience cry is recognizing the power of emotion in storytelling. It\u2019s not just about creating sad scenes \u2013 it\u2019s about creating meaningful moments that connect with the viewers on a deeper level.<\/p>\n\n\n\n<p>Movies that make you cry often do so by capturing moments of vulnerability, triumph, or connection. Importantly, it\u2019s not always sadness that brings on the tears. Happy or triumphant moments \u2013 such as a character achieving their dreams after years of struggle \u2013 can also bring a rush of emotion.<\/p>\n\n\n\n\n    <div class=\"clipsContainer\" id=\"69d07edc5523f\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"footage\" == 'footage') {\n                if(\"753505\" == '') { \/\/ if this is a request for multiple clips by attributes\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query ClipList($page: Int, $sortType: Int, $categoryIds: String, $searchTerm: String) {\n\t\t\t\t\t\t\t\tclipList(page: $page, sortType: $sortType, categoryIds: $categoryIds, searchTerm: $searchTerm) {\n\t\t\t\t\t\t\t\t  exactResults  {\n\t\t\t\t\t\t\t\t\tclipPath\n\t\t\t\t\t\t\t\t\tclipNameForUrl\n\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\tisNew\n\t\t\t\t\t\t\t\t\tfilmMakerDisplayName\n\t\t\t\t\t\t\t\t\timageUrl\n\t\t\t\t\t\t\t\t\tthumbnailUrl\n\t\t\t\t\t\t\t\t\twidth\n\t\t\t\t\t\t\t\t\tvideoUrl\n\t\t\t\t\t\t\t\t\trawFileExt\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n\t\t\t\t\t\t\t\t\"page\": 1,\n\t\t\t\t\t\t\t\t\"sortType\": 1,\n\t\t\t\t\t\t\t\t\"categoryIds\": null,\n\t\t\t\t\t\t\t\t\"searchTerm\": \"\"\n\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('footage list: ', res);\n                            var data = res.data.clipList.exactResults;\n                            if ($(\"#69d07edc5523f\").length && data.length > 0) {\n                                createClipsGrid(data, \"69d07edc5523f\");\n                            } else if ($(\"#69d07edc5523f\").length && data.length == 0) {\n                                $(\"#69d07edc5523f\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                } else if(\"753505\" !== '') { \/\/ if this is a request for a specific clip by id\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query Clip($clipId: Int!) {\n\t\t\t\t\t\t\t\tclip(id: $clipId) {\n\t\t\t\t\t\t\t\t\tclipPath\n\t\t\t\t\t\t\t\t\tclipNameForUrl\n\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\tisNew\n\t\t\t\t\t\t\t\t\tfilmMakerDisplayName\n\t\t\t\t\t\t\t\t\timageUrl\n\t\t\t\t\t\t\t\t\tthumbnailUrl\n\t\t\t\t\t\t\t\t\twidth\n\t\t\t\t\t\t\t\t\tvideoUrl\n\t\t\t\t\t\t\t\t\trawFileExt\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n\t\t\t\t\t\t\t\t\"clipId\": 753505\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('specific footage: ', res);\n                            var data = res.data.clip;\n                            if ($(\"#69d07edc5523f\").length && data !== '') {\n                                createClipsGrid(data, \"69d07edc5523f\");\n                            } else if ($(\"#69d07edc5523f\").length && data.length == '') {\n                                $(\"#69d07edc5523f\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                }\n            } else if(\"footage\" == 'templates') {\n                if(\"753505\" === '') {\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query TemplatesList($payload: TemplatesByTermSearchPayload!) {\n                                templatesList(payload: $payload) {\n                                    nameForUrl\n                                    id\n                                    name\n                                    isNew\n                                    artistName\n                                    thumbnailUrl\n                                    previewVideoFileUrl\n                                }\n                            }`,\n                            variables: `{\n                                \"payload\": {\n                                    \"page\": 1,\n                                    \"take\": 1,\n                                    \"sortBy\": \"1\",\n                                    \"categories\": null,\n                                    \"searchTerms\": \"\"\n                                }\n                            }`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('templates list: ', res);\n                            var data = res.data.templatesList;\n                            if ($(\"#69d07edc5523f\").length && data.length > 0) {\n                                createClipsGrid(data, \"69d07edc5523f\");\n                            } else if ($(\"#69d07edc5523f\").length && data.length == 0) {\n                                $(\"#69d07edc5523f\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                    } else if(\"753505\" !== '') {\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query Template($ids: [String!]!, $page: Int!, $take: Int!) {\n\t\t\t\t\t\t\t\ttemplatesByIds(ids: $ids, page: $page, take: $take) {\n\t\t\t\t\t\t\t\t\tnameForUrl\n                                    id\n                                    name\n                                    isNew\n                                    artistName\n                                    thumbnailUrl\n                                    previewVideoFileUrl\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n                                \"ids\": [\"753505\"],\n                                \"page\": 1,\n                                \"take\": 1\n\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('specific template: ', res);\n                            var data = res.data.templatesByIds[0];\n                            if ($(\"#69d07edc5523f\").length && data !== '') {\n                                createClipsGrid(data, \"69d07edc5523f\");\n                            } else if ($(\"#69d07edc5523f\").length && data.length == '') {\n                                $(\"#69d07edc5523f\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                }\n            }\n\n            function createClipsGrid(data, clipsContainerId){\n                const container = $(\"#\" + clipsContainerId);\n                let playerSrc = '';\n\n                $.each(data, function(index, clip) {\n                    if(\"753505\" !== '') { \/\/ if this is a request for a specific clip by id - then the data is not an array of clips but only one clip and that's why the \"clip\" variable is actually the \"data\"\n                        index = 0\n                        clip = data;\n                    }\n                    if ((index) < 1) {\n                        \/\/ clip container\n                        const clipContainer = $(\"<div>\").addClass(\"clipContainer single_clip\");\n                        \/\/ new badge\n                        if (clip.isNew) {\n                            clipContainer.append('<span class=\"isNewBadge\">NEW<\/span>');\n                        }\n                        \/\/ video\n                        let videoElement = document.createElement('video');\n                        videoElement.setAttribute('playsinline', '');\n                        videoElement.setAttribute('webkit-playsinline', '');\n                        videoElement.setAttribute('x5-playsinline', '');\n                        videoElement.setAttribute('preload', 'auto');\n                        \n                        clipContainer.append(videoElement);\n                        \/\/ clip name and artist name\n                        let clipName = '';\n                        let artistName = '';\n                        if(\"footage\" == 'footage') {\n                            clipName = clip.clipNameForUrl;\n                            clipName = clipName.replace(\/-\/g, \", \");\n                            clipName = $(\"<a>\").addClass(\"clipName\").attr(\"href\", \"https:\/\/artlist.io\/stock-footage\/clip\/\" + clip.clipNameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").text(clipName);\n                            artistName = $(\"<div>\").addClass(\"artistName\").text('By ' + clip.filmMakerDisplayName + '');\n                        } else if(\"footage\" == 'templates') {\n                            clipName = $(\"<a>\").addClass(\"clipName\").attr(\"href\", \"https:\/\/artlist.io\/video-templates\/\" + clip.nameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").text(clip.name);\n                            artistName = $(\"<div>\").addClass(\"artistName\").text('By ' + clip.artistName + '');\n                        }\n                        const clipNames = $(\"<span>\").addClass(\"clipNames\").append(clipName, artistName);\n                        \/\/ download button\n                        let clipDownload = '';\n                        if(\"footage\" == 'footage') {\n                            clipDownload = $(\"<a>\").addClass(\"clipDownload\").attr(\"href\", \"https:\/\/artlist.io\/stock-footage\/clip\/\" + clip.clipNameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").html('<i class=\"icon download white\"><\/i>');\n                        } else if(\"footage\" == 'templates') {\n                            clipDownload = $(\"<a>\").addClass(\"clipDownload\").attr(\"href\", \"https:\/\/artlist.io\/video-templates\/\" + clip.nameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").html('<i class=\"icon download white\"><\/i>');\n                        }\n                        \/\/ overlay\n                        const overlay = $(\"<div>\").addClass(\"overlay\");\n                        overlay.append(clipNames, clipDownload);\n\n                        \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                        clipContainer.append(videoElement, overlay);\n\n                        \/\/ if this is a preview of only one specific clip (by id)\n                        if(\"753505\" !== '') {\n                            $(container).addClass(\"clipContainerSingular\")\n                        }\n\n                        \/\/ append audio player container into main playlist container\n                        container.append(clipContainer[0]);\n\n                        if(\"footage\" == 'footage') {\n                            playerSrc =  clip.clipPath;\n                        } else if(\"footage\" == 'templates') {\n                            playerSrc =  clip.previewVideoFileUrl;\n                        }\n                        const player = videojs(videoElement, {\n                            muted: true,\n                            autoplay: true,\n                        });\n\n                        player.src({\n                            src: playerSrc,\n                            type: 'application\/x-mpegURL'\n                        });\n\n                        \/* SEGMENT EVENTS *\/\n                        const special_data = getProps();\n\n                        \/* media played *\/\n                        var $videoElement = $(videoElement);\n                        $videoElement.on('play', function() {\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/* media paused *\/\n                        var $videoElement = $(videoElement);\n                        $videoElement.on('pause', function() {\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/* media viewed *\/\n                        const observer = new IntersectionObserver(entries => {\n                            entries.forEach(entry => {\n                                if (entry.isIntersecting) {\n                                    var assetId = clip.id;\n                                    var artist = clip.filmMakerDisplayName || clip.artistName;\n                                    var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                                    var asset_type = null;\n                                    if(\"footage\" == 'footage') {\n                                        asset_type = 'footage';\n                                    } else if(\"footage\" == 'templates') {\n                                        asset_type = 'template';\n                                    }\n                                    analytics.track(\"media viewed\", {\n                                        asset_id: assetId || null,\n                                        asset_type: asset_type || null,\n                                        click_source: 'player',\n                                        artist: artist || null,\n                                        title: title || null,\n                                        genre: null,\n                                        ...special_data,\n                                    });\n                                    observer.unobserve(entry.target);\n                                }\n                            });\n                        }, {\n                            threshold: 0.5\n                        });\n                        observer.observe($videoElement[0]);\n\n                        \/* media downloaded *\/\n                        $videoElement.closest('.clipContainer').find('.clipName').on('click', function() {\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media downloaded\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n                        $videoElement.closest('.clipContainer').find('.clipDownload').on('click', function() {\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media downloaded\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/\/ check screen size\n                        var mobileScreen = window.matchMedia('(max-width: 767px)');\n                        if (mobileScreen.matches) { \/\/ mobile\n                            const observer = new IntersectionObserver(function(entries) {\n                                entries.forEach(entry => {\n                                    if (entry.isIntersecting) {\n                                        player.play(); \/\/ Play the video when it enters the viewport\n                                    } else {\n                                        player.pause(); \/\/ Pause the video when it goes out of the viewport\n                                    }\n                                });\n                            });\n                            observer.observe(videoElement);\n                        } else { \/\/ desktop\n                            clipContainer.on('mouseenter', function() {\n                                player.play();\n                            });\n\n                            clipContainer.on('mouseleave', function() {\n                                player.pause();\n                            });\n                        }\n\n                    }\n                    if(\"753505\" !== '') { \/\/ if this is a request for a specific clip by id - then break out of loop after first time bc it's not an array\n                        return false;\n                    }\n                });\n            }\n\n        });\n    <\/script>\n\n    \n\n\n\n<h2 class=\"wp-block-heading\">How to build emotion in your audience<\/h2>\n\n\n\n<p>Building emotion isn\u2019t about manipulating your viewers with melodramatic moments. Instead, you should aim to create a deep connection between your characters and the audience. By carefully crafting a narrative that allows viewers to form a bond with the characters, you can make a more powerful payoff when the emotional moments arrive.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Scriptwriting and narrative<\/strong><\/h3>\n\n\n\n<p>A well-crafted script with strong character development is essential for any impactful scene. <a href=\"https:\/\/artlist.io\/blog\/how-to-write-a-short-film\/\">Script writing<\/a> is a crucial stage as characters must be relatable and multi-dimensional \u2013 their actions and decisions should drive the plot in a natural and earned way. To truly bring your audience to tears, the emotions in your script should flow organically from the story and the characters\u2018 choices.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/artlist.io\/blog\/3-act-story-structure\/\">three-act structure<\/a> plays a key role here, with meaningful resolution typically arriving in the third act when characters confront the consequences of their actions. In script writing, building emotional tension and stakes in the first two acts sets up a powerful payoff in the third, ensuring the dramatic release feels earned and deeply impactful.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Correct timings<\/strong><\/h3>\n\n\n\n<p>Timing is everything in emotional scenes. Whether you\u2019re cutting to a reaction shot, lingering on a character\u2019s face, or adjusting the pace of dialogue, the timing of each shot can either amplify or undermine the effect on the audience. Editing emotional scenes takes patience and close attention to detail \u2013 from the score and sound effects to the performance and script, everything needs to work together.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Powerful performances<\/strong><\/h3>\n\n\n\n<p>Emotional scenes are only as powerful as the performances that bring them to life, and the right actor can elevate a scene from good to unforgettable. But creating that emotional impact isn\u2019t just about a well-written monologue at the end \u2013 it starts from the very beginning.&nbsp;<\/p>\n\n\n\n<p>Audiences need to connect with the actors on a human level throughout so the emotion feels genuine and earned. The reactions of supporting actors are just as important, as they add depth and authenticity to the emotion in your scene.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Music and score<\/strong><\/h3>\n\n\n\n<p>A score plays a vital role in creating a film\u2019s emotional impact, and knowing <a href=\"https:\/\/artlist.io\/blog\/how-to-add-music-to-a-video\/\">how to add music to a video<\/a> is key to creating an emotionally charged scene. A well-chosen music track or song can heighten feelings and draw the audience deeper into the moment.<\/p>\n\n\n\n<p>For instance, a soft piano melody, much like <a href=\"https:\/\/artlist.io\/royalty-free-music\/categories\/sad\" target=\"_blank\" rel=\"noreferrer noopener\">sad songs<\/a>, can evoke a longing or sorrow, while a rising crescendo can build a sense of triumph. <a href=\"https:\/\/artlist.io\/blog\/music-score\/\">Music scores<\/a> should do more than simply match the scene \u2014 it should intensify the emotion and deepen the connection to the story, making the viewer feel what the characters are experiencing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sound design and ambiance<\/strong><\/h3>\n\n\n\n<p>Sound effects can help you pull your audience deeper into the character\u2019s world, making them feel like they\u2019re experiencing the action firsthand. By adding subtle details, like the sound of a racing heartbeat or soft rain on the window, you can support the action in a scene while creating a more significant emotional response.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Filming techniques<\/strong><\/h3>\n\n\n\n<p>Techniques like <a href=\"https:\/\/artlist.io\/blog\/the-power-of-the-close-up-shot-why-when-and-how-to-use-it\/\">close-ups<\/a>, <a href=\"https:\/\/artlist.io\/blog\/types-of-focus\/\">shallow focus<\/a>, and slow zoom-ins can help highlight the emotion in an actor\u2019s performance. Wide shots, meanwhile, can emphasize isolation or emptiness.<\/p>\n\n\n\n<p>The framing of your shots can reveal a lot about a character\u2019s emotional state, helping to recreate that feeling for the audience and immerse them in the character\u2019s experience.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Top 3 sad songs on Artlist<\/h2>\n\n\n\n    <div class=\"playlist\" id=\"69d07edc553a3\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"songs\" == 'songs') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SongList($page: Int!, $songSortType: Int!, $take: Int!, $vocalMenuId: Int!, $categoryIds: [Int], $collectionId: String, $searchTerm: String) {\n                        songList(page: $page, songSortType: $songSortType, take: $take, vocalMenuId: $vocalMenuId, categoryIds: $categoryIds, collectionId: $collectionId, searchTerm: $searchTerm) {\n                          songs {\n                            songId\n                            songName\n                            artistName\n                            isNew\n                            nameForURL\n                            sitePlayableFilePath\n\t\t\t\t\t\t\talbumImageFilePath\n\t\t\t\t\t\t\trelativeUrl\n                          }\n                          totalResults\n                        }\n                    }`,\n                        variables: JSON.stringify({\n                            \"page\": 1,\n                            \"songSortType\": 1,\n                            \"take\": 1,\n                            \"vocalMenuId\": 1,\n                            \"categoryIds\": null,\n                            \"searchTerm\": \"A Touch of Dream\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('songs list: ', res);\n                        var data = res.data.songList.songs;\n                        if ($(\"#69d07edc553a3\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07edc553a3\");\n                        } else if ($(\"#69d07edc553a3\").length && data.length == 0) {\n                            $(\"#69d07edc553a3\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            } else if(\"songs\" == 'sfx') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SfxList($categoryIds: String!, $page: Float!, $tags: String!, $term: String!, $sortBy: SfxListRequestSortByOptions!) {\n\t\t\t\t\t\t\t\tsfxList(categoryIds: $categoryIds, page: $page, tags: $tags, term: $term, sortBy: $sortBy) {\n\t\t\t\t\t\t\t\t  page\n\t\t\t\t\t\t\t\t  songs {\n\t\t\t\t\t\t\t\t\t  albumImageFilePath\n\t\t\t\t\t\t\t\t\t  artistName\n\t\t\t\t\t\t\t\t\t  isNew\n\t\t\t\t\t\t\t\t\t  nameForURL\n\t\t\t\t\t\t\t\t\t  relativeUrl\n\t\t\t\t\t\t\t\t\t  sitePlayableFilePath        \n\t\t\t\t\t\t\t\t\t  songId \n\t\t\t\t\t\t\t\t\t  songName\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                        variables: JSON.stringify({\n                            \"categoryIds\": \"\",\n                            \"page\": 1,\n                            \"tags\": \"\",\n                            \"term\": \"A Touch of Dream\",\n                            \"sortBy\": \"1\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('sfx list: ', res);\n                        var data = res.data.sfxList.songs;\n                        if ($(\"#69d07edc553a3\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07edc553a3\");\n                        } else if ($(\"#69d07edc553a3\").length && data.length == 0) {\n                            $(\"#69d07edc553a3\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            }\n\n            function createAudioPlayers(data, playlistId) {\n                \/\/ main playlist container\n                const playlistContainer = $(\"#\" + playlistId);\n                \/\/ wavesurfers array\n                \/\/ const wavesurfers = [];\n                \/\/ loop over every song returned\n\n                if(!allWavesurfers){\n                    var allWavesurfers = [];\n                }\n                $.each(data, function(index, audio) {\n                    \/\/ if current type is sfx and current looped index is bigger than amount wanted via shortcode - then stop loop (because sfx request doesn't have \"take\" variable)\n                    if(\"songs\" == 'sfx' && (index + 1) > 1) {\n                        return false;\n                    }\n\n                    \/\/ audio player container\n                    const audioPlayer = $(\"<div>\").addClass(\"audioPlayer\");\n                    \/\/ album image\n                    const audioImage = $(\"<div>\").addClass(\"audioImage\");\n                    audioImage.append('<img decoding=\"async\" src=\"' + audio.albumImageFilePath + '\"\/>');\n                    \/\/ audio controls\n                    const audioControls = $(\"<div>\").addClass(\"audioControls\");\n                    const playPauseButton = $(\"<button>\").addClass(\"playPauseButton\").html('<i class=\"fas fa-play\"><\/i>');\n                    audioControls.append(playPauseButton);\n                    \/\/ song url\n                    var songUrl;\n                    if(\"songs\" == 'songs') {\n                        songUrl = 'https:\/\/artlist.io\/royalty-free-music\/song\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    } else if(\"songs\" == 'sfx') {\n                        songUrl = 'https:\/\/artlist.io\/sfx\/track\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    }\n                    \/\/ song name and artist name\n                    const audioNames = $(\"<div>\").addClass(\"audioNames\");\n                    const songName = $(\"<a>\").addClass(\"songName\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").text(audio.songName);\n                    if (audio.isNew) {\n                        songName.append('<span class=\"isNewBadge\">NEW<\/span>');\n                    }\n                    const artistName = $(\"<span>\").addClass(\"artistName\").text(audio.artistName);\n                    audioNames.append(songName, artistName);\n                    \/\/ audio waveform container\n                    const audioWaveform = $(\"<div>\").addClass(\"audioWaveform\");\n                    \/\/ download button\n                    const audioDownload = $(\"<a>\").addClass(\"audioDownload\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").html('<i class=\"icon download medium\"><\/i>');\n\n\n                    \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                    audioPlayer.append(audioImage, audioControls, audioNames, audioWaveform, audioDownload);\n\n                    \/\/ append audio player container into main playlist container\n                    playlistContainer.append(audioPlayer);\n\n                    \/* media viewed SEGMENT EVENT *\/\n                    const special_data = getProps();\n\n                    const observer = new IntersectionObserver(entries => {\n                        entries.forEach(entry => {\n                            if (entry.isIntersecting) {\n                                var assetId = audio.songId;\n                                var artist = audio.artistName;\n                                var title = audio.songName;\n                                var asset_type = null;\n                                if(\"songs\" == 'songs') {\n                                    asset_type = 'song';\n                                } else if(\"songs\" == 'sfx') {\n                                    asset_type = 'sfx';\n                                }\n                                analytics.track(\"media viewed\", {\n                                    asset_id: assetId || null,\n                                    asset_type: asset_type || null,\n                                    click_source: 'player',\n                                    artist: artist || null,\n                                    title: title || null,\n                                    genre: null,\n                                    ...special_data,\n                                });\n                                observer.unobserve(entry.target);\n                            }\n                        });\n                    }, {\n                        threshold: 0.5\n                    });\n                    observer.observe(audioPlayer[0]);\n\n                    \/\/ check screen size\n                    var mobileScreen = window.matchMedia('(max-width: 767px)');\n                    var waveformHeight = '';\n                    if (mobileScreen.matches) { \/\/ mobile\n                        waveformHeight = 15;\n                    } else { \/\/ desktop\n                        waveformHeight = 40;\n                    }\n\n                    \/\/ create wavesurfer instance\n                    const waveformId = `waveform-${playlistId}-${index}`; \/\/ Generate a unique ID for each waveform\n                    const waveformContainer = $(\"<div>\").attr(\"id\", waveformId).addClass(\"waveformContainer\");\n                    audioWaveform.append(waveformContainer);\n                    const wavesurfer = WaveSurfer.create({\n                        container: `#${waveformId}`,\n                        waveColor: \"#b1b1b1\",\n                        progressColor: \"#171717\",\n                        cursorColor: \"transparent\",\n                        height: waveformHeight,\n                        normalize: true,\n                    });\n                    \/\/ push current wavesurfer into wavesurfers array\n                    \/\/ wavesurfers.push(wavesurfer);\n                    allWavesurfers.push(wavesurfer);\n                    \/\/ load audio file into new wavesurfer\n                    wavesurfer.load(audio.sitePlayableFilePath);\n\n                    \/\/ add event listener to the play\/pause button\n                    playPauseButton.on(\"click\", () => {\n                        if (wavesurfer.isPlaying()) {\n                            wavesurfer.pause();\n                            playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n\n                            \/* media paused SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        } else {\n                            \/\/ pause all other audios that may be playing\n                            $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                            $.each(allWavesurfers, function(index, audio) {\n                                allWavesurfers[index].pause();\n                            });\n                            \/\/ then play current audio\n                            wavesurfer.play();\n                            playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n\n                            \/* media played SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        }\n                    });\n\n                    \/* media downloaded SEGMENT EVENT *\/\n                    audioDownload.on(\"click\", () => {\n                        var assetId = audio.songId;\n                        var artist = audio.artistName;\n                        var title = audio.songName;\n                        var asset_type = null;\n                        if(\"songs\" == 'songs') {\n                            asset_type = 'song';\n                        } else if(\"songs\" == 'sfx') {\n                            asset_type = 'sfx';\n                        }\n                        analytics.track(\"media downloaded\", {\n                            asset_id: assetId || null,\n                            asset_type: asset_type || null,\n                            click_source: 'player',\n                            artist: artist || null,\n                            title: title || null,\n                            genre: null,\n                            ...special_data,\n                        });\n                    });\n\n                    \/\/ add event listener to the click on the wave itself\n                    audioWaveform.on(\"click\", () => {\n                        setTimeout(() => {\n                            if (wavesurfer.isPlaying()) {\n                                wavesurfer.pause();\n                                playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n                            } else {\n                                \/\/ pause all other audios that may be playing\n                                $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                                $.each(allWavesurfers, function(index, audio) {\n                                    allWavesurfers[index].pause();\n                                });\n                                \/\/ then play current audio\n                                wavesurfer.play();\n                                playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n                            }\n                        }, \"200\");\n                    });\n\n                });\n            }\n\n        });\n    <\/script>\n\n    \n\n\n\n    <div class=\"playlist\" id=\"69d07edc5545f\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"songs\" == 'songs') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SongList($page: Int!, $songSortType: Int!, $take: Int!, $vocalMenuId: Int!, $categoryIds: [Int], $collectionId: String, $searchTerm: String) {\n                        songList(page: $page, songSortType: $songSortType, take: $take, vocalMenuId: $vocalMenuId, categoryIds: $categoryIds, collectionId: $collectionId, searchTerm: $searchTerm) {\n                          songs {\n                            songId\n                            songName\n                            artistName\n                            isNew\n                            nameForURL\n                            sitePlayableFilePath\n\t\t\t\t\t\t\talbumImageFilePath\n\t\t\t\t\t\t\trelativeUrl\n                          }\n                          totalResults\n                        }\n                    }`,\n                        variables: JSON.stringify({\n                            \"page\": 1,\n                            \"songSortType\": 1,\n                            \"take\": 1,\n                            \"vocalMenuId\": 1,\n                            \"categoryIds\": null,\n                            \"searchTerm\": \"A Loving Hand\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('songs list: ', res);\n                        var data = res.data.songList.songs;\n                        if ($(\"#69d07edc5545f\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07edc5545f\");\n                        } else if ($(\"#69d07edc5545f\").length && data.length == 0) {\n                            $(\"#69d07edc5545f\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            } else if(\"songs\" == 'sfx') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SfxList($categoryIds: String!, $page: Float!, $tags: String!, $term: String!, $sortBy: SfxListRequestSortByOptions!) {\n\t\t\t\t\t\t\t\tsfxList(categoryIds: $categoryIds, page: $page, tags: $tags, term: $term, sortBy: $sortBy) {\n\t\t\t\t\t\t\t\t  page\n\t\t\t\t\t\t\t\t  songs {\n\t\t\t\t\t\t\t\t\t  albumImageFilePath\n\t\t\t\t\t\t\t\t\t  artistName\n\t\t\t\t\t\t\t\t\t  isNew\n\t\t\t\t\t\t\t\t\t  nameForURL\n\t\t\t\t\t\t\t\t\t  relativeUrl\n\t\t\t\t\t\t\t\t\t  sitePlayableFilePath        \n\t\t\t\t\t\t\t\t\t  songId \n\t\t\t\t\t\t\t\t\t  songName\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                        variables: JSON.stringify({\n                            \"categoryIds\": \"\",\n                            \"page\": 1,\n                            \"tags\": \"\",\n                            \"term\": \"A Loving Hand\",\n                            \"sortBy\": \"1\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('sfx list: ', res);\n                        var data = res.data.sfxList.songs;\n                        if ($(\"#69d07edc5545f\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07edc5545f\");\n                        } else if ($(\"#69d07edc5545f\").length && data.length == 0) {\n                            $(\"#69d07edc5545f\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            }\n\n            function createAudioPlayers(data, playlistId) {\n                \/\/ main playlist container\n                const playlistContainer = $(\"#\" + playlistId);\n                \/\/ wavesurfers array\n                \/\/ const wavesurfers = [];\n                \/\/ loop over every song returned\n\n                if(!allWavesurfers){\n                    var allWavesurfers = [];\n                }\n                $.each(data, function(index, audio) {\n                    \/\/ if current type is sfx and current looped index is bigger than amount wanted via shortcode - then stop loop (because sfx request doesn't have \"take\" variable)\n                    if(\"songs\" == 'sfx' && (index + 1) > 1) {\n                        return false;\n                    }\n\n                    \/\/ audio player container\n                    const audioPlayer = $(\"<div>\").addClass(\"audioPlayer\");\n                    \/\/ album image\n                    const audioImage = $(\"<div>\").addClass(\"audioImage\");\n                    audioImage.append('<img decoding=\"async\" src=\"' + audio.albumImageFilePath + '\"\/>');\n                    \/\/ audio controls\n                    const audioControls = $(\"<div>\").addClass(\"audioControls\");\n                    const playPauseButton = $(\"<button>\").addClass(\"playPauseButton\").html('<i class=\"fas fa-play\"><\/i>');\n                    audioControls.append(playPauseButton);\n                    \/\/ song url\n                    var songUrl;\n                    if(\"songs\" == 'songs') {\n                        songUrl = 'https:\/\/artlist.io\/royalty-free-music\/song\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    } else if(\"songs\" == 'sfx') {\n                        songUrl = 'https:\/\/artlist.io\/sfx\/track\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    }\n                    \/\/ song name and artist name\n                    const audioNames = $(\"<div>\").addClass(\"audioNames\");\n                    const songName = $(\"<a>\").addClass(\"songName\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").text(audio.songName);\n                    if (audio.isNew) {\n                        songName.append('<span class=\"isNewBadge\">NEW<\/span>');\n                    }\n                    const artistName = $(\"<span>\").addClass(\"artistName\").text(audio.artistName);\n                    audioNames.append(songName, artistName);\n                    \/\/ audio waveform container\n                    const audioWaveform = $(\"<div>\").addClass(\"audioWaveform\");\n                    \/\/ download button\n                    const audioDownload = $(\"<a>\").addClass(\"audioDownload\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").html('<i class=\"icon download medium\"><\/i>');\n\n\n                    \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                    audioPlayer.append(audioImage, audioControls, audioNames, audioWaveform, audioDownload);\n\n                    \/\/ append audio player container into main playlist container\n                    playlistContainer.append(audioPlayer);\n\n                    \/* media viewed SEGMENT EVENT *\/\n                    const special_data = getProps();\n\n                    const observer = new IntersectionObserver(entries => {\n                        entries.forEach(entry => {\n                            if (entry.isIntersecting) {\n                                var assetId = audio.songId;\n                                var artist = audio.artistName;\n                                var title = audio.songName;\n                                var asset_type = null;\n                                if(\"songs\" == 'songs') {\n                                    asset_type = 'song';\n                                } else if(\"songs\" == 'sfx') {\n                                    asset_type = 'sfx';\n                                }\n                                analytics.track(\"media viewed\", {\n                                    asset_id: assetId || null,\n                                    asset_type: asset_type || null,\n                                    click_source: 'player',\n                                    artist: artist || null,\n                                    title: title || null,\n                                    genre: null,\n                                    ...special_data,\n                                });\n                                observer.unobserve(entry.target);\n                            }\n                        });\n                    }, {\n                        threshold: 0.5\n                    });\n                    observer.observe(audioPlayer[0]);\n\n                    \/\/ check screen size\n                    var mobileScreen = window.matchMedia('(max-width: 767px)');\n                    var waveformHeight = '';\n                    if (mobileScreen.matches) { \/\/ mobile\n                        waveformHeight = 15;\n                    } else { \/\/ desktop\n                        waveformHeight = 40;\n                    }\n\n                    \/\/ create wavesurfer instance\n                    const waveformId = `waveform-${playlistId}-${index}`; \/\/ Generate a unique ID for each waveform\n                    const waveformContainer = $(\"<div>\").attr(\"id\", waveformId).addClass(\"waveformContainer\");\n                    audioWaveform.append(waveformContainer);\n                    const wavesurfer = WaveSurfer.create({\n                        container: `#${waveformId}`,\n                        waveColor: \"#b1b1b1\",\n                        progressColor: \"#171717\",\n                        cursorColor: \"transparent\",\n                        height: waveformHeight,\n                        normalize: true,\n                    });\n                    \/\/ push current wavesurfer into wavesurfers array\n                    \/\/ wavesurfers.push(wavesurfer);\n                    allWavesurfers.push(wavesurfer);\n                    \/\/ load audio file into new wavesurfer\n                    wavesurfer.load(audio.sitePlayableFilePath);\n\n                    \/\/ add event listener to the play\/pause button\n                    playPauseButton.on(\"click\", () => {\n                        if (wavesurfer.isPlaying()) {\n                            wavesurfer.pause();\n                            playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n\n                            \/* media paused SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        } else {\n                            \/\/ pause all other audios that may be playing\n                            $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                            $.each(allWavesurfers, function(index, audio) {\n                                allWavesurfers[index].pause();\n                            });\n                            \/\/ then play current audio\n                            wavesurfer.play();\n                            playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n\n                            \/* media played SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        }\n                    });\n\n                    \/* media downloaded SEGMENT EVENT *\/\n                    audioDownload.on(\"click\", () => {\n                        var assetId = audio.songId;\n                        var artist = audio.artistName;\n                        var title = audio.songName;\n                        var asset_type = null;\n                        if(\"songs\" == 'songs') {\n                            asset_type = 'song';\n                        } else if(\"songs\" == 'sfx') {\n                            asset_type = 'sfx';\n                        }\n                        analytics.track(\"media downloaded\", {\n                            asset_id: assetId || null,\n                            asset_type: asset_type || null,\n                            click_source: 'player',\n                            artist: artist || null,\n                            title: title || null,\n                            genre: null,\n                            ...special_data,\n                        });\n                    });\n\n                    \/\/ add event listener to the click on the wave itself\n                    audioWaveform.on(\"click\", () => {\n                        setTimeout(() => {\n                            if (wavesurfer.isPlaying()) {\n                                wavesurfer.pause();\n                                playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n                            } else {\n                                \/\/ pause all other audios that may be playing\n                                $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                                $.each(allWavesurfers, function(index, audio) {\n                                    allWavesurfers[index].pause();\n                                });\n                                \/\/ then play current audio\n                                wavesurfer.play();\n                                playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n                            }\n                        }, \"200\");\n                    });\n\n                });\n            }\n\n        });\n    <\/script>\n\n    \n\n\n\n    <div class=\"playlist\" id=\"69d07edc55504\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"songs\" == 'songs') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SongList($page: Int!, $songSortType: Int!, $take: Int!, $vocalMenuId: Int!, $categoryIds: [Int], $collectionId: String, $searchTerm: String) {\n                        songList(page: $page, songSortType: $songSortType, take: $take, vocalMenuId: $vocalMenuId, categoryIds: $categoryIds, collectionId: $collectionId, searchTerm: $searchTerm) {\n                          songs {\n                            songId\n                            songName\n                            artistName\n                            isNew\n                            nameForURL\n                            sitePlayableFilePath\n\t\t\t\t\t\t\talbumImageFilePath\n\t\t\t\t\t\t\trelativeUrl\n                          }\n                          totalResults\n                        }\n                    }`,\n                        variables: JSON.stringify({\n                            \"page\": 1,\n                            \"songSortType\": 1,\n                            \"take\": 1,\n                            \"vocalMenuId\": 1,\n                            \"categoryIds\": null,\n                            \"searchTerm\": \"D\u00e9j\u00e0 R\u00eav\u00e9\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('songs list: ', res);\n                        var data = res.data.songList.songs;\n                        if ($(\"#69d07edc55504\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07edc55504\");\n                        } else if ($(\"#69d07edc55504\").length && data.length == 0) {\n                            $(\"#69d07edc55504\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            } else if(\"songs\" == 'sfx') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SfxList($categoryIds: String!, $page: Float!, $tags: String!, $term: String!, $sortBy: SfxListRequestSortByOptions!) {\n\t\t\t\t\t\t\t\tsfxList(categoryIds: $categoryIds, page: $page, tags: $tags, term: $term, sortBy: $sortBy) {\n\t\t\t\t\t\t\t\t  page\n\t\t\t\t\t\t\t\t  songs {\n\t\t\t\t\t\t\t\t\t  albumImageFilePath\n\t\t\t\t\t\t\t\t\t  artistName\n\t\t\t\t\t\t\t\t\t  isNew\n\t\t\t\t\t\t\t\t\t  nameForURL\n\t\t\t\t\t\t\t\t\t  relativeUrl\n\t\t\t\t\t\t\t\t\t  sitePlayableFilePath        \n\t\t\t\t\t\t\t\t\t  songId \n\t\t\t\t\t\t\t\t\t  songName\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                        variables: JSON.stringify({\n                            \"categoryIds\": \"\",\n                            \"page\": 1,\n                            \"tags\": \"\",\n                            \"term\": \"D\u00e9j\u00e0 R\u00eav\u00e9\",\n                            \"sortBy\": \"1\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('sfx list: ', res);\n                        var data = res.data.sfxList.songs;\n                        if ($(\"#69d07edc55504\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07edc55504\");\n                        } else if ($(\"#69d07edc55504\").length && data.length == 0) {\n                            $(\"#69d07edc55504\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            }\n\n            function createAudioPlayers(data, playlistId) {\n                \/\/ main playlist container\n                const playlistContainer = $(\"#\" + playlistId);\n                \/\/ wavesurfers array\n                \/\/ const wavesurfers = [];\n                \/\/ loop over every song returned\n\n                if(!allWavesurfers){\n                    var allWavesurfers = [];\n                }\n                $.each(data, function(index, audio) {\n                    \/\/ if current type is sfx and current looped index is bigger than amount wanted via shortcode - then stop loop (because sfx request doesn't have \"take\" variable)\n                    if(\"songs\" == 'sfx' && (index + 1) > 1) {\n                        return false;\n                    }\n\n                    \/\/ audio player container\n                    const audioPlayer = $(\"<div>\").addClass(\"audioPlayer\");\n                    \/\/ album image\n                    const audioImage = $(\"<div>\").addClass(\"audioImage\");\n                    audioImage.append('<img decoding=\"async\" src=\"' + audio.albumImageFilePath + '\"\/>');\n                    \/\/ audio controls\n                    const audioControls = $(\"<div>\").addClass(\"audioControls\");\n                    const playPauseButton = $(\"<button>\").addClass(\"playPauseButton\").html('<i class=\"fas fa-play\"><\/i>');\n                    audioControls.append(playPauseButton);\n                    \/\/ song url\n                    var songUrl;\n                    if(\"songs\" == 'songs') {\n                        songUrl = 'https:\/\/artlist.io\/royalty-free-music\/song\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    } else if(\"songs\" == 'sfx') {\n                        songUrl = 'https:\/\/artlist.io\/sfx\/track\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    }\n                    \/\/ song name and artist name\n                    const audioNames = $(\"<div>\").addClass(\"audioNames\");\n                    const songName = $(\"<a>\").addClass(\"songName\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").text(audio.songName);\n                    if (audio.isNew) {\n                        songName.append('<span class=\"isNewBadge\">NEW<\/span>');\n                    }\n                    const artistName = $(\"<span>\").addClass(\"artistName\").text(audio.artistName);\n                    audioNames.append(songName, artistName);\n                    \/\/ audio waveform container\n                    const audioWaveform = $(\"<div>\").addClass(\"audioWaveform\");\n                    \/\/ download button\n                    const audioDownload = $(\"<a>\").addClass(\"audioDownload\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").html('<i class=\"icon download medium\"><\/i>');\n\n\n                    \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                    audioPlayer.append(audioImage, audioControls, audioNames, audioWaveform, audioDownload);\n\n                    \/\/ append audio player container into main playlist container\n                    playlistContainer.append(audioPlayer);\n\n                    \/* media viewed SEGMENT EVENT *\/\n                    const special_data = getProps();\n\n                    const observer = new IntersectionObserver(entries => {\n                        entries.forEach(entry => {\n                            if (entry.isIntersecting) {\n                                var assetId = audio.songId;\n                                var artist = audio.artistName;\n                                var title = audio.songName;\n                                var asset_type = null;\n                                if(\"songs\" == 'songs') {\n                                    asset_type = 'song';\n                                } else if(\"songs\" == 'sfx') {\n                                    asset_type = 'sfx';\n                                }\n                                analytics.track(\"media viewed\", {\n                                    asset_id: assetId || null,\n                                    asset_type: asset_type || null,\n                                    click_source: 'player',\n                                    artist: artist || null,\n                                    title: title || null,\n                                    genre: null,\n                                    ...special_data,\n                                });\n                                observer.unobserve(entry.target);\n                            }\n                        });\n                    }, {\n                        threshold: 0.5\n                    });\n                    observer.observe(audioPlayer[0]);\n\n                    \/\/ check screen size\n                    var mobileScreen = window.matchMedia('(max-width: 767px)');\n                    var waveformHeight = '';\n                    if (mobileScreen.matches) { \/\/ mobile\n                        waveformHeight = 15;\n                    } else { \/\/ desktop\n                        waveformHeight = 40;\n                    }\n\n                    \/\/ create wavesurfer instance\n                    const waveformId = `waveform-${playlistId}-${index}`; \/\/ Generate a unique ID for each waveform\n                    const waveformContainer = $(\"<div>\").attr(\"id\", waveformId).addClass(\"waveformContainer\");\n                    audioWaveform.append(waveformContainer);\n                    const wavesurfer = WaveSurfer.create({\n                        container: `#${waveformId}`,\n                        waveColor: \"#b1b1b1\",\n                        progressColor: \"#171717\",\n                        cursorColor: \"transparent\",\n                        height: waveformHeight,\n                        normalize: true,\n                    });\n                    \/\/ push current wavesurfer into wavesurfers array\n                    \/\/ wavesurfers.push(wavesurfer);\n                    allWavesurfers.push(wavesurfer);\n                    \/\/ load audio file into new wavesurfer\n                    wavesurfer.load(audio.sitePlayableFilePath);\n\n                    \/\/ add event listener to the play\/pause button\n                    playPauseButton.on(\"click\", () => {\n                        if (wavesurfer.isPlaying()) {\n                            wavesurfer.pause();\n                            playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n\n                            \/* media paused SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        } else {\n                            \/\/ pause all other audios that may be playing\n                            $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                            $.each(allWavesurfers, function(index, audio) {\n                                allWavesurfers[index].pause();\n                            });\n                            \/\/ then play current audio\n                            wavesurfer.play();\n                            playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n\n                            \/* media played SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        }\n                    });\n\n                    \/* media downloaded SEGMENT EVENT *\/\n                    audioDownload.on(\"click\", () => {\n                        var assetId = audio.songId;\n                        var artist = audio.artistName;\n                        var title = audio.songName;\n                        var asset_type = null;\n                        if(\"songs\" == 'songs') {\n                            asset_type = 'song';\n                        } else if(\"songs\" == 'sfx') {\n                            asset_type = 'sfx';\n                        }\n                        analytics.track(\"media downloaded\", {\n                            asset_id: assetId || null,\n                            asset_type: asset_type || null,\n                            click_source: 'player',\n                            artist: artist || null,\n                            title: title || null,\n                            genre: null,\n                            ...special_data,\n                        });\n                    });\n\n                    \/\/ add event listener to the click on the wave itself\n                    audioWaveform.on(\"click\", () => {\n                        setTimeout(() => {\n                            if (wavesurfer.isPlaying()) {\n                                wavesurfer.pause();\n                                playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n                            } else {\n                                \/\/ pause all other audios that may be playing\n                                $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                                $.each(allWavesurfers, function(index, audio) {\n                                    allWavesurfers[index].pause();\n                                });\n                                \/\/ then play current audio\n                                wavesurfer.play();\n                                playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n                            }\n                        }, \"200\");\n                    });\n\n                });\n            }\n\n        });\n    <\/script>\n\n    \n\n\n\n\n\n<h2 class=\"wp-block-heading\">How to avoid emotional clich\u00e9s<\/h2>\n\n\n\n<p>While emotional scenes can be powerful, it can be too easy to find yourself reaching for tropes or clich\u00e9s that feel forced or unearned. Too much melodramatic music, overly sentimental dialogue, or predictable plot twists can make your film feel inauthentic.<\/p>\n\n\n\n<p>Focus on creating moments that feel authentic to the characters. When the emotions are genuine and grounded in the characters\u2019 experiences, audiences are more likely to connect deeply and feel the impact, often because they can relate to what\u2019s unfolding on-screen personally.<\/p>\n\n\n\n\n    <div class=\"clipsContainer\" id=\"69d07edc555a3\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"footage\" == 'footage') {\n                if(\"6005509\" == '') { \/\/ if this is a request for multiple clips by attributes\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query ClipList($page: Int, $sortType: Int, $categoryIds: String, $searchTerm: String) {\n\t\t\t\t\t\t\t\tclipList(page: $page, sortType: $sortType, categoryIds: $categoryIds, searchTerm: $searchTerm) {\n\t\t\t\t\t\t\t\t  exactResults  {\n\t\t\t\t\t\t\t\t\tclipPath\n\t\t\t\t\t\t\t\t\tclipNameForUrl\n\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\tisNew\n\t\t\t\t\t\t\t\t\tfilmMakerDisplayName\n\t\t\t\t\t\t\t\t\timageUrl\n\t\t\t\t\t\t\t\t\tthumbnailUrl\n\t\t\t\t\t\t\t\t\twidth\n\t\t\t\t\t\t\t\t\tvideoUrl\n\t\t\t\t\t\t\t\t\trawFileExt\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n\t\t\t\t\t\t\t\t\"page\": 1,\n\t\t\t\t\t\t\t\t\"sortType\": 1,\n\t\t\t\t\t\t\t\t\"categoryIds\": null,\n\t\t\t\t\t\t\t\t\"searchTerm\": \"\"\n\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('footage list: ', res);\n                            var data = res.data.clipList.exactResults;\n                            if ($(\"#69d07edc555a3\").length && data.length > 0) {\n                                createClipsGrid(data, \"69d07edc555a3\");\n                            } else if ($(\"#69d07edc555a3\").length && data.length == 0) {\n                                $(\"#69d07edc555a3\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                } else if(\"6005509\" !== '') { \/\/ if this is a request for a specific clip by id\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query Clip($clipId: Int!) {\n\t\t\t\t\t\t\t\tclip(id: $clipId) {\n\t\t\t\t\t\t\t\t\tclipPath\n\t\t\t\t\t\t\t\t\tclipNameForUrl\n\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\tisNew\n\t\t\t\t\t\t\t\t\tfilmMakerDisplayName\n\t\t\t\t\t\t\t\t\timageUrl\n\t\t\t\t\t\t\t\t\tthumbnailUrl\n\t\t\t\t\t\t\t\t\twidth\n\t\t\t\t\t\t\t\t\tvideoUrl\n\t\t\t\t\t\t\t\t\trawFileExt\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n\t\t\t\t\t\t\t\t\"clipId\": 6005509\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('specific footage: ', res);\n                            var data = res.data.clip;\n                            if ($(\"#69d07edc555a3\").length && data !== '') {\n                                createClipsGrid(data, \"69d07edc555a3\");\n                            } else if ($(\"#69d07edc555a3\").length && data.length == '') {\n                                $(\"#69d07edc555a3\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                }\n            } else if(\"footage\" == 'templates') {\n                if(\"6005509\" === '') {\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query TemplatesList($payload: TemplatesByTermSearchPayload!) {\n                                templatesList(payload: $payload) {\n                                    nameForUrl\n                                    id\n                                    name\n                                    isNew\n                                    artistName\n                                    thumbnailUrl\n                                    previewVideoFileUrl\n                                }\n                            }`,\n                            variables: `{\n                                \"payload\": {\n                                    \"page\": 1,\n                                    \"take\": 1,\n                                    \"sortBy\": \"1\",\n                                    \"categories\": null,\n                                    \"searchTerms\": \"\"\n                                }\n                            }`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('templates list: ', res);\n                            var data = res.data.templatesList;\n                            if ($(\"#69d07edc555a3\").length && data.length > 0) {\n                                createClipsGrid(data, \"69d07edc555a3\");\n                            } else if ($(\"#69d07edc555a3\").length && data.length == 0) {\n                                $(\"#69d07edc555a3\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                    } else if(\"6005509\" !== '') {\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query Template($ids: [String!]!, $page: Int!, $take: Int!) {\n\t\t\t\t\t\t\t\ttemplatesByIds(ids: $ids, page: $page, take: $take) {\n\t\t\t\t\t\t\t\t\tnameForUrl\n                                    id\n                                    name\n                                    isNew\n                                    artistName\n                                    thumbnailUrl\n                                    previewVideoFileUrl\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n                                \"ids\": [\"6005509\"],\n                                \"page\": 1,\n                                \"take\": 1\n\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('specific template: ', res);\n                            var data = res.data.templatesByIds[0];\n                            if ($(\"#69d07edc555a3\").length && data !== '') {\n                                createClipsGrid(data, \"69d07edc555a3\");\n                            } else if ($(\"#69d07edc555a3\").length && data.length == '') {\n                                $(\"#69d07edc555a3\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                }\n            }\n\n            function createClipsGrid(data, clipsContainerId){\n                const container = $(\"#\" + clipsContainerId);\n                let playerSrc = '';\n\n                $.each(data, function(index, clip) {\n                    if(\"6005509\" !== '') { \/\/ if this is a request for a specific clip by id - then the data is not an array of clips but only one clip and that's why the \"clip\" variable is actually the \"data\"\n                        index = 0\n                        clip = data;\n                    }\n                    if ((index) < 1) {\n                        \/\/ clip container\n                        const clipContainer = $(\"<div>\").addClass(\"clipContainer single_clip\");\n                        \/\/ new badge\n                        if (clip.isNew) {\n                            clipContainer.append('<span class=\"isNewBadge\">NEW<\/span>');\n                        }\n                        \/\/ video\n                        let videoElement = document.createElement('video');\n                        videoElement.setAttribute('playsinline', '');\n                        videoElement.setAttribute('webkit-playsinline', '');\n                        videoElement.setAttribute('x5-playsinline', '');\n                        videoElement.setAttribute('preload', 'auto');\n                        \n                        clipContainer.append(videoElement);\n                        \/\/ clip name and artist name\n                        let clipName = '';\n                        let artistName = '';\n                        if(\"footage\" == 'footage') {\n                            clipName = clip.clipNameForUrl;\n                            clipName = clipName.replace(\/-\/g, \", \");\n                            clipName = $(\"<a>\").addClass(\"clipName\").attr(\"href\", \"https:\/\/artlist.io\/stock-footage\/clip\/\" + clip.clipNameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").text(clipName);\n                            artistName = $(\"<div>\").addClass(\"artistName\").text('By ' + clip.filmMakerDisplayName + '');\n                        } else if(\"footage\" == 'templates') {\n                            clipName = $(\"<a>\").addClass(\"clipName\").attr(\"href\", \"https:\/\/artlist.io\/video-templates\/\" + clip.nameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").text(clip.name);\n                            artistName = $(\"<div>\").addClass(\"artistName\").text('By ' + clip.artistName + '');\n                        }\n                        const clipNames = $(\"<span>\").addClass(\"clipNames\").append(clipName, artistName);\n                        \/\/ download button\n                        let clipDownload = '';\n                        if(\"footage\" == 'footage') {\n                            clipDownload = $(\"<a>\").addClass(\"clipDownload\").attr(\"href\", \"https:\/\/artlist.io\/stock-footage\/clip\/\" + clip.clipNameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").html('<i class=\"icon download white\"><\/i>');\n                        } else if(\"footage\" == 'templates') {\n                            clipDownload = $(\"<a>\").addClass(\"clipDownload\").attr(\"href\", \"https:\/\/artlist.io\/video-templates\/\" + clip.nameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").html('<i class=\"icon download white\"><\/i>');\n                        }\n                        \/\/ overlay\n                        const overlay = $(\"<div>\").addClass(\"overlay\");\n                        overlay.append(clipNames, clipDownload);\n\n                        \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                        clipContainer.append(videoElement, overlay);\n\n                        \/\/ if this is a preview of only one specific clip (by id)\n                        if(\"6005509\" !== '') {\n                            $(container).addClass(\"clipContainerSingular\")\n                        }\n\n                        \/\/ append audio player container into main playlist container\n                        container.append(clipContainer[0]);\n\n                        if(\"footage\" == 'footage') {\n                            playerSrc =  clip.clipPath;\n                        } else if(\"footage\" == 'templates') {\n                            playerSrc =  clip.previewVideoFileUrl;\n                        }\n                        const player = videojs(videoElement, {\n                            muted: true,\n                            autoplay: true,\n                        });\n\n                        player.src({\n                            src: playerSrc,\n                            type: 'application\/x-mpegURL'\n                        });\n\n                        \/* SEGMENT EVENTS *\/\n                        const special_data = getProps();\n\n                        \/* media played *\/\n                        var $videoElement = $(videoElement);\n                        $videoElement.on('play', function() {\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/* media paused *\/\n                        var $videoElement = $(videoElement);\n                        $videoElement.on('pause', function() {\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/* media viewed *\/\n                        const observer = new IntersectionObserver(entries => {\n                            entries.forEach(entry => {\n                                if (entry.isIntersecting) {\n                                    var assetId = clip.id;\n                                    var artist = clip.filmMakerDisplayName || clip.artistName;\n                                    var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                                    var asset_type = null;\n                                    if(\"footage\" == 'footage') {\n                                        asset_type = 'footage';\n                                    } else if(\"footage\" == 'templates') {\n                                        asset_type = 'template';\n                                    }\n                                    analytics.track(\"media viewed\", {\n                                        asset_id: assetId || null,\n                                        asset_type: asset_type || null,\n                                        click_source: 'player',\n                                        artist: artist || null,\n                                        title: title || null,\n                                        genre: null,\n                                        ...special_data,\n                                    });\n                                    observer.unobserve(entry.target);\n                                }\n                            });\n                        }, {\n                            threshold: 0.5\n                        });\n                        observer.observe($videoElement[0]);\n\n                        \/* media downloaded *\/\n                        $videoElement.closest('.clipContainer').find('.clipName').on('click', function() {\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media downloaded\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n                        $videoElement.closest('.clipContainer').find('.clipDownload').on('click', function() {\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media downloaded\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/\/ check screen size\n                        var mobileScreen = window.matchMedia('(max-width: 767px)');\n                        if (mobileScreen.matches) { \/\/ mobile\n                            const observer = new IntersectionObserver(function(entries) {\n                                entries.forEach(entry => {\n                                    if (entry.isIntersecting) {\n                                        player.play(); \/\/ Play the video when it enters the viewport\n                                    } else {\n                                        player.pause(); \/\/ Pause the video when it goes out of the viewport\n                                    }\n                                });\n                            });\n                            observer.observe(videoElement);\n                        } else { \/\/ desktop\n                            clipContainer.on('mouseenter', function() {\n                                player.play();\n                            });\n\n                            clipContainer.on('mouseleave', function() {\n                                player.pause();\n                            });\n                        }\n\n                    }\n                    if(\"6005509\" !== '') { \/\/ if this is a request for a specific clip by id - then break out of loop after first time bc it's not an array\n                        return false;\n                    }\n                });\n            }\n\n        });\n    <\/script>\n\n    \n\n\n\n<h2 class=\"wp-block-heading\">Crafting moments that are remembered<\/h2>\n\n\n\n<p>To make your audience cry, you need to focus on the 3 key ingredients \u2013 a story with an emotional heart, creating relatable characters, and a narrative that naturally builds to powerful moments. With strong performances, good pacing, careful editing, and the perfect score, you can create an experience that stays with your audience long after the tears have dried.<\/p>\n\n\n\n<p>You can craft scenes that truly move people by focusing on core storytelling elements. Whether you\u2019re writing, directing, or a part of the editing team, these techniques can evoke a strong emotional response from your viewers. You can also use these tips in <a href=\"https:\/\/artlist.io\/blog\/brand-storytelling\/\">brand storytelling<\/a>, where emotional connections with an audience can drive loyalty and impact. So, whether you\u2019re crafting a film scene or a brand message, ask yourself \u2014 How can I make my audience feel something real? If you\u2019re ready to jump into production, check out our top creative assets for filmmakers in 2024.<\/p>\n\n\n\n<ul>\n<li>This article\u2019s cover image was inspired by footage from the <em><a href=\"https:\/\/artlist.io\/stock-footage\/story\/disaster-in-the-smoke\/6012223\" target=\"_blank\" rel=\"noreferrer noopener\">Disaster in the Smoke<\/a><\/em> story by <a href=\"https:\/\/artlist.io\/stock-footage\/artist\/yojanan-montano\/1031\" target=\"_blank\" rel=\"noreferrer noopener\">Yohanan Montano<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>As filmmakers, the ability to evoke an emotional response from your audience is one of the most powerful tools at your disposal. Certain moments resonate deeply with viewers, whether it\u2019s a scene in a movie, TV show, or even a brand story. But how exactly do filmmakers create these moments that make us cry? In [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":37755,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[5],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Filming emotion \u2013 how to make your audience cry - Artlist Blog<\/title>\n<meta name=\"description\" content=\"Learn how to make your audience cry with sad songs and emotional scenes, creating powerful moments in movies that make your audience cry.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Filming emotion \u2013 how to make your audience cry - Artlist Blog\" \/>\n<meta property=\"og:description\" content=\"Learn how to make your audience cry with sad songs and emotional scenes, creating powerful moments in movies that make your audience cry.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\" \/>\n<meta property=\"og:site_name\" content=\"Artlist Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-31T12:06:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-31T12:06:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1721\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chris Suffield\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Suffield\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\"},\"author\":{\"name\":\"Chris Suffield\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/397d693f2006ed012f1efab9571cba05\"},\"headline\":\"How to make your audience cry: a guide to creating deep emotional impact\",\"datePublished\":\"2024-12-31T12:06:49+00:00\",\"dateModified\":\"2024-12-31T12:06:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\"},\"wordCount\":1072,\"publisher\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\"},\"articleSection\":[\"Production &amp; Filmmaking\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\",\"name\":\"Filming emotion \u2013 how to make your audience cry - Artlist Blog\",\"isPartOf\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#website\"},\"datePublished\":\"2024-12-31T12:06:49+00:00\",\"dateModified\":\"2024-12-31T12:06:53+00:00\",\"description\":\"Learn how to make your audience cry with sad songs and emotional scenes, creating powerful moments in movies that make your audience cry.\",\"breadcrumb\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/new-blog.artlist.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Production &amp; Filmmaking\",\"item\":\"https:\/\/new-blog.artlist.io\/blog\/production-filmmaking\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to make your audience cry: a guide to creating deep emotional impact\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#website\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/\",\"name\":\"Artlist Blog\",\"description\":\"Just artlist blog website\",\"publisher\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/new-blog.artlist.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\",\"name\":\"Artlist Blog\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg\",\"contentUrl\":\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg\",\"width\":143,\"height\":28,\"caption\":\"Artlist Blog\"},\"image\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/397d693f2006ed012f1efab9571cba05\",\"name\":\"Chris Suffield\",\"description\":\"Chris Suffield is a London-based writer, editor, and voice-over artist at Jellyfielder Studios; he also writes entertainment news for Box Office Buz and enjoys making things from stock footage.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/-chris-suffield-781a293a\/?originalSubdomain=uk\"],\"url\":\"https:\/\/new-blog.artlist.io\/blog\/author\/chris-suffield\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Filming emotion \u2013 how to make your audience cry - Artlist Blog","description":"Learn how to make your audience cry with sad songs and emotional scenes, creating powerful moments in movies that make your audience cry.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/","og_locale":"en_US","og_type":"article","og_title":"Filming emotion \u2013 how to make your audience cry - Artlist Blog","og_description":"Learn how to make your audience cry with sad songs and emotional scenes, creating powerful moments in movies that make your audience cry.","og_url":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/","og_site_name":"Artlist Blog","article_published_time":"2024-12-31T12:06:49+00:00","article_modified_time":"2024-12-31T12:06:53+00:00","og_image":[{"width":1721,"height":600,"url":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL.jpg","type":"image\/jpeg"}],"author":"Chris Suffield","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chris Suffield","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/#article","isPartOf":{"@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/"},"author":{"name":"Chris Suffield","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/397d693f2006ed012f1efab9571cba05"},"headline":"How to make your audience cry: a guide to creating deep emotional impact","datePublished":"2024-12-31T12:06:49+00:00","dateModified":"2024-12-31T12:06:53+00:00","mainEntityOfPage":{"@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/"},"wordCount":1072,"publisher":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#organization"},"articleSection":["Production &amp; Filmmaking"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/","url":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/","name":"Filming emotion \u2013 how to make your audience cry - Artlist Blog","isPartOf":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#website"},"datePublished":"2024-12-31T12:06:49+00:00","dateModified":"2024-12-31T12:06:53+00:00","description":"Learn how to make your audience cry with sad songs and emotional scenes, creating powerful moments in movies that make your audience cry.","breadcrumb":{"@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-make-your-audience-cry\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/new-blog.artlist.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Production &amp; Filmmaking","item":"https:\/\/new-blog.artlist.io\/blog\/production-filmmaking\/"},{"@type":"ListItem","position":3,"name":"How to make your audience cry: a guide to creating deep emotional impact"}]},{"@type":"WebSite","@id":"https:\/\/new-blog.artlist.io\/blog\/#website","url":"https:\/\/new-blog.artlist.io\/blog\/","name":"Artlist Blog","description":"Just artlist blog website","publisher":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/new-blog.artlist.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/new-blog.artlist.io\/blog\/#organization","name":"Artlist Blog","url":"https:\/\/new-blog.artlist.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg","contentUrl":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg","width":143,"height":28,"caption":"Artlist Blog"},"image":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/397d693f2006ed012f1efab9571cba05","name":"Chris Suffield","description":"Chris Suffield is a London-based writer, editor, and voice-over artist at Jellyfielder Studios; he also writes entertainment news for Box Office Buz and enjoys making things from stock footage.","sameAs":["https:\/\/www.linkedin.com\/in\/-chris-suffield-781a293a\/?originalSubdomain=uk"],"url":"https:\/\/new-blog.artlist.io\/blog\/author\/chris-suffield\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL.jpg",1721,600,false],"thumbnail":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL-150x150.jpg",150,150,true],"medium":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL-300x105.jpg",300,105,true],"medium_large":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL-768x268.jpg",768,268,true],"large":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL-1024x357.jpg",1024,357,true],"1536x1536":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL-1536x536.jpg",1536,536,true],"2048x2048":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/How_to_make_your_audience_cry_XXL.jpg",1721,600,false]},"uagb_author_info":{"display_name":"Chris Suffield","author_link":"https:\/\/new-blog.artlist.io\/blog\/author\/chris-suffield\/"},"uagb_comment_info":0,"uagb_excerpt":"As filmmakers, the ability to evoke an emotional response from your audience is one of the most powerful tools at your disposal. Certain moments resonate deeply with viewers, whether it\u2019s a scene in a movie, TV show, or even a brand story. But how exactly do filmmakers create these moments that make us cry? In&hellip;","_links":{"self":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/37744"}],"collection":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/comments?post=37744"}],"version-history":[{"count":6,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/37744\/revisions"}],"predecessor-version":[{"id":37816,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/37744\/revisions\/37816"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/media\/37755"}],"wp:attachment":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/media?parent=37744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/categories?post=37744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/tags?post=37744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}