{"product_id":"hed-kandi-usb","title":"Hed Kandi USB","description":"\u003ch1 style=\"text-align: center;\"\u003e\u003cbr\u003e\u003c\/h1\u003e\n\u003ch1 style=\"text-align: center;\"\u003e\u003cspan style=\"text-decoration: underline;\"\u003eHed Kandi USB:\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/Black_5.1_-_THIS_ONE_WITH_PROMO.jpg?v=1776367524\" alt=\"\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003c!-- Professional Audio Player + Mobile-Friendly LED EQ Visualizer --\u003e\n\n\u003cdiv style=\"max-width:620px;margin:20px auto;padding:20px;background:#111;border-radius:18px;box-shadow:0 10px 30px rgba(0,0,0,.25);font-family:Arial,sans-serif;color:#fff;\"\u003e\n\n  \u003c!-- Top --\u003e\n  \u003cdiv style=\"display:flex;align-items:center;gap:15px;margin-bottom:18px;flex-wrap:wrap;\"\u003e\n\n    \u003c!-- Cover --\u003e\n    \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/Hed_Kandi_USB_Pin_P_S.jpg?v=1778277882\" style=\"width:72px;height:72px;border-radius:12px;object-fit:cover;\"\u003e\n\n    \u003c!-- Info --\u003e\n    \u003cdiv style=\"flex:1;min-width:140px;\"\u003e\n      \u003cdiv style=\"font-size:18px;font-weight:700;\"\u003eHed Kandi USB\u003c\/div\u003e\n      \u003cdiv style=\"font-size:14px;color:#aaa;margin-top:4px;\"\u003eVarious Artists\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- EQ --\u003e\n    \u003ccanvas id=\"eqCanvas\" width=\"120\" height=\"60\" style=\"background:#000;border-radius:8px;max-width:120px;width:100%;height:60px;\"\u003e\n    \u003c\/canvas\u003e\n\n  \u003c\/div\u003e\n\n  \u003c!-- Audio --\u003e\n  \u003caudio id=\"myAudio\" preload=\"metadata\" playsinline crossorigin=\"anonymous\"\u003e\n    \u003csource src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/Hed_Kandi_USB_-_PREVIEW.mp3?v=1778277964\"\u003e\u003c\/audio\u003e\n\n  \u003c!-- Controls --\u003e\n  \u003cdiv style=\"display:flex;align-items:center;gap:12px;\"\u003e\n\n    \u003c!-- Play --\u003e\n    \u003cbutton id=\"playBtn\" style=\"width:52px;height:52px;border:none;border-radius:50%;background:#fff;color:#111;font-size:18px;font-weight:bold;cursor:pointer;flex-shrink:0;\"\u003e\n      ▶\n    \u003c\/button\u003e\n\n    \u003c!-- Seek --\u003e\n    \u003cdiv style=\"flex:1;\"\u003e\n      \u003cinput type=\"range\" id=\"seekBar\" min=\"0\" max=\"100\" value=\"0\" style=\"width:100%;cursor:pointer;\"\u003e\n\n      \u003cdiv style=\"display:flex;justify-content:space-between;font-size:12px;color:#aaa;margin-top:4px;\"\u003e\n        \u003cspan id=\"currentTime\"\u003e0:00\u003c\/span\u003e\n        \u003cspan id=\"duration\"\u003e0:00\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Volume (hidden on iPhone) --\u003e\n    \u003cinput type=\"range\" id=\"volumeBar\" min=\"0\" max=\"1\" step=\"0.01\" value=\"1\" style=\"width:80px;\"\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n\n  const audio = document.getElementById(\"myAudio\");\n  const playBtn = document.getElementById(\"playBtn\");\n  const seekBar = document.getElementById(\"seekBar\");\n  const volumeBar = document.getElementById(\"volumeBar\");\n  const currentTime = document.getElementById(\"currentTime\");\n  const duration = document.getElementById(\"duration\");\n  const canvas = document.getElementById(\"eqCanvas\");\n  const ctx = canvas.getContext(\"2d\");\n\n  let audioCtx = null;\n  let analyser = null;\n  let source = null;\n  let dataArray = null;\n  let eqStarted = false;\n\n  const isiPhone = \/iPhone|iPad|iPod\/i.test(navigator.userAgent);\n\n  if (isiPhone) {\n    volumeBar.style.display = \"none\";\n  }\n\n  async function setupAudioContext() {\n    if (audioCtx) return;\n\n    audioCtx = new (window.AudioContext || window.webkitAudioContext)();\n\n    analyser = audioCtx.createAnalyser();\n    analyser.fftSize = 64;\n\n    source = audioCtx.createMediaElementSource(audio);\n    source.connect(analyser);\n    analyser.connect(audioCtx.destination);\n\n    dataArray = new Uint8Array(analyser.frequencyBinCount);\n\n    await audioCtx.resume();\n\n    if (!eqStarted) {\n      eqStarted = true;\n      drawEQ();\n    }\n  }\n\n  playBtn.addEventListener(\"click\", async function(){\n\n    try {\n      await setupAudioContext();\n\n      if (audio.paused) {\n        await audio.play();\n      } else {\n        audio.pause();\n      }\n\n    } catch(err) {\n      console.log(err);\n    }\n\n  });\n\n  audio.addEventListener(\"play\", function(){\n    playBtn.innerHTML = \"❚❚\";\n  });\n\n  audio.addEventListener(\"pause\", function(){\n    playBtn.innerHTML = \"▶\";\n  });\n\n  audio.addEventListener(\"ended\", function(){\n    playBtn.innerHTML = \"▶\";\n    audio.currentTime = 0;\n  });\n\n  audio.addEventListener(\"loadedmetadata\", function(){\n    duration.textContent = formatTime(audio.duration);\n  });\n\n  audio.addEventListener(\"timeupdate\", function(){\n    seekBar.value = (audio.currentTime \/ audio.duration) * 100 || 0;\n    currentTime.textContent = formatTime(audio.currentTime);\n  });\n\n  seekBar.addEventListener(\"input\", function(){\n    audio.currentTime = (seekBar.value \/ 100) * audio.duration;\n  });\n\n  volumeBar.addEventListener(\"input\", function(){\n    audio.volume = volumeBar.value;\n  });\n\n  function formatTime(sec){\n    let m = Math.floor(sec \/ 60);\n    let s = Math.floor(sec % 60);\n    if (s \u003c 10) s = \"0\" + s;\n    return m + \":\" + s;\n  }\n\n  function drawEQ(){\n    requestAnimationFrame(drawEQ);\n\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n    if (!analyser || audio.paused) return;\n\n    analyser.getByteFrequencyData(dataArray);\n\n    const bars = 12;\n    const barWidth = 7;\n    const gap = 3;\n\n    for(let i = 0; i \u003c bars; i++){\n\n      let val = dataArray[i] \/ 255;\n      let h = val * canvas.height;\n\n      let x = i * (barWidth + gap);\n      let y = canvas.height - h;\n\n      let color = \"lime\";\n      if (h \u003e 25) color = \"yellow\";\n      if (h \u003e 42) color = \"red\";\n\n      ctx.fillStyle = color;\n      ctx.fillRect(x, y, barWidth, h);\n    }\n  }\n\n});\n\u003c\/script\u003e\n\n\n\u003cp style=\"text-align: center;\"\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e\u003cstrong\u003e*Some Tracks are Mixed.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch4 style=\"text-align: center;\"\u003e\n\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e\u003cspan style=\"text-decoration: underline;\"\u003e*Discount Will Be Automatically Calculated At Checkout.\u003cbr\u003e\u003c\/span\u003e*Remember - Free Shipping On Orders Over £50 Can Still Be Used.\u003c\/span\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003c\/span\u003e\n\u003c\/h4\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eTropical House\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/01_Tropical_House_front_480x480.jpg?v=1610136805\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/02_Tropical-_back_480x480.jpg?v=1610136838\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eBack To Love \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/04_Back_To_Love_-_front_480x480.jpg?v=1610136905\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/03_Back_To_Love_-_back_480x480.jpg?v=1610136928\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eThe Mix 2013 \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/06_The_Mix_2013_-_front_480x480.jpg?v=1610137003\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/05_The_Mix_2013_-_back_480x480.jpg?v=1610137028\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eIbiza -10\u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/08_Ibiza_10_-_front_480x480.jpg?v=1610137082\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/07_Ibiza_-10_-back_480x480.jpg?v=1610137155\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eIbiza 2012 \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/10_Ibiza_2012_-_front_480x480.jpg?v=1610137289\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/09_Ibiza_2012_-_back_480x480.jpg?v=1610137117\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eDeep House \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/12_Deep_House_-front_480x480.jpg?v=1610137354\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/11_Deep_House_-_back_480x480.jpg?v=1610137390\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eTaste of 2012 \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/14_Taste_of_2012_-_front_480x480.jpg?v=1610137461\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/13_Taste_of_2012_-back_480x480.jpg?v=1610137497\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eWinter Chill \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/16_Winter_Chill_-front_480x480.jpg?v=1610137566\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/15_Winter_Chill_-back_480x480.jpg?v=1610137619\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eClassics \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/18_Classics_-_front_480x480.jpg?v=1610137683\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/17_Classics_-_back_480x480.jpg?v=1610137714\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003eBack To Disco \u003cbr\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/19_Back_To_Disco_-_front_480x480.jpg?v=1610137802\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/20_Back_To_Disco_-back_480x480.jpg?v=1610137835\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0280\/3066\/4773\/files\/All_On_1_-_Banner-removebg-preview_480x480.png?v=1691346040\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3 class=\"p1\"\u003e\u003ca href=\"https:\/\/chinchillachoons.com\/collections\/music-usb\" title=\"Back To Collection Page Link\"\u003e\u003cspan style=\"text-decoration: underline;\"\u003eBack To Collection Page\u003c\/span\u003e\u003c\/a\u003e\u003c\/h3\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp data-start=\"390\" data-end=\"471\"\u003e\u003cstrong data-start=\"390\" data-end=\"426\"\u003eHave Questions About Music USBs?\u003c\/strong\u003e\u003cbr data-start=\"426\" data-end=\"429\"\u003eLearn more in our \u003cstrong data-start=\"447\" data-end=\"470\"\u003eMusic USB FAQ Guide\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cul data-start=\"473\" data-end=\"571\"\u003e\n\u003cli data-section-id=\"12z6s4v\" data-start=\"473\" data-end=\"503\"\u003e\n\u003cp data-start=\"475\" data-end=\"503\"\u003eWhat is a music USB drive?\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli data-section-id=\"18lhzke\" data-start=\"504\" data-end=\"540\"\u003e\n\u003cp data-start=\"506\" data-end=\"540\"\u003eCan you play music USBs in cars?\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli data-section-id=\"1mgp891\" data-start=\"541\" data-end=\"571\"\u003e\n\u003cp data-start=\"543\" data-end=\"571\"\u003eHow many songs fit on a USB?\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-start=\"573\" data-end=\"607\"\u003e\u003ca href=\"https:\/\/chinchillachoons.com\/pages\/music-on-usb-frequently-asked-questions\" title=\"FAQ Link Message\"\u003e👉 \u003cstrong data-start=\"576\" data-end=\"607\"\u003eRead the full Music USB FAQ\u003c\/strong\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Chinchilla Choons","offers":[{"title":"Default Title","offer_id":54450472288520,"sku":"sku-32026597949509","price":30.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0982\/9043\/4312\/files\/HedKandi-USB-Backx.png?v=1775974104","url":"https:\/\/bidnamic.store\/products\/hed-kandi-usb","provider":"Bidnamic Store","version":"1.0","type":"link"}