{"id":35793,"date":"2024-12-03T09:13:04","date_gmt":"2024-12-03T09:13:04","guid":{"rendered":"https:\/\/new-blog.artlist.io\/blog\/?p=35793"},"modified":"2024-12-03T09:13:08","modified_gmt":"2024-12-03T09:13:08","slug":"lofi-music","status":"publish","type":"post","link":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/","title":{"rendered":"Unwind and create: The rise of Lofi music"},"content":{"rendered":"\n<p>With busier lives and more demands, finding moments of calm and focus can be increasingly challenging. Perhaps this is why low fidelity, or Lofi music for short, has taken the world by storm. The genre is characterized by soothing beats and nostalgic vibes which may have a part to play. It\u2019s the perfect musical backdrop for studying, working, or just chilling. But what exactly is Lofi music, and why has it become so popular? Let\u2019s dive into the world of Lofi and explore its origins, characteristics, and how you can incorporate it into your creative projects.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Lofi music?<\/h2>\n\n\n\n<p>Lofi music is a genre characterized by its raw, unpolished sound. Unlike high-fidelity recordings that aim for perfection, Lofi embraces imperfections like background noise, vinyl crackles, and ambient sounds. This track, \u2019Death Bed\u2019 by Powfu, is the most popular Lofi song on YouTube in 2024. Give it a listen and you\u2019ll notice audio imperfections and popping\/cracking sounds.\u00a0<\/p>\n\n\n\n<div class=\"b-youtube-embed\" id=\"jJPMnTXl63E\">\n    <div class=\"play-button\"><\/div>\n            <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jJPMnTXl63E\/maxresdefault.jpg\&quot;" class=\"asset original\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jJPMnTXl63E\/maxresdefault.jpg\&quot;" class=\"asset desktop\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jJPMnTXl63E\/maxresdefault.jpg\&quot;" class=\"asset desktop-small\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jJPMnTXl63E\/maxresdefault.jpg\&quot;" class=\"asset tablet\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jJPMnTXl63E\/maxresdefault.jpg\&quot;" class=\"asset mobile\" alt=\"Artlist Blog\"\ />\n<\/div>\n\n\n\n\n<p><\/p>\n\n\n\n<p>So, what exactly is the Lofi music genre? While it often gets lumped into the electronic music category, Lofi is really a delightful mix of different musical influences. Imagine a musical stew where jazz, hip-hop, and chillout music all come together.\u00a0<\/p>\n\n\n\n<p>You\u2019ve got those jazzy vibes with complex chords and a bit of improvisation, adding a touch of sophistication and depth. Then there\u2019s the hip-hop influence, with its catchy sampled beats and rhythms that make you want to nod along. And let\u2019s not forget the chillout music, which brings in those soothing melodies and ambient textures that make everything feel just right.<\/p>\n\n\n\n<p>When you blend all these elements, you get a sound that\u2019s laid-back and mellow \u2014 a perfect mix of nostalgia and modernity. Lofi music is like a gentle friend that helps you relax and concentrate, providing a background that enhances focus without ever being too much. It&#8217;s the kind of music you can play while studying, working, or just kicking back after a long day.&nbsp;<\/p>\n\n\n\n<p>Its calming nature is a big part of why so many people love it. In a world that&#8217;s always on the go, Lofi offers a little pocket of tranquility and introspection, making it a go-to for anyone looking to find a bit of peace amidst the chaos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The origins of Lofi music<\/h2>\n\n\n\n<p>Let&#8217;s take a little trip back in time to the 1980s and 1990s when Lofi music was just starting to take shape. Artists were getting creative with home recording equipment, embracing the imperfections that came with it. They were all about that DIY spirit, crafting music that was intentionally rough around the edges. This was a big \u201cno thanks\u201d to the overly polished, commercial sound that dominated the mainstream music scene back then.\u00a0<\/p>\n\n\n\n<p>The term \u201cLofi\u201d itself was popularized by DJ William Berger, who had a radio show called \u201cLow-Fi\u201d on New Jersey&#8217;s WFMU in the mid-1980s. He was all about showcasing music that didn&#8217;t fit the mold, and his show became a haven for those seeking something different.&nbsp;<\/p>\n\n\n\n<p>But it wasn&#8217;t until the internet, with platforms like YouTube and SoundCloud, that Lofi music really found its audience. Suddenly, this niche genre had a global stage, and people were loving it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lofi\u2019s rise to success<\/h2>\n\n\n\n<p>Fast forward to the late 2000s and early 2010s, and Lofi music was starting to make some serious waves. Artists like Nujabes and J Dilla began weaving Lofi elements into their tracks, and people couldn\u2019t get enough. Their work laid the groundwork for the genre\u2019s growing popularity, and soon, Lofi was everywhere.<\/p>\n\n\n\n<p>One of the biggest boosts for Lofi music came from those 24\/7 streams on YouTube, like the famous \u201cLofi hip hop radio \u2014 beats to relax\/study to\u201d.<\/p>\n\n\n\n<div class=\"b-youtube-embed\" id=\"jfKfPfyJRdk\">\n    <div class=\"play-button\"><\/div>\n            <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jfKfPfyJRdk\/maxresdefault.jpg\&quot;" class=\"asset original\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jfKfPfyJRdk\/maxresdefault.jpg\&quot;" class=\"asset desktop\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jfKfPfyJRdk\/maxresdefault.jpg\&quot;" class=\"asset desktop-small\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jfKfPfyJRdk\/maxresdefault.jpg\&quot;" class=\"asset tablet\" alt=\"Artlist Blog\"\ />\n        <img decoding=\"async\" src="\&quot;https:\/\/img.youtube.com\/vi\/jfKfPfyJRdk\/maxresdefault.jpg\&quot;" class=\"asset mobile\" alt=\"Artlist Blog\"\ />\n<\/div>\n\n\n\n\n<p><\/p>\n\n\n\n<p>These streams became the go-to soundtrack for students cramming for exams and professionals looking to focus on work. Many people find Lofi music calming and enjoy having a chill, musical companion that helps them get through the day.\u00a0<\/p>\n\n\n\n<p>According to the mental wellness platform <a href="\&quot;https:\/\/www.calm.com\/blog\/benefits-of-lofi-music\&quot;" target=\"_blank\" rel=\"noreferrer noopener\">Calm<\/a>, \u201cThe soothing nature of lo-fi music might help with thinking and creativity. It may <a href="\&quot;https:\/\/pubmed.ncbi.nlm.nih.gov\/35325516\/?undefined&amp;utm_medium=organic&amp;utm_source=blog&amp;utm_campaign=benefits-of-lofi-music\&quot;" target=\"_blank\" rel=\"noreferrer noopener\">stimulate brain activity<\/a> and aids in problem-solving and innovative thinking\u201d.\u00a0<\/p>\n\n\n\n<p>Artists like Tomppabeats, Jinsang, and Idealism have become household names in the Lofi scene, each bringing their own unique flavor to the genre. Their creativity, along with countless other talented artists, has turned Lofi music into a global phenomenon. It\u2019s amazing to see how this once-underground genre has captured the hearts of so many, offering a soothing escape in our fast-paced world.<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Integrating Lofi music into your creations<\/h2>\n\n\n\n<p>Lofi music isn\u2019t just something you pop on when you want to chill out \u2014 it\u2019s like a secret weapon for creators in all sorts of fields. Whether you\u2019re a filmmaker trying to set the perfect mood, a content creator looking to add some vibe to your videos, or a musician wanting to explore new sounds, Lofi music can be your go-to. Its calming, unobtrusive nature makes it the perfect background music for everything from videos and podcasts to live streams. It\u2019s like having a musical partner that enhances your work without stealing the spotlight.<\/p>\n\n\n\n<p>And here&#8217;s the best part: with so much royalty-free Lofi music available, especially on Artlist, you don&#8217;t have to stress about copyright issues. You can use these tracks freely, knowing you&#8217;re in the clear to share your creations with the world.<\/p>\n\n\n\n<p>For musicians and producers, Lofi music is like a playground where you can let your creativity run wild. You can dive into sampling, try out different layers, and add your own unique twist to the genre. The possibilities are pretty much endless, and the Lofi community is all about embracing new sounds and ideas. It\u2019s a space where experimentation is encouraged, and you never know what kind of magic you might create. So, whether you&#8217;re looking to enhance your projects or explore new musical territories, Lofi music is there to inspire and support your creative journey.<\/p>\n\n\n\n<p>Artlist offers a wide selection of copyright-free Lofi music for your projects. Check out a few standout tracks to get you started:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Morning Gloss<\/h3>\n\n\n\n<p>This track feels like the perfect soundtrack for a peaceful morning, with its gentle melodies and soft beats that ease you into the day. It\u2019s like a musical cup of coffee, giving you a warm and cozy start.<\/p>\n\n\n\n    <div class=\"playlist\" id=\"69d02f2563878\"><\/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\": \"Morning Gloss\"\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 ($(\"#69d02f2563878\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563878\");\n                        } else if ($(\"#69d02f2563878\").length && data.length == 0) {\n                            $(\"#69d02f2563878\").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\": \"Morning Gloss\",\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 ($(\"#69d02f2563878\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563878\");\n                        } else if ($(\"#69d02f2563878\").length && data.length == 0) {\n                            $(\"#69d02f2563878\").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<h3 class=\"wp-block-heading\">River Banks<\/h3>\n\n\n\n<p>Imagine sitting by a serene river, with the sound of water flowing gently by \u2014 that\u2019s the vibe River Banks captures. Its soothing tones and relaxed rhythm make it ideal for unwinding or finding focus.<\/p>\n\n\n\n    <div class=\"playlist\" id=\"69d02f256399d\"><\/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\": \"River Banks\"\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 ($(\"#69d02f256399d\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f256399d\");\n                        } else if ($(\"#69d02f256399d\").length && data.length == 0) {\n                            $(\"#69d02f256399d\").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\": \"River Banks\",\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 ($(\"#69d02f256399d\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f256399d\");\n                        } else if ($(\"#69d02f256399d\").length && data.length == 0) {\n                            $(\"#69d02f256399d\").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<h3 class=\"wp-block-heading\">Roses<\/h3>\n\n\n\n<p>This song brings a touch of elegance and nostalgia with its smooth, jazzy undertones and mellow beats. It\u2019s the kind of track that wraps you in a comforting embrace, perfect for those introspective moments.<\/p>\n\n\n\n    <div class=\"playlist\" id=\"69d02f2563a4b\"><\/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\": \"Roses\"\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 ($(\"#69d02f2563a4b\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563a4b\");\n                        } else if ($(\"#69d02f2563a4b\").length && data.length == 0) {\n                            $(\"#69d02f2563a4b\").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\": \"Roses\",\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 ($(\"#69d02f2563a4b\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563a4b\");\n                        } else if ($(\"#69d02f2563a4b\").length && data.length == 0) {\n                            $(\"#69d02f2563a4b\").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<h3 class=\"wp-block-heading\">Some Notes<\/h3>\n\n\n\n<p>With its laid-back groove and subtle harmonies, Some Notes feels like a casual conversation with an old friend. It\u2019s a track that effortlessly sets a relaxed mood, making it great for background music while you work or study.<\/p>\n\n\n\n    <div class=\"playlist\" id=\"69d02f2563aed\"><\/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\": \"Some Notes\"\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 ($(\"#69d02f2563aed\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563aed\");\n                        } else if ($(\"#69d02f2563aed\").length && data.length == 0) {\n                            $(\"#69d02f2563aed\").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\": \"Some Notes\",\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 ($(\"#69d02f2563aed\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563aed\");\n                        } else if ($(\"#69d02f2563aed\").length && data.length == 0) {\n                            $(\"#69d02f2563aed\").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<h3 class=\"wp-block-heading\">Cavaliers<\/h3>\n\n\n\n<p>If you\u2019re looking for a playful yet calming energy, this is the song for you. It blends catchy rhythms with a touch of whimsy, like a musical adventure inviting you to explore and enjoy the little moments in life.<\/p>\n\n\n\n    <div class=\"playlist\" id=\"69d02f2563ba0\"><\/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\": \"Cavaliers\"\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 ($(\"#69d02f2563ba0\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563ba0\");\n                        } else if ($(\"#69d02f2563ba0\").length && data.length == 0) {\n                            $(\"#69d02f2563ba0\").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\": \"Cavaliers\",\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 ($(\"#69d02f2563ba0\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d02f2563ba0\");\n                        } else if ($(\"#69d02f2563ba0\").length && data.length == 0) {\n                            $(\"#69d02f2563ba0\").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<p>So why not try these songs or explore even more in the <a href=\"https:\/\/artlist.io\/royalty-free-music\/search?terms=Chill+Vibes+by+Lo-Fi+Beat&amp;sortId=2\">Artlist catalog<\/a>? They\u2019re a great choice to inspire and elevate your next video project, podcast, or creative pursuit.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping up<\/h2>\n\n\n\n<p>Lofi music has carved out a unique space in the music world, offering a soothing escape from the chaos of everyday life. Its rise from humble beginnings to global popularity is a testament to its universal appeal. Whether you\u2019re a fan of the genre or a creator looking to incorporate Lofi into your projects, there\u2019s no denying its impact.<\/p>\n\n\n\n<p>Ready to explore the world of Lofi music? Dive into Artlist&#8217;s collection of royalty-free Lofi tracks and discover the perfect soundtrack for your next project. Let the calming beats and nostalgic vibes of Lofi music inspire your creativity and bring your ideas to life.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>With busier lives and more demands, finding moments of calm and focus can be increasingly challenging. Perhaps this is why low fidelity, or Lofi music for short, has taken the world by storm. The genre is characterized by soothing beats and nostalgic vibes which may have a part to play. It\u2019s the perfect musical backdrop [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":35799,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[2],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Lofi Music? Discover the genre on Artlist - Artlist Blog<\/title>\n<meta name=\"description\" content=\"Explore what Lofi music is, its origins, and how to use royalty-free Lofi music from Artlist in your projects for a calming, creative touch.\" \/>\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\/lofi-music\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Lofi Music? Discover the genre on Artlist - Artlist Blog\" \/>\n<meta property=\"og:description\" content=\"Explore what Lofi music is, its origins, and how to use royalty-free Lofi music from Artlist in your projects for a calming, creative touch.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/\" \/>\n<meta property=\"og:site_name\" content=\"Artlist Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-03T09:13:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-03T09:13:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_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=\"David Harris\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Harris\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 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\/lofi-music\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/\"},\"author\":{\"name\":\"David Harris\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/ac9e3986da84f2c2d9d6d704e051043f\"},\"headline\":\"Unwind and create: The rise of Lofi music\",\"datePublished\":\"2024-12-03T09:13:04+00:00\",\"dateModified\":\"2024-12-03T09:13:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/\"},\"wordCount\":1383,\"publisher\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\"},\"articleSection\":[\"Royalty-Free Music\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/\",\"name\":\"What is Lofi Music? Discover the genre on Artlist - Artlist Blog\",\"isPartOf\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#website\"},\"datePublished\":\"2024-12-03T09:13:04+00:00\",\"dateModified\":\"2024-12-03T09:13:08+00:00\",\"description\":\"Explore what Lofi music is, its origins, and how to use royalty-free Lofi music from Artlist in your projects for a calming, creative touch.\",\"breadcrumb\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/new-blog.artlist.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Royalty-Free Music\",\"item\":\"https:\/\/new-blog.artlist.io\/blog\/royalty-free-music\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Unwind and create: The rise of Lofi music\"}]},{\"@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\/ac9e3986da84f2c2d9d6d704e051043f\",\"name\":\"David Harris\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/author\/david-harris\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Lofi Music? Discover the genre on Artlist - Artlist Blog","description":"Explore what Lofi music is, its origins, and how to use royalty-free Lofi music from Artlist in your projects for a calming, creative touch.","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\/lofi-music\/","og_locale":"en_US","og_type":"article","og_title":"What is Lofi Music? Discover the genre on Artlist - Artlist Blog","og_description":"Explore what Lofi music is, its origins, and how to use royalty-free Lofi music from Artlist in your projects for a calming, creative touch.","og_url":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/","og_site_name":"Artlist Blog","article_published_time":"2024-12-03T09:13:04+00:00","article_modified_time":"2024-12-03T09:13:08+00:00","og_image":[{"width":1721,"height":600,"url":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL.jpg","type":"image\/jpeg"}],"author":"David Harris","twitter_card":"summary_large_image","twitter_misc":{"Written by":"David Harris","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/#article","isPartOf":{"@id":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/"},"author":{"name":"David Harris","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/ac9e3986da84f2c2d9d6d704e051043f"},"headline":"Unwind and create: The rise of Lofi music","datePublished":"2024-12-03T09:13:04+00:00","dateModified":"2024-12-03T09:13:08+00:00","mainEntityOfPage":{"@id":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/"},"wordCount":1383,"publisher":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#organization"},"articleSection":["Royalty-Free Music"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/","url":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/","name":"What is Lofi Music? Discover the genre on Artlist - Artlist Blog","isPartOf":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#website"},"datePublished":"2024-12-03T09:13:04+00:00","dateModified":"2024-12-03T09:13:08+00:00","description":"Explore what Lofi music is, its origins, and how to use royalty-free Lofi music from Artlist in your projects for a calming, creative touch.","breadcrumb":{"@id":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/new-blog.artlist.io\/blog\/lofi-music\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/new-blog.artlist.io\/blog\/lofi-music\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/new-blog.artlist.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Royalty-Free Music","item":"https:\/\/new-blog.artlist.io\/blog\/royalty-free-music\/"},{"@type":"ListItem","position":3,"name":"Unwind and create: The rise of Lofi music"}]},{"@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\/ac9e3986da84f2c2d9d6d704e051043f","name":"David Harris","url":"https:\/\/new-blog.artlist.io\/blog\/author\/david-harris\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL.jpg",1721,600,false],"thumbnail":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL-150x150.jpg",150,150,true],"medium":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL-300x105.jpg",300,105,true],"medium_large":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL-768x268.jpg",768,268,true],"large":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL-1024x357.jpg",1024,357,true],"1536x1536":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL-1536x536.jpg",1536,536,true],"2048x2048":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/12\/Lofi_music_XXL.jpg",1721,600,false]},"uagb_author_info":{"display_name":"David Harris","author_link":"https:\/\/new-blog.artlist.io\/blog\/author\/david-harris\/"},"uagb_comment_info":0,"uagb_excerpt":"With busier lives and more demands, finding moments of calm and focus can be increasingly challenging. Perhaps this is why low fidelity, or Lofi music for short, has taken the world by storm. The genre is characterized by soothing beats and nostalgic vibes which may have a part to play. It\u2019s the perfect musical backdrop&hellip;","_links":{"self":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/35793"}],"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\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/comments?post=35793"}],"version-history":[{"count":13,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/35793\/revisions"}],"predecessor-version":[{"id":35906,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/35793\/revisions\/35906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/media\/35799"}],"wp:attachment":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/media?parent=35793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/categories?post=35793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/tags?post=35793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}