{"product_id":"heartstrings-guitar-trap-loops-songstarters","title":"'Heartstrings' Guitar Trap Songstarters","description":"\u003c!-- PROSOUND SONICS — HEARTSTRINGS AUDIO PREVIEWS --\u003e\n\u003cdiv class=\"ps-hs-audio-list\" data-ps-hs-audio-list\u003e\n\n  \u003cdiv class=\"ps-hs-audio-heading\"\u003e\n    \u003cspan\u003eHEARTSTRINGS\u003c\/span\u003e\n    \u003cstrong\u003eAUDIO PREVIEWS\u003c\/strong\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- LOOP 1 --\u003e\n  \u003cdiv class=\"ps-hs-player\" data-audio-player\u003e\n    \u003caudio preload=\"metadata\" crossorigin=\"anonymous\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/PS_HS_LOOP1_146BPM_FMIN_songstarter_multi_instrument_drums.wav?v=1788343673\"\u003e\u003c\/audio\u003e\n\n    \u003cbutton class=\"ps-hs-play\" type=\"button\" aria-label=\"Play Loop 1\"\u003e\n      \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"ps-hs-main\"\u003e\n      \u003cdiv class=\"ps-hs-meta\"\u003e\n\u003cstrong\u003eLOOP 1\u003c\/strong\u003e\u003cspan\u003e146 BPM · F MIN\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003ccanvas class=\"ps-hs-wave\" aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-hs-volume\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M3 9v6h4l5 4V5L7 9H3zm11.5 3A3.5 3.5 0 0 0 13 9.13v5.74A3.5 3.5 0 0 0 14.5 12zm0-7.97v2.06A7 7 0 0 1 18 12a7 7 0 0 1-3.5 5.91v2.06A9 9 0 0 0 20 12a9 9 0 0 0-5.5-7.97z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cinput type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.82\" aria-label=\"Loop 1 volume\"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- LOOP 6 --\u003e\n  \u003cdiv class=\"ps-hs-player\" data-audio-player\u003e\n    \u003caudio preload=\"metadata\" crossorigin=\"anonymous\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/PS_HS_LOOP6_160BPM_BMIN_songstarter_multi_instrument_drums.wav?v=1788343675\"\u003e\u003c\/audio\u003e\n\n    \u003cbutton class=\"ps-hs-play\" type=\"button\" aria-label=\"Play Loop 6\"\u003e\n      \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"ps-hs-main\"\u003e\n      \u003cdiv class=\"ps-hs-meta\"\u003e\n\u003cstrong\u003eLOOP 6\u003c\/strong\u003e\u003cspan\u003e160 BPM · B MIN\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003ccanvas class=\"ps-hs-wave\" aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-hs-volume\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M3 9v6h4l5 4V5L7 9H3zm11.5 3A3.5 3.5 0 0 0 13 9.13v5.74A3.5 3.5 0 0 0 14.5 12zm0-7.97v2.06A7 7 0 0 1 18 12a7 7 0 0 1-3.5 5.91v2.06A9 9 0 0 0 20 12a9 9 0 0 0-5.5-7.97z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cinput type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.82\" aria-label=\"Loop 6 volume\"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- LOOP 7 --\u003e\n  \u003cdiv class=\"ps-hs-player\" data-audio-player\u003e\n    \u003caudio preload=\"metadata\" crossorigin=\"anonymous\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/PS_HS_LOOP7_126BPM_D_MIN_songstarter_multi_instrument_drums.wav?v=1788343674\"\u003e\u003c\/audio\u003e\n\n    \u003cbutton class=\"ps-hs-play\" type=\"button\" aria-label=\"Play Loop 7\"\u003e\n      \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"ps-hs-main\"\u003e\n      \u003cdiv class=\"ps-hs-meta\"\u003e\n\u003cstrong\u003eLOOP 7\u003c\/strong\u003e\u003cspan\u003e126 BPM · D# MIN\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003ccanvas class=\"ps-hs-wave\" aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-hs-volume\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M3 9v6h4l5 4V5L7 9H3zm11.5 3A3.5 3.5 0 0 0 13 9.13v5.74A3.5 3.5 0 0 0 14.5 12zm0-7.97v2.06A7 7 0 0 1 18 12a7 7 0 0 1-3.5 5.91v2.06A9 9 0 0 0 20 12a9 9 0 0 0-5.5-7.97z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cinput type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.82\" aria-label=\"Loop 7 volume\"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- LOOP 14 --\u003e\n  \u003cdiv class=\"ps-hs-player\" data-audio-player\u003e\n    \u003caudio preload=\"metadata\" crossorigin=\"anonymous\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/PS_HS_LOOP14_130BPM_FMIN_songstarter_multi_instrument_drums.wav?v=1788343674\"\u003e\u003c\/audio\u003e\n\n    \u003cbutton class=\"ps-hs-play\" type=\"button\" aria-label=\"Play Loop 14\"\u003e\n      \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"ps-hs-main\"\u003e\n      \u003cdiv class=\"ps-hs-meta\"\u003e\n\u003cstrong\u003eLOOP 14\u003c\/strong\u003e\u003cspan\u003e130 BPM · F MIN\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003ccanvas class=\"ps-hs-wave\" aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-hs-volume\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M3 9v6h4l5 4V5L7 9H3zm11.5 3A3.5 3.5 0 0 0 13 9.13v5.74A3.5 3.5 0 0 0 14.5 12zm0-7.97v2.06A7 7 0 0 1 18 12a7 7 0 0 1-3.5 5.91v2.06A9 9 0 0 0 20 12a9 9 0 0 0-5.5-7.97z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cinput type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.82\" aria-label=\"Loop 14 volume\"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- LOOP 26 --\u003e\n  \u003cdiv class=\"ps-hs-player\" data-audio-player\u003e\n    \u003caudio preload=\"metadata\" crossorigin=\"anonymous\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/PS_HS_LOOP26_135BPM_F_MIN_songstarter_multi_instrument_drums.wav?v=1788343674\"\u003e\u003c\/audio\u003e\n\n    \u003cbutton class=\"ps-hs-play\" type=\"button\" aria-label=\"Play Loop 26\"\u003e\n      \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"ps-hs-main\"\u003e\n      \u003cdiv class=\"ps-hs-meta\"\u003e\n\u003cstrong\u003eLOOP 26\u003c\/strong\u003e\u003cspan\u003e135 BPM · F# MIN\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003ccanvas class=\"ps-hs-wave\" aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-hs-volume\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M3 9v6h4l5 4V5L7 9H3zm11.5 3A3.5 3.5 0 0 0 13 9.13v5.74A3.5 3.5 0 0 0 14.5 12zm0-7.97v2.06A7 7 0 0 1 18 12a7 7 0 0 1-3.5 5.91v2.06A9 9 0 0 0 20 12a9 9 0 0 0-5.5-7.97z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cinput type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.82\" aria-label=\"Loop 26 volume\"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- LOOP 29 --\u003e\n  \u003cdiv class=\"ps-hs-player\" data-audio-player\u003e\n    \u003caudio preload=\"metadata\" crossorigin=\"anonymous\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/PS_HS_LOOP29_158BPM_CMIN_songstarter_multi_instrument_drums.wav?v=1788343673\"\u003e\u003c\/audio\u003e\n\n    \u003cbutton class=\"ps-hs-play\" type=\"button\" aria-label=\"Play Loop 29\"\u003e\n      \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"ps-hs-main\"\u003e\n      \u003cdiv class=\"ps-hs-meta\"\u003e\n\u003cstrong\u003eLOOP 29\u003c\/strong\u003e\u003cspan\u003e158 BPM · C MIN\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003ccanvas class=\"ps-hs-wave\" aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-hs-volume\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M3 9v6h4l5 4V5L7 9H3zm11.5 3A3.5 3.5 0 0 0 13 9.13v5.74A3.5 3.5 0 0 0 14.5 12zm0-7.97v2.06A7 7 0 0 1 18 12a7 7 0 0 1-3.5 5.91v2.06A9 9 0 0 0 20 12a9 9 0 0 0-5.5-7.97z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cinput type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.82\" aria-label=\"Loop 29 volume\"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n.ps-hs-audio-list{\n  --pink:#f04b9e;\n  --purple:#9b68d7;\n  --bg:#17151c;\n  --panel:#1d1a22;\n  --line:rgba(255,255,255,.08);\n  --text:#f6f3f7;\n  --muted:#8f8994;\n  width:100%;\n  max-width:720px;\n  margin:24px 0;\n  font-family:inherit;\n}\n.ps-hs-audio-heading{\n  display:flex;\n  align-items:baseline;\n  gap:8px;\n  margin:0 0 8px 2px;\n}\n.ps-hs-audio-heading span{\n  color:var(--pink);\n  font-size:8px;\n  font-weight:800;\n  letter-spacing:.15em;\n}\n.ps-hs-audio-heading strong{\n  color:#252128;\n  font-size:10px;\n  font-weight:800;\n  letter-spacing:.12em;\n}\n.ps-hs-player{\n  display:grid;\n  grid-template-columns:38px minmax(0,1fr) 82px;\n  align-items:center;\n  gap:10px;\n  min-height:54px;\n  padding:8px 11px;\n  margin:0 0 6px;\n  overflow:hidden;\n  border:1px solid var(--line);\n  border-radius:10px;\n  background:\n    radial-gradient(circle at 92% 0,rgba(155,104,215,.10),transparent 34%),\n    var(--bg);\n  box-shadow:0 7px 18px rgba(0,0,0,.08);\n}\n.ps-hs-play{\n  appearance:none;\n  width:36px;\n  height:36px;\n  padding:0;\n  display:grid;\n  place-items:center;\n  border:0;\n  border-radius:50%;\n  background:linear-gradient(135deg,var(--pink),var(--purple));\n  box-shadow:0 5px 13px rgba(240,75,158,.17);\n  cursor:pointer;\n  transition:transform .15s ease;\n}\n.ps-hs-play:hover{transform:scale(1.04)}\n.ps-hs-play svg{width:15px;height:15px;fill:#fff}\n.ps-hs-play .pause-icon{display:none}\n.ps-hs-player.is-playing .play-icon{display:none}\n.ps-hs-player.is-playing .pause-icon{display:block}\n.ps-hs-main{min-width:0}\n.ps-hs-meta{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:10px;\n  margin-bottom:3px;\n}\n.ps-hs-meta strong{\n  color:#d8d2db;\n  font-size:7px;\n  font-weight:800;\n  letter-spacing:.11em;\n  white-space:nowrap;\n}\n.ps-hs-meta span{\n  color:#706a75;\n  font-size:7px;\n  font-weight:650;\n  white-space:nowrap;\n}\n.ps-hs-wave{\n  display:block;\n  width:100%;\n  height:26px;\n  pointer-events:none;\n}\n.ps-hs-volume{\n  display:flex;\n  align-items:center;\n  justify-content:flex-end;\n  gap:7px;\n}\n.ps-hs-volume svg{\n  flex:0 0 auto;\n  width:13px;\n  height:13px;\n  fill:#76707b;\n}\n.ps-hs-volume input{\n  appearance:none;\n  -webkit-appearance:none;\n  width:55px;\n  height:3px;\n  margin:0;\n  border:0;\n  border-radius:4px;\n  outline:none;\n  background:rgba(255,255,255,.14);\n  cursor:pointer;\n}\n.ps-hs-volume input::-webkit-slider-thumb{\n  appearance:none;\n  -webkit-appearance:none;\n  width:9px;\n  height:9px;\n  border-radius:50%;\n  background:#d65da5;\n  cursor:pointer;\n}\n.ps-hs-volume input::-moz-range-thumb{\n  width:9px;\n  height:9px;\n  border:0;\n  border-radius:50%;\n  background:#d65da5;\n  cursor:pointer;\n}\n@media(max-width:520px){\n  .ps-hs-player{\n    grid-template-columns:36px minmax(0,1fr) 24px;\n    gap:8px;\n    padding:8px 9px;\n  }\n  .ps-hs-volume input{display:none}\n  .ps-hs-volume{justify-content:center}\n  .ps-hs-meta span{font-size:6px}\n  .ps-hs-wave{height:24px}\n}\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(function(){\n  const players = document.querySelectorAll('.ps-hs-player[data-audio-player]');\n  if(!players.length) return;\n\n  let audioCtx = null;\n  const connections = new WeakMap();\n\n  function drawIdle(canvas){\n    const dpr = window.devicePixelRatio || 1;\n    const rect = canvas.getBoundingClientRect();\n    if(!rect.width) return;\n    canvas.width = Math.round(rect.width*dpr);\n    canvas.height = Math.round(rect.height*dpr);\n    const ctx = canvas.getContext('2d');\n    ctx.setTransform(dpr,0,0,dpr,0,0);\n    ctx.clearRect(0,0,rect.width,rect.height);\n\n    const gap=3, barW=2;\n    const bars=Math.floor(rect.width\/(barW+gap));\n    const mid=rect.height\/2;\n    for(let i=0;i\u003cbars;i++){\n      const wave = 0.34 + 0.28*Math.sin(i*.73) + 0.18*Math.sin(i*1.91);\n      const h=Math.max(3,Math.abs(wave)*rect.height*.72);\n      ctx.fillStyle='rgba(255,255,255,.16)';\n      ctx.beginPath();\n      if(ctx.roundRect) ctx.roundRect(i*(barW+gap),mid-h\/2,barW,h,1);\n      else ctx.rect(i*(barW+gap),mid-h\/2,barW,h);\n      ctx.fill();\n    }\n  }\n\n  function connectAnalyser(player){\n    if(connections.has(player)) return connections.get(player);\n\n    try{\n      audioCtx = audioCtx || new (window.AudioContext || window.webkitAudioContext)();\n      const audio = player.querySelector('audio');\n      const source = audioCtx.createMediaElementSource(audio);\n      const analyser = audioCtx.createAnalyser();\n      analyser.fftSize = 256;\n      analyser.smoothingTimeConstant = .72;\n      source.connect(analyser);\n      analyser.connect(audioCtx.destination);\n      const data = new Uint8Array(analyser.frequencyBinCount);\n      const connection = {analyser,data};\n      connections.set(player,connection);\n      return connection;\n    }catch(e){\n      return null;\n    }\n  }\n\n  function animate(player){\n    const audio = player.querySelector('audio');\n    const canvas = player.querySelector('.ps-hs-wave');\n    const connection = connectAnalyser(player);\n    if(!connection){\n      drawIdle(canvas);\n      return;\n    }\n\n    const ctx = canvas.getContext('2d');\n    const dpr = window.devicePixelRatio || 1;\n\n    function frame(){\n      if(audio.paused || audio.ended) return;\n\n      const rect = canvas.getBoundingClientRect();\n      if(canvas.width !== Math.round(rect.width*dpr) || canvas.height !== Math.round(rect.height*dpr)){\n        canvas.width=Math.round(rect.width*dpr);\n        canvas.height=Math.round(rect.height*dpr);\n      }\n\n      ctx.setTransform(dpr,0,0,dpr,0,0);\n      ctx.clearRect(0,0,rect.width,rect.height);\n\n      connection.analyser.getByteFrequencyData(connection.data);\n\n      const gap=3, barW=2;\n      const bars=Math.floor(rect.width\/(barW+gap));\n      const mid=rect.height\/2;\n      const gradient=ctx.createLinearGradient(0,0,rect.width,0);\n      gradient.addColorStop(0,'#f04b9e');\n      gradient.addColorStop(1,'#9b68d7');\n      ctx.fillStyle=gradient;\n\n      for(let i=0;i\u003cbars;i++){\n        const index=Math.floor((i\/bars)*connection.data.length*.72);\n        const level=connection.data[index]\/255;\n        const h=Math.max(3,level*rect.height*.95);\n        ctx.beginPath();\n        if(ctx.roundRect) ctx.roundRect(i*(barW+gap),mid-h\/2,barW,h,1);\n        else ctx.rect(i*(barW+gap),mid-h\/2,barW,h);\n        ctx.fill();\n      }\n\n      requestAnimationFrame(frame);\n    }\n    requestAnimationFrame(frame);\n  }\n\n  players.forEach(function(player){\n    const audio=player.querySelector('audio');\n    const play=player.querySelector('.ps-hs-play');\n    const volume=player.querySelector('.ps-hs-volume input');\n    const canvas=player.querySelector('.ps-hs-wave');\n\n    audio.volume=parseFloat(volume.value);\n    drawIdle(canvas);\n\n    play.addEventListener('click',async function(){\n      players.forEach(function(other){\n        if(other!==player){\n          const otherAudio=other.querySelector('audio');\n          otherAudio.pause();\n          other.classList.remove('is-playing');\n          drawIdle(other.querySelector('.ps-hs-wave'));\n        }\n      });\n\n      if(audio.paused){\n        try{\n          const connection=connectAnalyser(player);\n          if(audioCtx \u0026\u0026 audioCtx.state==='suspended') await audioCtx.resume();\n          await audio.play();\n          player.classList.add('is-playing');\n          animate(player);\n        }catch(e){}\n      }else{\n        audio.pause();\n        player.classList.remove('is-playing');\n        drawIdle(canvas);\n      }\n    });\n\n    volume.addEventListener('input',function(){\n      audio.volume=parseFloat(this.value);\n    });\n\n    audio.addEventListener('ended',function(){\n      player.classList.remove('is-playing');\n      drawIdle(canvas);\n    });\n\n    audio.addEventListener('pause',function(){\n      if(!audio.ended){\n        player.classList.remove('is-playing');\n        drawIdle(canvas);\n      }\n    });\n  });\n\n  window.addEventListener('resize',function(){\n    players.forEach(function(player){\n      if(!player.classList.contains('is-playing')){\n        drawIdle(player.querySelector('.ps-hs-wave'));\n      }\n    });\n  });\n})();\n\u003c\/script\u003e\n\u003ch1 class=\"isSelectedEnd\"\u003e\u003cspan\u003eEmotional guitars. Melodic trap foundations. Instant inspiration.\u003c\/span\u003e\u003c\/h1\u003e\n\u003ch3 class=\"isSelectedEnd\"\u003e\n\u003cstrong\u003e\u003cspan\u003eHEARTSTRINGS\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e delivers \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003e30 guitar-driven Trap Songstarters\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e built for creating emotional, melodic records inspired by the sounds of \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003eNBA YoungBoy, Rod Wave, Gunna\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e and modern guitar-led trap.\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cp class=\"isSelectedEnd\"\u003e\u003cspan\u003eMore than a collection of simple guitar loops, every idea gives you the building blocks to take the sound further. Each Songstarter comes \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003ewith and without drums\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e, alongside individual \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003einstrument and drum stems\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e and \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003eMIDI files\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e, giving you complete control over the arrangement.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"isSelectedEnd\"\u003e\u003cspan\u003eExpect emotive guitar melodies, atmospheric textures, hard-hitting drums and carefully layered instrumentation created using a combination of \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003elive instruments, analogue processing and digital production techniques\u003c\/span\u003e\u003c\/strong\u003e\u003cspan\u003e.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"isSelectedEnd\"\u003e\u003cspan\u003eEverything is clearly labelled and organised, so you can drag a loop into your DAW and start creating immediately.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cspan\u003eWHAT'S INSIDE\u003c\/span\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003cspan\u003e30 Guitar Trap Songstarters\u003c\/span\u003e\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eVersions \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003ewith drums\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eVersions \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003ewithout drums\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eIndividual \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003einstrument stems\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eIndividual \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003edrum stems\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003cspan\u003eMIDI files included\u003c\/span\u003e\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eHigh-quality \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003eWAV audio\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003cspan\u003eLive instrumentation\u003c\/span\u003e\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAnalogue \u0026amp; digital processing\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eKey production elements individually labelled\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eOrganised for fast \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003edrag-and-drop workflow\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"isSelectedEnd\"\u003e\u003cspan\u003eWhether you need a guitar melody to start a new beat or an entire musical idea to flip, chop and rebuild, \u003c\/span\u003e\u003cstrong\u003e\u003cspan\u003eHEARTSTRINGS gives you everything you need to turn inspiration into a finished track.\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan\u003e30 ideas. Full stems. MIDI. Endless possibilities.\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\u003e","brand":"Prosound Sonics","offers":[{"title":"Default Title","offer_id":49548771819779,"sku":"PS:HS005","price":20.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0643\/1965\/2099\/files\/Heartstrings.png?v=1788265126","url":"https:\/\/www.prosoundsonics.com\/products\/heartstrings-guitar-trap-loops-songstarters","provider":"Prosound Sonics","version":"1.0","type":"link"}