{"id":117351,"date":"2026-06-13T10:55:33","date_gmt":"2026-06-13T10:55:33","guid":{"rendered":"https:\/\/radiojingles24.com\/?page_id=117351"},"modified":"2026-07-24T12:56:27","modified_gmt":"2026-07-24T12:56:27","slug":"radio-studio-24","status":"publish","type":"page","link":"https:\/\/radiojingles24.com\/de\/radio-studio-24\/","title":{"rendered":"Radio Studio 24"},"content":{"rendered":"\n\t\t<div id=\"fws_6a6410bb8ddf4\"  data-midnight=\"dark\"  data-bg-mobile-hidden=\"\" class=\"wpb_row vc_row-fluid vc_row top-level standard_section   \"  style=\"padding-top: 0px; padding-bottom: 0px; \"><div class=\"row-bg-wrap\" data-bg-animation=\"none\"><div class=\"inner-wrap \"><div class=\"row-bg    \"  style=\"\"><\/div><\/div><div class=\"row-bg-overlay\" ><\/div><\/div><div class=\"col span_12 dark left\">\n\t<div  class=\"vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding\"  data-t-w-inherits=\"default\" data-border-radius=\"none\" data-shadow=\"none\" data-border-animation=\"\" data-border-animation-delay=\"\" data-border-width=\"none\" data-border-style=\"solid\" data-border-color=\"\" data-bg-cover=\"\" data-padding-pos=\"all\" data-has-bg-color=\"false\" data-bg-color=\"\" data-bg-opacity=\"1\" data-hover-bg=\"\" data-hover-bg-opacity=\"1\" data-animation=\"\" data-delay=\"0\"><div class=\"column-bg-overlay\"><\/div>\n\t\t<div class=\"vc_column-inner\">\n\t\t\t<div class=\"wpb_wrapper\">\n\t\t\t\t\n\t<div class=\"wpb_raw_code wpb_content_element wpb_raw_html\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>RadioStudio24 \u2014 professional radio playout, in a browser | by Radio Jingles 24<\/title>\n<meta name=\"description\" content=\"RadioStudio24 is a complete broadcast playout system that runs in a browser: live and automated playout, remote voice tracking, music scheduling, advert traffic with proof-of-play, a broadcast audio processor built in, AI presenters, and a cloud engine that keeps you on air 24\/7. From the team behind RadioJingles24.\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Nunito:wght@400;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n<style>\n  \/* ============================================================= *\n   *  EVERYTHING is scoped under #rs24 so the WordPress theme can't\n   *  reach in (no more circles\/boxes) and this page's styles can't\n   *  leak out and break your global header. Variables live on the\n   *  wrapper; a scoped reset neutralises theme spacing inside.\n   * ============================================================= *\/\n  \/* CENTERING FIX: the vertical scrollbar eats ~15px on the RIGHT only,\n     so every margin:auto block sits 15px left of true window-centre \u2014 the\n     \"not centred, pushed left\" look. Reserving a matching gutter on BOTH\n     edges makes content centre in the FULL window. Proven live: card left\n     gap 114\/right 129 \u2192 129\/129. Only loads on this page; no site-wide leak. *\/\n  html{ scrollbar-gutter: stable both-edges; }\n  #rs24{\n    --pink:#ed2290; --pink2:#ff4db1; --pinkdeep:#a31263;\n    --cyan:#12aebf; --green:#12a274; --amber:#e58a0c; --violet:#6f52ff; --blue:#3f6bff;\n    --bg:#fbf9fd; --bg-tint:#faeff7; --panel:#ffffff;\n    --ink:#191320; --ink-dim:#5a5368; --ink-faint:#8b8498;\n    --line:#efe9f3; --line2:#e2dbec;\n    --dark:#150f1e; --dark2:#1d1529;\n    --sans:'Nunito',system-ui,-apple-system,'Segoe UI',sans-serif;\n    --mono:'JetBrains Mono','SFMono-Regular',Menlo,Consolas,monospace;\n    --shadow:0 30px 70px -34px rgba(90,15,75,.5);\n    background:var(--bg); color:var(--ink); font-family:var(--sans);\n    line-height:1.55; -webkit-font-smoothing:antialiased; font-weight:600;\n    width:100%; overflow-x:hidden; text-align:left;\n  }\n  #rs24 *{box-sizing:border-box; margin:0; padding:0}\n  #rs24 a{color:inherit; text-decoration:none}\n  #rs24 h1,#rs24 h2,#rs24 h3{font-weight:900; letter-spacing:-.025em; line-height:1.08; color:var(--ink)}\n  #rs24 img{max-width:100%; display:block; height:auto}\n  #rs24 .wrap{max-width:1180px; margin:0 auto; padding:0 24px}\n\n  \/* buttons *\/\n  #rs24 .btns{display:flex; gap:13px; flex-wrap:wrap}\n  #rs24 .btn{padding:14px 26px; border-radius:999px; font-weight:800; font-size:15px; transition:.15s; display:inline-flex; align-items:center; gap:8px; cursor:pointer; border:0; line-height:1.1}\n  #rs24 .btn-sm{padding:10px 18px; font-size:14px}\n  #rs24 .btn-pri{background:linear-gradient(180deg,var(--pink2),var(--pink)); color:#fff; box-shadow:0 10px 28px rgba(237,34,144,.4)}\n  #rs24 .btn-pri:hover{filter:brightness(1.06); transform:translateY(-1px)}\n  #rs24 .btn-ghost{background:#fff; border:1.5px solid var(--line2); color:var(--ink)}\n  #rs24 .btn-ghost:hover{border-color:var(--pink); color:var(--pink)}\n  #rs24 .btn-light{background:rgba(255,255,255,.14); border:1.5px solid rgba(255,255,255,.28); color:#fff}\n  #rs24 .btn-light:hover{background:rgba(255,255,255,.22)}\n\n  \/* sections *\/\n  #rs24 section{padding:82px 0}\n  #rs24 .sec-eye{font-family:var(--mono); font-size:12px; letter-spacing:.16em; color:var(--pink); text-transform:uppercase; margin-bottom:15px; font-weight:700}\n  #rs24 h2{font-size:clamp(27px,3.7vw,40px); max-width:16em; color:var(--ink)}\n  #rs24 .lead{font-size:18px; color:var(--ink-dim); margin:18px 0 0; max-width:40em; font-weight:600; line-height:1.62}\n  #rs24 .tint{background:var(--bg-tint)}\n\n  \/* screenshot frame *\/\n  #rs24 .shot{border-radius:14px; overflow:hidden; border:1px solid var(--line2); box-shadow:var(--shadow); background:#0d0f16}\n  #rs24 .shot-bar{display:flex; align-items:center; gap:7px; padding:10px 14px; background:#14161f; border-bottom:1px solid #23242f}\n  #rs24 .shot-bar i{width:10px; height:10px; border-radius:50%; background:#33353f}\n  #rs24 .shot-bar i:nth-child(1){background:#ff5f57} #rs24 .shot-bar i:nth-child(2){background:#febc2e} #rs24 .shot-bar i:nth-child(3){background:#28c840}\n  #rs24 .shot-bar span{margin-left:8px; font-family:var(--mono); font-size:11px; color:#6f7689; font-weight:700}\n  #rs24 .shot img{width:100%; display:block}\n  #rs24 .shot-glow{position:relative}\n  #rs24 .shot-glow::before{content:\"\"; position:absolute; inset:-30px; background:radial-gradient(closest-side,rgba(237,34,144,.28),transparent); filter:blur(20px); z-index:-1}\n\n  \/* feature block *\/\n  #rs24 .fblock{display:grid; grid-template-columns:1.02fr 1.05fr; gap:56px; align-items:center}\n  @media(max-width:940px){#rs24 .fblock{grid-template-columns:1fr; gap:34px}}\n  #rs24 .fblock.rev .ftext{order:2}\n  @media(max-width:940px){#rs24 .fblock.rev .ftext{order:0}}\n  #rs24 .fbul{list-style:none; margin:22px 0 0}\n  #rs24 .fbul li{position:relative; padding:8px 0 8px 30px; font-size:15px; font-weight:700; color:var(--ink-dim); border-bottom:1px solid var(--line)}\n  #rs24 .fbul li:last-child{border-bottom:0}\n  #rs24 .fbul li::before{content:\"\"; position:absolute; left:0; top:12px; width:18px; height:18px; border-radius:50%;\n    background:var(--pink) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-4.9' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\") center\/12px no-repeat}\n  #rs24 .fbul li b{color:var(--ink)}\n\n  \/* ===== hero (with integrated top bar) ===== *\/\n  #rs24 .hero{position:relative; color:#fff; padding:0 0 0; overflow:hidden;\n    background:\n      radial-gradient(1000px 520px at 78% -12%,rgba(255,77,177,.5),transparent 60%),\n      radial-gradient(760px 520px at 6% 120%,rgba(111,82,255,.32),transparent 60%),\n      linear-gradient(160deg,#2a0f2b,#5c1350 46%,#12111c)}\n  #rs24 .hero-nav{display:flex; align-items:center; gap:24px; padding-top:24px}\n  #rs24 .rs-logo{display:inline-flex; align-items:center; font-weight:900; font-size:20px; color:#fff; letter-spacing:-.02em}\n  #rs24 .rs-logo .rs-24{display:inline-flex; align-items:center; justify-content:center; width:29px; height:29px; margin-left:6px; border:2px solid var(--pink); border-radius:50%; color:var(--pink2); font-size:13.5px; font-weight:900}\n  #rs24 .hero-links{display:flex; gap:22px; margin-left:auto; font-size:14.5px; font-weight:800}\n  #rs24 .hero-links a{color:rgba(255,255,255,.82)}\n  #rs24 .hero-links a:hover{color:#fff}\n  @media(max-width:980px){#rs24 .hero-links{display:none}}\n  #rs24 .hero-body{text-align:center; padding:54px 0 0}\n  #rs24 .hero .trust{display:inline-flex; align-items:center; gap:8px; font-size:12.5px; font-weight:800; letter-spacing:.03em; color:#fff; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); padding:7px 16px; border-radius:999px; margin-bottom:24px}\n  #rs24 .hero h1{font-size:clamp(36px,5.6vw,62px); max-width:15em; margin:0 auto; color:#fff}\n  #rs24 .hero h1 em{font-style:normal; background:linear-gradient(90deg,#ffd0ea,#ff8dc6); -webkit-background-clip:text; background-clip:text; color:transparent}\n  #rs24 .hero .sub{font-size:19px; color:rgba(255,255,255,.82); margin:24px auto 32px; max-width:40em; font-weight:600}\n  #rs24 .hero .btns{justify-content:center}\n  #rs24 .hero-fine{margin-top:16px; font-size:13.5px; font-weight:700; color:rgba(255,255,255,.6)}\n  #rs24 .hero-shot{max-width:1060px; margin:56px auto 0; padding-bottom:70px}\n  #rs24 .hero-shot .shot{box-shadow:0 50px 120px -40px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.06)}\n\n  \/* hero AI ticker \u2014 a looping \"now playing \u2192 AI back-announce\" demo *\/\n  #rs24 .airdemo{max-width:720px; margin:36px auto 0; text-align:left; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14); border-radius:16px; padding:18px 22px; box-shadow:0 24px 60px -34px rgba(0,0,0,.7)}\n  #rs24 .airdemo-head{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:12px}\n  #rs24 .airdemo-live{display:inline-flex; align-items:center; gap:7px; font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:.12em; color:#57e0a8; background:rgba(70,211,154,.14); border:1px solid rgba(70,211,154,.3); padding:5px 10px; border-radius:6px}\n  #rs24 .airdemo-live i{width:8px; height:8px; border-radius:50%; background:#46d39a; box-shadow:0 0 8px #46d39a; animation:rs24pulse 1.4s infinite}\n  @keyframes rs24pulse{0%,100%{opacity:1} 50%{opacity:.3}}\n  #rs24 .airdemo-np{font-size:13px; font-weight:800; color:rgba(255,255,255,.82)}\n  #rs24 .airdemo-np b{color:var(--pink2)}\n  #rs24 .airdemo-say{font-size:16px; line-height:1.55; font-weight:700; color:#fff; min-height:4.5em}\n  #rs24 .airdemo-say .cur{display:inline-block; width:2px; height:1.05em; background:var(--pink2); margin-left:2px; vertical-align:-2px; animation:rs24blink .9s steps(1) infinite}\n  @keyframes rs24blink{0%,100%{opacity:1} 50%{opacity:0}}\n  #rs24 .airdemo-tags{display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; min-height:24px}\n  #rs24 .airdemo-tags span{font-family:var(--mono); font-size:10px; font-weight:700; letter-spacing:.03em; color:rgba(255,255,255,.72); background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.14); padding:4px 9px; border-radius:999px}\n  #rs24 .airdemo-tags span::before{content:\"\u2726 \"; color:var(--pink2)}\n\n  \/* heritage strip *\/\n  #rs24 .heritage{padding:40px 0; border-bottom:1px solid var(--line)}\n  #rs24 .heritage-in{display:flex; align-items:center; gap:20px 40px; flex-wrap:wrap; justify-content:center; text-align:center}\n  #rs24 .heritage b{color:var(--ink)}\n  #rs24 .heritage .h-line{font-size:16px; font-weight:700; color:var(--ink-dim)}\n  #rs24 .heritage .h-stat{font-family:var(--mono); font-weight:800; color:var(--pink); font-size:18px}\n\n  \/* cards *\/\n  #rs24 .card-grid{display:grid; gap:18px; margin-top:44px}\n  #rs24 .g3{grid-template-columns:repeat(3,1fr)}\n  @media(max-width:900px){#rs24 .g3{grid-template-columns:1fr 1fr}}\n  @media(max-width:600px){#rs24 .g3{grid-template-columns:1fr}}\n  #rs24 .card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:26px; transition:.15s}\n  #rs24 .card:hover{border-color:rgba(237,34,144,.35); transform:translateY(-3px); box-shadow:0 18px 40px -22px rgba(237,34,144,.4)}\n  #rs24 .card .ico{width:44px; height:44px; border-radius:12px; display:grid; place-items:center; font-size:22px; margin-bottom:15px}\n  #rs24 .card h3{font-size:17.5px; margin-bottom:8px}\n  #rs24 .card p{font-size:14.5px; color:var(--ink-dim); font-weight:600; line-height:1.6}\n  #rs24 .card p b{color:var(--ink)}\n\n  \/* dark spotlight sections *\/\n  #rs24 .dark{color:#fff;\n    background:\n      radial-gradient(760px 380px at 82% 0%,rgba(237,34,144,.22),transparent 60%),\n      linear-gradient(180deg,var(--dark2),var(--dark))}\n  #rs24 .dark h2,#rs24 .dark h3{color:#fff}\n  #rs24 .dark .lead{color:rgba(255,255,255,.8)}\n  #rs24 .dark .sec-eye{color:var(--pink2)}\n  #rs24 .dark .fbul li{color:rgba(255,255,255,.82); border-color:rgba(255,255,255,.1)}\n  #rs24 .dark .fbul li b{color:#fff}\n\n  \/* eDSP processor visual *\/\n  #rs24 .proc{background:linear-gradient(180deg,#1b1526,#0f0b17); border:1px solid rgba(255,255,255,.1); border-radius:18px; padding:18px; box-shadow:0 40px 90px -40px #000,inset 0 1px 0 rgba(255,255,255,.05)}\n  #rs24 .proc-top{display:flex; align-items:center; gap:11px; padding:2px 4px 15px; border-bottom:1px solid rgba(255,255,255,.09)}\n  #rs24 .proc-mark{width:32px; height:32px; border-radius:9px; background:linear-gradient(160deg,#3a2440,#1c1226); border:1px solid rgba(255,255,255,.12); display:grid; place-items:center; color:var(--pink2); font-weight:900}\n  #rs24 .proc-name{font-weight:900; font-size:14px; color:#fff}\n  #rs24 .proc-name small{display:block; font-family:var(--mono); font-size:8.5px; letter-spacing:.2em; color:rgba(255,255,255,.4); font-weight:700}\n  #rs24 .proc-on{margin-left:auto; font-family:var(--mono); font-size:10px; font-weight:700; letter-spacing:.1em; color:#57e0a8; background:rgba(70,211,154,.14); border:1px solid rgba(70,211,154,.3); padding:5px 11px; border-radius:6px}\n  #rs24 .proc-body{display:grid; grid-template-columns:auto 1fr auto; gap:22px; align-items:center; padding:22px 8px 16px}\n  @media(max-width:520px){#rs24 .proc-body{grid-template-columns:1fr; justify-items:center; gap:24px}}\n  #rs24 .vu{display:flex; gap:9px}\n  #rs24 .vu-col{width:17px; height:104px; background:#080a0e; border:1px solid rgba(255,255,255,.1); border-radius:4px; position:relative; overflow:hidden; display:flex; align-items:flex-end}\n  #rs24 .vu-col i{display:block; width:100%; background:linear-gradient(0deg,#3ddc98,#2ba07a 55%,#f5b73d 82%,#ff5d5d)}\n  #rs24 .vu-col::after{content:\"\"; position:absolute; inset:0; background:repeating-linear-gradient(0deg,transparent 0 5px,rgba(0,0,0,.55) 5px 6px)}\n  #rs24 .vu-lab{font-family:var(--mono); font-size:8px; letter-spacing:.1em; color:rgba(255,255,255,.4); text-align:center; margin-top:7px; font-weight:700}\n  #rs24 .knob{width:120px; height:120px; border-radius:50%; margin:0 auto; position:relative; display:grid; place-items:center; filter:drop-shadow(0 10px 24px rgba(237,34,144,.4));\n    background:conic-gradient(from -135deg,var(--pink) 0deg,var(--pink) 210deg,rgba(255,255,255,.12) 210deg,rgba(255,255,255,.12) 270deg,transparent 270deg)}\n  #rs24 .knob::before{content:\"\"; position:absolute; inset:13px; border-radius:50%; background:radial-gradient(circle at 40% 34%,#241a30,#100b18); border:1px solid rgba(255,255,255,.12)}\n  #rs24 .knob b{position:relative; font-size:32px; font-weight:900; color:#fff}\n  #rs24 .knob-lab{font-family:var(--mono); font-size:9px; letter-spacing:.12em; color:rgba(255,255,255,.45); text-align:center; margin-top:12px; font-weight:700}\n  #rs24 .bands{display:flex; gap:6px}\n  #rs24 .band-col{width:15px; height:104px; background:#080a0e; border:1px solid rgba(255,255,255,.1); border-radius:4px; position:relative; overflow:hidden; display:flex; flex-direction:column-reverse}\n  #rs24 .band-col i{display:block; width:100%; background:linear-gradient(0deg,#3ddc98,#f5b73d 70%,#ff5d5d)}\n  #rs24 .band-col::after{content:\"\"; position:absolute; inset:0; background:repeating-linear-gradient(0deg,transparent 0 4px,rgba(0,0,0,.55) 4px 5px)}\n  #rs24 .proc-foot{display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:13px 8px 2px; border-top:1px solid rgba(255,255,255,.09); font-family:var(--mono); font-size:11px; font-weight:700; color:rgba(255,255,255,.45)}\n  #rs24 .proc-foot b{color:var(--pink2)}\n\n  \/* handover *\/\n  #rs24 .handover{background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.12); border-radius:16px; padding:22px}\n  #rs24 .ho-row{display:flex; align-items:center; gap:11px; padding:15px 16px; border-radius:11px; font-size:14.5px; font-weight:700; color:#fff}\n  #rs24 .ho-engine{background:rgba(237,34,144,.14); border:1px solid rgba(237,34,144,.32)}\n  #rs24 .ho-desk{background:rgba(255,77,77,.12); border:1px solid rgba(255,77,77,.3)}\n  #rs24 .ho-dot{width:9px; height:9px; border-radius:50%; flex:none}\n  #rs24 .ho-engine .ho-dot{background:var(--pink2); box-shadow:0 0 9px rgba(237,34,144,.7)}\n  #rs24 .ho-desk .ho-dot{background:#ff6b6b; box-shadow:0 0 9px rgba(255,77,77,.6)}\n  #rs24 .ho-lab b{color:#fff}\n  #rs24 .ho-arrow{font-size:12.5px; color:rgba(255,255,255,.5); text-align:center; padding:9px 0; font-weight:700}\n\n  \/* works-with (no-lock-in stream compatibility) *\/\n  #rs24 .workswith{margin-top:24px; padding-top:22px; border-top:1px solid rgba(255,255,255,.12)}\n  #rs24 .ww-label{font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--pink2); margin-bottom:12px}\n  #rs24 .ww-chips{display:flex; flex-wrap:wrap; gap:9px}\n  #rs24 .ww-chips span{font-size:13px; font-weight:800; color:rgba(255,255,255,.88); background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.16); padding:7px 14px; border-radius:999px}\n  #rs24 .ww-note{font-size:13px; font-weight:600; color:rgba(255,255,255,.6); margin-top:12px}\n\n  \/* reconciliation table *\/\n  #rs24 .recon{width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line2); border-radius:14px; overflow:hidden; font-size:13.5px; box-shadow:var(--shadow)}\n  #rs24 .recon th{font-family:var(--mono); font-size:9.5px; letter-spacing:.06em; color:var(--ink-faint); text-align:left; padding:13px 15px; background:var(--bg-tint); font-weight:700}\n  #rs24 .recon td{padding:13px 15px; border-top:1px solid var(--line); font-weight:700; color:var(--ink-dim)}\n  #rs24 .recon td b{color:var(--ink)}\n  #rs24 .recon .mono{font-family:var(--mono); font-size:12px; color:var(--ink-faint)}\n  #rs24 .rchip{font-family:var(--mono); font-size:9.5px; font-weight:700; letter-spacing:.04em; padding:4px 10px; border-radius:999px}\n  #rs24 .rchip.ok{background:rgba(18,162,116,.14); color:#0e8a63}\n  #rs24 .rchip.part{background:rgba(229,138,12,.16); color:#b96e07}\n  #rs24 .rchip.miss{background:rgba(237,34,144,.12); color:var(--pink)}\n\n  \/* DJ roster *\/\n  #rs24 .dj-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:38px}\n  @media(max-width:900px){#rs24 .dj-grid{grid-template-columns:1fr}}\n  #rs24 .dj-card{background:#fff; border:1px solid var(--line2); border-radius:16px; padding:22px; display:flex; flex-direction:column; gap:15px; box-shadow:0 12px 30px -22px rgba(90,15,75,.3)}\n  #rs24 .dj-head{display:flex; align-items:center; gap:12px}\n  #rs24 .dj-av{width:48px; height:48px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center; font-weight:900; font-size:16px; color:#fff; box-shadow:0 6px 16px rgba(0,0,0,.2)}\n  #rs24 .dj-name{font-weight:900; font-size:16px}\n  #rs24 .dj-role{font-size:12.5px; color:var(--ink-faint); font-weight:800}\n  #rs24 .dj-says{font-size:14.5px; line-height:1.6; color:var(--ink); font-weight:600; font-style:italic; padding:15px 17px; background:var(--bg-tint); border-left:3px solid var(--pink); border-radius:0 10px 10px 0}\n  #rs24 .dj-brain{font-size:12px; color:var(--ink-faint); font-weight:700}\n  #rs24 .dj-brain span{color:var(--pink); text-transform:uppercase; letter-spacing:.07em; font-size:10.5px; margin-right:4px}\n\n  \/* bundle *\/\n  #rs24 .bundle-card{background:#fff; border:1px solid var(--line2); border-radius:16px; padding:14px; box-shadow:var(--shadow)}\n  #rs24 .bc-row{display:flex; align-items:center; gap:13px; padding:16px; border-radius:12px; font-weight:700; font-size:15px}\n  #rs24 .bc-row:nth-child(odd){background:var(--bg-tint)}\n  #rs24 .bc-ico{font-size:20px} #rs24 .bc-lab{flex:1}\n  #rs24 .bc-cost{font-family:var(--mono); font-size:13px; font-weight:700; color:var(--pink)}\n  #rs24 .bc-foot{font-size:13.5px; color:var(--ink-dim); font-weight:600; padding:16px; border-top:1px solid var(--line); margin-top:6px}\n  #rs24 .bc-foot b{color:var(--ink)}\n  #rs24 a.inline{color:var(--pink); font-weight:800}\n\n  \/* pricing *\/\n  #rs24 .config h2{max-width:none}\n  #rs24 .cfg-step{margin-top:38px}\n  #rs24 .cfg-step-head{font-size:15px; font-weight:800; color:var(--ink); display:flex; align-items:center; gap:11px; margin-bottom:18px}\n  #rs24 .cfg-num{width:26px; height:26px; border-radius:50%; background:var(--pink); color:#fff; font-weight:900; font-size:14px; display:inline-flex; align-items:center; justify-content:center; flex:none}\n  #rs24 .cfg-opt{font-size:12px; font-weight:700; color:var(--ink-faint); background:#fff; border:1px solid var(--line2); padding:3px 10px; border-radius:999px; text-transform:uppercase; letter-spacing:.04em}\n  #rs24 .plan-row{display:grid; grid-template-columns:repeat(4,1fr); gap:14px}\n  @media(max-width:1000px){#rs24 .plan-row{grid-template-columns:1fr 1fr; gap:14px}}\n  @media(max-width:560px){#rs24 .plan-row{grid-template-columns:1fr; max-width:440px; margin:0 auto}}\n  \/* streaming toggle *\/\n  #rs24 .stream-toggle{display:flex; align-items:flex-start; gap:16px; background:#fff; border:1.5px solid var(--line2); border-radius:16px; padding:22px 24px; cursor:pointer; transition:.15s; box-shadow:0 10px 30px -24px rgba(90,15,75,.3)}\n  #rs24 .stream-toggle.on{border-color:var(--pink); box-shadow:0 0 0 1px var(--pink),0 22px 50px -26px rgba(237,34,144,.45)}\n  #rs24 .stream-toggle input{position:absolute; opacity:0; pointer-events:none}\n  #rs24 .st-box{width:26px; height:26px; border-radius:8px; border:2px solid var(--line2); flex:none; margin-top:2px; display:grid; place-items:center; transition:.15s; color:#fff; font-weight:900; font-size:15px}\n  #rs24 .stream-toggle.on .st-box{background:var(--pink); border-color:var(--pink)}\n  #rs24 .stream-toggle.on .st-box::after{content:\"\u2713\"}\n  #rs24 .st-text{flex:1; font-size:13.5px; color:var(--ink-dim); font-weight:600; line-height:1.55}\n  #rs24 .st-text b{display:block; color:var(--ink); font-size:15.5px; margin-bottom:5px}\n  #rs24 .st-price{font-family:var(--mono); font-weight:800; color:var(--pink); font-size:18px; flex:none}\n  #rs24 #streamStep.st-disabled{opacity:.4; pointer-events:none}\n  #rs24 .stream-byo{font-size:13px; color:var(--ink-faint); font-weight:600; margin-top:13px; text-align:center}\n  #rs24 .stream-byo b{color:var(--ink-dim)}\n  #rs24 .plan{position:relative; text-align:left; background:#fff; border:1.5px solid var(--line2); border-radius:18px; padding:26px 24px; cursor:pointer; color:var(--ink); transition:.15s; display:flex; flex-direction:column; box-shadow:0 10px 30px -24px rgba(90,15,75,.3)}\n  #rs24 .plan:hover{border-color:rgba(237,34,144,.4); transform:translateY(-2px)}\n  #rs24 .plan.sel{border-color:var(--pink); box-shadow:0 0 0 1px var(--pink),0 22px 50px -26px rgba(237,34,144,.5)}\n  #rs24 .plan.sel::after{content:\"\u2713 selected\"; position:absolute; top:16px; right:16px; font-size:11px; font-weight:800; color:var(--pink)}\n  #rs24 .plan-flag{position:absolute; top:-12px; left:50%; transform:translateX(-50%); background:linear-gradient(180deg,var(--pink2),var(--pink)); color:#fff; font-size:11px; font-weight:800; letter-spacing:.04em; padding:5px 14px; border-radius:999px; white-space:nowrap; box-shadow:0 8px 18px rgba(237,34,144,.4)}\n  #rs24 .plan-name{font-size:13.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--pink)}\n  #rs24 .plan-amt{font-size:36px; font-weight:900; letter-spacing:-.03em; margin:6px 0 8px; color:var(--ink)}\n  #rs24 .plan-amt small{font-size:15px; font-weight:700; color:var(--ink-faint)}\n  #rs24 .plan-desc{font-size:13.5px; color:var(--ink-dim); font-weight:600; margin-bottom:16px; line-height:1.5}\n  #rs24 .plan ul{list-style:none; margin:0}\n  #rs24 .plan li{font-size:13.5px; font-weight:600; padding:8px 0 8px 24px; position:relative; border-top:1px solid var(--line); color:var(--ink-dim)}\n  #rs24 .plan li::before{content:\"\u2713\"; position:absolute; left:0; color:var(--green); font-weight:800}\n  #rs24 .plan li b{color:var(--pink)}\n  #rs24 .plan-trial{display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:900; letter-spacing:.02em; color:#fff; background:linear-gradient(180deg,var(--pink2),var(--pink)); padding:6px 13px; border-radius:999px; margin:0 0 14px; box-shadow:0 6px 16px rgba(237,34,144,.35)}\n\n  \/* trial \/ no-trial slider *\/\n  #rs24 .trial-switch{display:flex; gap:6px; max-width:640px; margin:22px auto 6px; background:#f1eef5; border:1px solid var(--line2); border-radius:16px; padding:6px}\n  #rs24 .trial-switch button{flex:1; border:0; background:transparent; cursor:pointer; border-radius:11px; padding:12px 14px; text-align:center; font:inherit; color:var(--ink-dim); transition:all .18s; line-height:1.25}\n  #rs24 .trial-switch button .ts-t{display:block; font-size:15px; font-weight:900; letter-spacing:-.01em; color:var(--ink)}\n  #rs24 .trial-switch button .ts-s{display:block; font-size:11.5px; font-weight:700; color:var(--ink-faint); margin-top:2px}\n  #rs24 .trial-switch button.on{background:linear-gradient(180deg,var(--pink2),var(--pink)); box-shadow:0 8px 20px rgba(237,34,144,.32)}\n  #rs24 .trial-switch button.on .ts-t, #rs24 .trial-switch button.on .ts-s{color:#fff}\n  #rs24 .switch-note{max-width:640px; margin:0 auto 4px; text-align:center; font-size:13px; font-weight:700; color:var(--ink-dim)}\n  #rs24 .switch-note b{color:var(--pink)}\n  #rs24 .plan.notrial .plan-trial{display:none}\n\n  #rs24 .slider-card{background:#fff; border:1px solid var(--line2); border-radius:18px; padding:30px 32px; box-shadow:var(--shadow)}\n  #rs24 #aiStep .slider-card{margin-top:0}\n  #rs24 .slider-top{display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap; margin-bottom:26px}\n  #rs24 .slider-readout{display:flex; align-items:flex-end; gap:14px}\n  #rs24 .sr-hours{font-size:46px; font-weight:900; letter-spacing:-.03em; line-height:.9; color:var(--ink)}\n  #rs24 .sr-hours small{display:block; font-size:12px; font-weight:800; color:var(--ink-faint); letter-spacing:.03em; margin-top:6px}\n  #rs24 .slider-price{text-align:right}\n  #rs24 .sp-amt{font-size:48px; font-weight:900; letter-spacing:-.03em; line-height:.9; color:var(--pink)}\n  #rs24 .sp-amt small{font-size:17px; font-weight:700; color:var(--ink-faint)}\n  #rs24 .sp-sub{font-size:13px; color:var(--ink-dim); font-weight:800; margin-top:7px}\n  #rs24 input[type=range]#hoursSlider{-webkit-appearance:none; appearance:none; width:100%; height:9px; border-radius:999px; outline:none; cursor:pointer;\n    background:linear-gradient(90deg,var(--pink) 0%,var(--pink) var(--fill,0%),var(--line2) var(--fill,0%))}\n  #rs24 input[type=range]#hoursSlider::-webkit-slider-thumb{-webkit-appearance:none; appearance:none; width:26px; height:26px; border-radius:50%; background:#fff; border:4px solid var(--pink); box-shadow:0 4px 14px rgba(237,34,144,.5); cursor:grab; transition:transform .1s}\n  #rs24 input[type=range]#hoursSlider::-webkit-slider-thumb:active{transform:scale(1.12)}\n  #rs24 input[type=range]#hoursSlider::-moz-range-thumb{width:26px; height:26px; border-radius:50%; background:#fff; border:4px solid var(--pink); box-shadow:0 4px 14px rgba(237,34,144,.5)}\n  #rs24 .slider-ticks{display:flex; justify-content:space-between; font-family:var(--mono); font-size:11px; color:var(--ink-faint); margin-top:11px; font-weight:700}\n  #rs24 .slider-foot{display:flex; gap:14px; flex-wrap:wrap; margin-top:26px; padding-top:22px; border-top:1px solid var(--line)}\n  #rs24 .sf-item{flex:1; min-width:150px; font-size:13.5px; color:var(--ink-dim); font-weight:700}\n  #rs24 .sf-item span{color:var(--pink); font-weight:900}\n  #rs24 #srNote{color:var(--ink-faint); font-weight:600; font-style:italic}\n  #rs24 .cfg-total{display:flex; align-items:center; justify-content:space-between; gap:22px; flex-wrap:wrap; background:linear-gradient(180deg,#2a0f2b,#5c1350); color:#fff; border-radius:18px; padding:24px 30px; margin-top:34px; box-shadow:0 24px 60px -30px rgba(237,34,144,.6)}\n  #rs24 .ct-line{display:flex; align-items:baseline; gap:18px; flex-wrap:wrap}\n  #rs24 .ct-bits{font-size:15px; font-weight:700; color:rgba(255,255,255,.75)}\n  #rs24 .ct-bits span{color:#fff; font-weight:800}\n  #rs24 .ct-amt{display:flex; flex-direction:column; align-items:flex-end; text-align:right}\n  #rs24 #ctToday{font-size:34px; font-weight:900; letter-spacing:-.03em; color:#fff; line-height:1}\n  #rs24 #ctToday small{font-size:14px; font-weight:700; color:rgba(255,255,255,.6)}\n  #rs24 #ctThen{font-size:13.5px; font-weight:700; color:rgba(255,255,255,.72); margin-top:6px}\n  #rs24 .ai-note{margin-top:18px; font-size:13px; font-weight:700; line-height:1.5; color:var(--ink-dim); background:var(--bg-tint); border:1px solid var(--line2); border-radius:12px; padding:14px 16px}\n  #rs24 .ai-note b{color:var(--ink)}\n  #rs24 .ai-note .amp{color:var(--pink)}\n  #rs24 .cfg-total .btn{margin-left:auto; background:#fff; color:var(--pink); box-shadow:0 8px 20px rgba(0,0,0,.25)}\n  #rs24 .cfg-total .btn:hover{filter:none; background:#fff}\n  #rs24 .aihours-fine{font-size:13.5px; color:var(--ink-faint); font-weight:600; margin-top:22px; max-width:60em}\n  #rs24 .slots-banner{max-width:640px; margin:16px auto 0; text-align:center; font-size:14px; font-weight:800; padding:11px 18px; border-radius:12px; color:var(--pink); background:linear-gradient(180deg,rgba(237,34,144,.14),rgba(237,34,144,.07)); border:1px solid rgba(237,34,144,.3)}\n  #rs24 .slots-banner.full{color:var(--ink-dim); background:var(--bg-tint); border-color:var(--line2)}\n  #rs24 .slots-banner a{color:var(--pink); text-decoration:underline}\n\n  \/* steps *\/\n  #rs24 .steps{display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-top:44px}\n  @media(max-width:880px){#rs24 .steps{grid-template-columns:1fr 1fr}}\n  @media(max-width:520px){#rs24 .steps{grid-template-columns:1fr}}\n  #rs24 .step{background:#fff; border:1px solid var(--line2); border-radius:16px; padding:26px}\n  #rs24 .step-n{font-family:var(--mono); font-size:13px; font-weight:800; color:var(--pink); margin-bottom:12px}\n  #rs24 .step h3{font-size:16px; margin-bottom:7px}\n  #rs24 .step p{font-size:13.5px; color:var(--ink-dim); font-weight:600}\n\n  \/* final + footer *\/\n  #rs24 .final{text-align:center; color:#fff}\n  #rs24 .final h2{margin:0 auto; max-width:15em}\n  #rs24 .final .lead{margin:18px auto 0; color:rgba(255,255,255,.82)}\n  #rs24 .final .btns{justify-content:center; margin-top:32px}\n  #rs24 .footer{padding:34px 0; background:var(--bg-tint); border-top:1px solid var(--line)}\n  #rs24 .footin{display:flex; justify-content:space-between; align-items:center; gap:18px; flex-wrap:wrap; font-size:13px; color:var(--ink-faint); font-weight:700}\n  #rs24 .footin a{color:var(--pink)}\n  #rs24 .footin .mono{font-family:var(--mono); font-size:11px; letter-spacing:.03em}\n\n  \/* trial *\/\n  #rs24 .trial-bul{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; max-width:840px; margin:36px auto 0; text-align:left}\n  @media(max-width:700px){#rs24 .trial-bul{grid-template-columns:1fr; text-align:center}}\n  #rs24 .trial-bul div{background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12); border-radius:14px; padding:18px 20px; font-size:14px; font-weight:700; color:rgba(255,255,255,.72)}\n  #rs24 .trial-bul b{color:#fff; font-size:15.5px}\n  #rs24 .trial-split{display:grid; grid-template-columns:1fr 1fr; gap:14px; max-width:860px; margin:28px auto 0; text-align:left}\n  @media(max-width:700px){#rs24 .trial-split{grid-template-columns:1fr}}\n  #rs24 .trial-split .tp{border-radius:16px; padding:20px 22px}\n  #rs24 .trial-split .tp-k{font-size:11px; font-weight:900; letter-spacing:.1em; text-transform:uppercase; margin-bottom:12px}\n  #rs24 .trial-split ul{list-style:none; margin:0; padding:0; font-size:13.5px; font-weight:600; line-height:1.5}\n  #rs24 .trial-split li{margin-bottom:8px; display:flex; gap:8px; align-items:flex-start}\n  #rs24 .trial-split li:last-child{margin-bottom:0}\n  #rs24 .trial-split .yes{color:#57e0a8; font-weight:900; flex:none}\n  #rs24 .trial-split .no{color:#ff8ac0; font-weight:900; flex:none}\n\n  @media(prefers-reduced-motion:reduce){#rs24 *{animation:none!important; transition:none!important}}\n\n  \/* ===== ARMOR: force the shapes theme CSS most often clobbers ===== *\/\n  #rs24 ul,#rs24 li{list-style:none!important}\n  #rs24 button{font-family:inherit!important; text-transform:none!important; letter-spacing:normal!important}\n  #rs24 .btn{border-radius:999px!important; width:auto!important; height:auto!important; min-height:0!important}\n  #rs24 .plan{border-radius:18px!important; width:auto!important; height:auto!important; min-height:0!important; aspect-ratio:auto!important; float:none!important; background:#fff!important}\n  #rs24 .card,#rs24 .step,#rs24 .dj-card,#rs24 .bundle-card,#rs24 .slider-card,#rs24 .recon,#rs24 .shot,#rs24 .handover,#rs24 .proc,#rs24 .cfg-total{min-height:0!important; aspect-ratio:auto!important}\n  #rs24 .shot img,#rs24 .hero-shot img{border-radius:0!important; box-shadow:none!important; width:100%!important}\n<\/style>\n<\/head>\n<body>\n<div id=\"rs24\">\n\n<!-- ===== hero (top bar integrated) ===== -->\n<header class=\"hero\" id=\"top\">\n  <div class=\"wrap hero-nav\">\n    <a class=\"rs-logo\" href=\"#top\">RadioStudio<b class=\"rs-24\">24<\/b><\/a>\n    <div class=\"hero-links\">\n      <a href=\"#hearit\" style=\"color:var(--pink,#ed2290);font-weight:800\">\u25cf Listen live<\/a>\n      <a href=\"#videos\">Watch it work<\/a>\n      <a href=\"#ai\">AI presenters<\/a>\n      <a href=\"#playout\">Playout<\/a>\n      <a href=\"#scheduling\">Scheduling<\/a>\n      <a href=\"#newshub\">News Hub<\/a>\n      <a href=\"#processor\">Audio processor<\/a>\n      <a href=\"#cloud\">Cloud engine<\/a>\n      <a href=\"#streaming\">Streaming<\/a>\n      <a href=\"#pricing\">Pricing<\/a>\n    <\/div>\n    <a href=\"#pricing\" class=\"btn btn-pri btn-sm\">Try for \u00a31<\/a>\n  <\/div>\n  <div class=\"wrap hero-body\">\n    <div class=\"hero-copy\">\n      <div class=\"trust\">\u2605\u2605\u2605\u2605\u2605 From the team behind RadioJingles24 \u2014 imaging for 600+ stations since 2014<\/div>\n      <h1>Professional radio playout \u2014 live or automated. With an AI presenter that <em>actually knows what's on.<\/em><\/h1>\n      <p class=\"sub\">Drive a live show from anywhere \u2014 sample-accurate voice tracking, run-to-time backtiming and a full on-air desk, everything the established systems do. Then the part they don't: upload your library and AI writes facts for every song, and AI presenters with a brain you set know what's playing, read live weather and travel, and drop it into the log themselves.<\/p>\n      <div class=\"btns\">\n        <a href=\"#pricing\" class=\"btn btn-pri\">Start your \u00a31 trial \u2192<\/a>\n        <a href=\"#videos\" class=\"btn btn-light\">&#9654; Watch it work<\/a>\n      <\/div>\n      <p style=\"margin-top:14px;font-size:13px;font-weight:700;color:rgba(255,255,255,.62)\">\u00a31 for 5 days on Broadcast \u00b7 then \u00a359\/mo \u00b7 cancel any time<\/p>\n    <\/div>\n    <div class=\"hero-video\">\n      <!-- The tour video: click to play (never autoplays). Takes a YouTube URL or a direct .mp4\/.webm\/.mov file. -->\n      <div class=\"vhero\" data-video=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/Radiostudio24-update-3.mp4\" data-title=\"The quick tour of RadioStudio24\"><\/div>\n      <div class=\"airdemo\" aria-hidden=\"true\">\n        <div class=\"airdemo-head\">\n          <span class=\"airdemo-live\"><i><\/i> ON AIR<\/span>\n          <span class=\"airdemo-np\" id=\"adNp\">Now playing \u2014 <b>Roll Away the Stone \u00b7 Mott the Hoople<\/b><\/span>\n        <\/div>\n        <div class=\"airdemo-say\" id=\"adSay\"><\/div>\n        <div class=\"airdemo-tags\" id=\"adTags\"><\/div>\n      <\/div>\n    <\/div>\n    <p class=\"hero-fine\">Live desk \u00b7 voice tracking \u00b7 run-to-time backtiming \u00b7 music scheduling \u00b7 traffic \u00b7 real travel &amp; weather \u00b7 broadcast processing \u00b7 cloud engine \u00b7 AI presenters<\/p>\n  <\/div>\n  <div class=\"wrap hero-shot\">\n    <div class=\"shot shot-glow\">\n      <div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>app.radiostudio24.com \u2014 On Air<\/span><\/div>\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/new-hero.png\" alt=\"The RadioStudio24 On Air desk: now-playing, the log, the cart wall and the deck bar\" width=\"1600\" height=\"740\">\n    <\/div>\n  <\/div>\n<\/header>\n\n<style>\n  \/* two-column hero: copy left, tour video right *\/\n  #rs24 .hero-body{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);gap:46px;align-items:center;text-align:left;padding:44px 0 6px}\n  #rs24 .hero-copy{min-width:0}\n  #rs24 .hero-body .trust{margin-bottom:20px}\n  #rs24 .hero-body h1{max-width:none;margin:0;font-size:clamp(30px,3.5vw,50px)}\n  #rs24 .hero-body .sub{margin:20px 0 26px;max-width:40em;font-size:17.5px}\n  #rs24 .hero-body .btns{justify-content:flex-start}\n  #rs24 .hero-video{min-width:0;display:flex;flex-direction:column;gap:16px}\n  #rs24 .hero-fine{grid-column:1 \/ -1;text-align:center;margin-top:12px}\n  \/* the tour video card *\/\n  #rs24 .vhero{position:relative;border:1px solid rgba(255,255,255,.14);border-radius:16px;overflow:hidden;background:linear-gradient(150deg,#2a1330,#0f1119 62%);aspect-ratio:16\/9;cursor:pointer;display:flex;align-items:flex-end;box-shadow:0 34px 80px -34px rgba(0,0,0,.7)}\n  #rs24 .vhero:before{content:\"\\25B6\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:56px;color:#fff;opacity:.92}\n  #rs24 .vhero .vlabel{position:relative;z-index:1;width:100%;padding:16px 18px;font-weight:800;font-size:16px;color:#fff;text-align:left;background:linear-gradient(180deg,transparent,rgba(0,0,0,.72))}\n  #rs24 .vhero iframe{position:absolute;inset:0;width:100%;height:100%;border:0}\n  #rs24 .vhero video{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:contain;background:#000}\n  #rs24 .vhero.playing{cursor:default}\n  #rs24 .vhero.playing:before{content:none}\n  #rs24 .vhero.noembed{cursor:default}\n  #rs24 .vhero.noembed:before{content:\"Tour coming soon\";font-size:19px;letter-spacing:.03em;font-weight:800;opacity:.6}\n  @media(max-width:900px){\n    #rs24 .hero-body{grid-template-columns:1fr;text-align:center;gap:30px;padding:40px 0 0}\n    #rs24 .hero-body h1{margin:0 auto;max-width:15em}\n    #rs24 .hero-body .sub{margin:20px auto 26px}\n    #rs24 .hero-body .btns{justify-content:center}\n    #rs24 .hero-video{max-width:560px;margin:6px auto 0;width:100%}\n  }\n<\/style>\n\n<!-- ===== heritage strip ===== -->\n<div class=\"heritage\">\n  <div class=\"wrap heritage-in\">\n    <span class=\"h-line\"><b>Real radio software from a real radio company.<\/b> Built by the imaging team at RadioJingles24.<\/span>\n    <span class=\"h-line\"><span class=\"h-stat\">600+<\/span> stations imaged<\/span>\n    <span class=\"h-line\"><span class=\"h-stat\">since 2014<\/span><\/span>\n    <span class=\"h-line\"><span class=\"h-stat\">No install<\/span> \u2014 runs in Chrome<\/span>\n  <\/div>\n<\/div>\n\n<!-- ===== AI \u2014 the point of difference (LEAD) ===== -->\n<section id=\"ai\" class=\"tint\" style=\"border-top:1px solid var(--line)\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\" style=\"text-align:center\">Why RadioStudio24 is different<\/div>\n    <h2 style=\"text-align:center;margin:0 auto 12px;max-width:19em\">Every playout system spins your songs. Ours <em style=\"font-style:normal;color:var(--pink)\">talks about them.<\/em><\/h2>\n    <p class=\"lead\" style=\"text-align:center;margin:0 auto\">All the tools the big systems have \u2014 scheduling, traffic, run-to-time, broadcast processing. Then the part they don't: upload your library and AI writes facts for every track in seconds, and AI presenters with a brain you set know what's playing, read today's real weather and live travel, and slot it into the log themselves. A station that actually presents itself.<\/p>\n\n    <div class=\"fblock\" style=\"margin-top:58px\">\n      <div class=\"ftext\">\n        <div class=\"sec-eye\">1 \u00b7 Seconds, not weeks<\/div>\n        <h3 style=\"font-size:24px;margin-bottom:8px\">Upload your whole library \u2014 get song facts on every track.<\/h3>\n        <p class=\"lead\" style=\"margin-top:10px\">Drop in your music and the AI reads the lot, writing tidy talking points for each song \u2014 the year, the chart run, who wrote it, the sound. The research job you'd never finish is done before your coffee's cold, and your presenters \u2014 AI or live \u2014 back-announce like they know every record.<\/p>\n        <ul class=\"fbul\">\n          <li>Real trivia for <b>every<\/b> song, generated in one pass<\/li>\n          <li>Editable \u2014 keep the good ones, bin the rest<\/li>\n          <li>Read on air by the AI presenter, or by you live<\/li>\n        <\/ul>\n      <\/div>\n      <div><div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>Link facts \u2014 auto-written per song<\/span><\/div>\n        <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/link-facts.png\" alt=\"AI-written talking points for a song: release year, chart position, writer and style\" width=\"785\" height=\"440\"><\/div><\/div>\n    <\/div>\n\n    <div class=\"fblock rev\" style=\"margin-top:58px\">\n      <div class=\"ftext\">\n        <div class=\"sec-eye\">2 \u00b7 A DJ with a brain you set<\/div>\n        <h3 style=\"font-size:24px;margin-bottom:8px\">Build presenters who know your station inside out.<\/h3>\n        <p class=\"lead\" style=\"margin-top:10px\">Give each AI presenter a name, a voice and a personality, and feed the station a shared brain \u2014 your area, your events, your slogan, your features. They know what just played and what's next, check the time and the ident, and sound like they've worked there for years. Never the same line twice.<\/p>\n        <ul class=\"fbul\">\n          <li>Set the character, the voice and the knowledge<\/li>\n          <li>Knows the now-playing, the next song and the hour<\/li>\n          <li>A roster \u2014 the right presenter voices each show automatically<\/li>\n        <\/ul>\n      <\/div>\n      <div><div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>AI presenter \u2014 voice, character &amp; the station brain<\/span><\/div>\n        <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/ai-presenter-setup.png\" alt=\"Setting up an AI presenter: name, voice, character, the station brain and coverage area\" width=\"1600\" height=\"600\"><\/div><\/div>\n    <\/div>\n\n    <div class=\"fblock\" style=\"margin-top:58px\">\n      <div class=\"ftext\">\n        <div class=\"sec-eye\">3 \u00b7 Knows the real world<\/div>\n        <h3 style=\"font-size:24px;margin-bottom:8px\">Live weather, traffic &amp; travel \u2014 read on air, into the log.<\/h3>\n        <p class=\"lead\" style=\"margin-top:10px\">Real Met Office weather and live travel feed the presenter's brain, so the reads are genuine, never invented \u2014 \"14 and climbing in Wakefield,\" \"slow on the M62 near junction 40.\" It writes it, voices it and slots it into the log at the right moment, seamlessly. Times and numbers are locked by a hard gate, so they're always right.<\/p>\n        <ul class=\"fbul\">\n          <li>Verified local weather &amp; live travel \u2014 never made up<\/li>\n          <li>Written, voiced and dropped into the log automatically<\/li>\n          <li>Your events and slogan woven in like a real presenter<\/li>\n        <\/ul>\n      <\/div>\n      <div>\n        <div class=\"handover\" style=\"background:#fff;border-color:var(--line2)\">\n          <div style=\"display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px\">\n            <span class=\"chip\"><span class=\"d\" style=\"background:var(--amber)\"><\/span>\u2600 Met Office weather<\/span>\n            <span class=\"chip\"><span class=\"d\" style=\"background:var(--cyan)\"><\/span>\ud83d\ude97 Live travel<\/span>\n            <span class=\"chip\"><span class=\"d\" style=\"background:var(--violet)\"><\/span>\ud83d\udcc5 Your events<\/span>\n            <span class=\"chip\"><span class=\"d\" style=\"background:var(--pink)\"><\/span>\ud83c\udff7 Station slogan<\/span>\n          <\/div>\n          <div class=\"ho-arrow\" style=\"color:var(--ink-faint)\">\u2193 woven into one genuine on-air read<\/div>\n          <div class=\"dj-says\" style=\"margin-top:6px\">\"Bright and 14 out there in Wakefield \u2014 and heads up, it's slow on the M62 westbound near junction 40, so give yourself a minute. More music now on the station that knows your city.\"<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"fblock rev\" style=\"margin-top:58px\">\n      <div class=\"ftext\">\n        <div class=\"sec-eye\">4 \u00b7 One click, or hands-off<\/div>\n        <h3 style=\"font-size:24px;margin-bottom:8px\">Voice a link, an hour, a day \u2014 or the whole schedule.<\/h3>\n        <p class=\"lead\" style=\"margin-top:10px\">Voice this link, this hour, everything today, this week, or every scheduled show at once. Each one lands as a draft to pre-listen and approve, with the cost shown before you spend anything \u2014 or let the cloud engine run it hands-off, hour after hour, while you sleep.<\/p>\n        <ul class=\"fbul\">\n          <li>This hour, today, this week \u2014 or all scheduled<\/li>\n          <li>Drafts to approve, cost shown up front<\/li>\n          <li>Or fully automatic 24\/7 with the cloud engine<\/li>\n        <\/ul>\n      <\/div>\n      <div><div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>Voice your links \u2014 hour, day, week or all<\/span><\/div>\n        <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/ai-voice-your-links.png\" alt=\"The voice-your-links panel: this hour, everything today, this week or all scheduled\" width=\"1200\" height=\"720\"><\/div><\/div>\n    <\/div>\n\n    <div style=\"text-align:center;margin-top:72px\">\n      <div class=\"sec-eye\" style=\"text-align:center\">Your on-air team<\/div>\n      <h3 style=\"font-size:24px\">Presenters with personality \u2014 around the clock.<\/h3>\n    <\/div>\n    <div class=\"dj-grid\">\n      <div class=\"dj-card\">\n        <div class=\"dj-head\"><div class=\"dj-av\" style=\"background:linear-gradient(135deg,#ff6fb3,#ed2290)\">SJ<\/div><div><div class=\"dj-name\">Sam Jordan<\/div><div class=\"dj-role\">Breakfast \u00b7 warm, chatty<\/div><\/div><\/div>\n        <div class=\"dj-says\">\"Lovely bright one out there in Wakefield \u2014 14 degrees and climbing. That was The 1975, and the school-run quiz is coming up at twenty past\u2026\"<\/div>\n        <div class=\"dj-brain\"><span>knows:<\/span> the weather \u00b7 the time \u00b7 the quiz feature \u00b7 your slogan<\/div>\n      <\/div>\n      <div class=\"dj-card\">\n        <div class=\"dj-head\"><div class=\"dj-av\" style=\"background:linear-gradient(135deg,#7aa6ff,#3a5bd6)\">RM<\/div><div><div class=\"dj-name\">Ria Mills<\/div><div class=\"dj-role\">Drive \u00b7 upbeat, quick<\/div><\/div><\/div>\n        <div class=\"dj-says\">\"Four o'clock, and there's slow traffic on the M62 westbound near junction 40 \u2014 give yourself a few extra minutes. Here's one to get you moving\u2026\"<\/div>\n        <div class=\"dj-brain\"><span>knows:<\/span> live travel \u00b7 your events \u00b7 what's next<\/div>\n      <\/div>\n      <div class=\"dj-card\">\n        <div class=\"dj-head\"><div class=\"dj-av\" style=\"background:linear-gradient(135deg,#46d39a,#1f9e74)\">DC<\/div><div><div class=\"dj-name\">Dave Cole<\/div><div class=\"dj-role\">Late night \u00b7 smooth, dry<\/div><\/div><\/div>\n        <div class=\"dj-says\">\"Just gone midnight, you're with me through till six. Nice and easy from here \u2014 that was Fleetwood Mac, on the station that never sleeps.\"<\/div>\n        <div class=\"dj-brain\"><span>knows:<\/span> the hour \u00b7 the overnight mood \u00b7 the back-announce<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== AI library \u2014 upload, code, rate, describe ===== -->\n<section id=\"library\" style=\"border-top:1px solid var(--line)\">\n  <div class=\"wrap fblock\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">Your music, understood<\/div>\n      <h2>Upload thousands of tracks. The AI does the rest.<\/h2>\n      <p class=\"lead\">Drag in your whole library at once. RadioStudio24's AI listens to what it knows and does the work a music scheduler would take weeks over \u2014 automatically, and you can change anything.<\/p>\n      <ul class=\"fbul\">\n        <li><b>Codes every song<\/b> \u2014 genre, era, tempo, energy \u2014 so your separation rules just work.<\/li>\n        <li><b>Writes real facts<\/b> for each track \u2014 chart runs, the year, the story \u2014 that the AI presenter actually says on air.<\/li>\n        <li><b>Rates how big a hit it was<\/b>, 0\u2013100 \u2014 from the number ones to the deep cuts \u2014 and ranks your whole library so you can play your best music.<\/li>\n        <li><b>You describe the sound in plain English<\/b> \u2014 \"20% 80s power hits, 30% 90s, a link every three songs\" \u2014 and it builds the rotation for you.<\/li>\n      <\/ul>\n      <a class=\"btn btn-pink\" href=\"#trial\">Point your library at the AI \u2192<\/a>\n    <\/div>\n    <div>\n      <div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>Library \u2014 AI rated &amp; coded, sorted by popularity<\/span><\/div>\n        <table class=\"lib-mock\">\n          <thead><tr><th>Title<\/th><th>Artist<\/th><th>Strength<\/th><th>Pop<\/th><th>Era<\/th><\/tr><\/thead>\n          <tbody>\n            <tr><td>Sweet Dreams<\/td><td>Eurythmics<\/td><td><span class=\"s-pill s-power\">Power<\/span><\/td><td class=\"pop hi\">92<\/td><td>80s<\/td><\/tr>\n            <tr><td>Rhythm of the Night<\/td><td>Corona<\/td><td><span class=\"s-pill s-sec\">Secondary<\/span><\/td><td class=\"pop\">82<\/td><td>90s<\/td><\/tr>\n            <tr><td>The Sign<\/td><td>Ace of Base<\/td><td><span class=\"s-pill s-power\">Power<\/span><\/td><td class=\"pop hi\">85<\/td><td>90s<\/td><\/tr>\n            <tr><td>Can't Take My Eyes Off You<\/td><td>Hermes House Band<\/td><td><span class=\"s-pill s-rec\">Recurrent<\/span><\/td><td class=\"pop lo\">45<\/td><td>90s<\/td><\/tr>\n            <tr><td>Der Kommissar<\/td><td>Falco<\/td><td><span class=\"s-pill s-sec\">Secondary<\/span><\/td><td class=\"pop\">78<\/td><td>80s<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<style>\n  .lib-mock{width:100%;border-collapse:collapse;font-size:13.5px;background:#0d1017}\n  .lib-mock th,.lib-mock td{text-align:left;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.06)}\n  .lib-mock th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.45)}\n  .lib-mock td{color:rgba(255,255,255,.9)}\n  .lib-mock td:nth-child(2){color:rgba(255,255,255,.55)}\n  .lib-mock .s-pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:800}\n  .lib-mock .s-power{background:rgba(237,34,144,.18);color:#ff7ac2}\n  .lib-mock .s-sec{background:rgba(70,150,255,.16);color:#7db4ff}\n  .lib-mock .s-rec{background:rgba(245,166,35,.16);color:#f5b73d}\n  .lib-mock .pop{font-weight:800;font-variant-numeric:tabular-nums}\n  .lib-mock .pop.hi{color:#5fd6a8}.lib-mock .pop.lo{color:rgba(255,255,255,.5)}\n<\/style>\n\n<!-- ===== hear it live \u2014 Radio Studio AI =====\n     Listen-live section (now visible). -->\n<section id=\"hearit\" class=\"dark rsai-sec\" style=\"border-top:1px solid rgba(255,255,255,.06)\">\n  <div class=\"rsai-glow\"><\/div>\n  <div class=\"wrap\" style=\"position:relative\">\n    <div style=\"text-align:center;margin-bottom:28px\">\n      <div class=\"rsai-badge\"><span class=\"rsai-eq\"><i><\/i><i><\/i><i><\/i><i><\/i><\/span> ON AIR \u00b7 RADIO STUDIO AI<\/div>\n      <h2 style=\"margin:16px auto 10px;max-width:15em;font-size:clamp(28px,4.4vw,48px);line-height:1.08\">A radio station run <em style=\"font-style:normal;color:var(--pink,#ed2290)\">entirely by AI<\/em> \u2014 playing right now.<\/h2>\n      <p class=\"lead\" style=\"max-width:46em;margin:0 auto\">A different AI presenter for every part of the day. National UK travel &amp; weather on the hour. Every jingle, sweeper and advert made in the RadioJingles24 AI Studio, streamed on our own managed hosting. <b style=\"color:#fff\">Nobody touches it \u2014 press play.<\/b><\/p>\n    <\/div>\n\n    <div class=\"rsai-card\">\n      <div class=\"rsai-lockup\">\n        <svg class=\"rsai-emblem\" viewBox=\"380 250 440 440\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Radio Studio AI\">\n          <defs><linearGradient id=\"rsaiMark\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n            <stop offset=\"0\" stop-color=\"#ff2d9b\"\/><stop offset=\".52\" stop-color=\"#ff6ec7\"\/><stop offset=\"1\" stop-color=\"#9b6bff\"\/>\n          <\/linearGradient><\/defs>\n          <g fill=\"none\" stroke=\"url(#rsaiMark)\" stroke-linecap=\"round\">\n            <path d=\"M 748.5 321.5 A 210 210 0 0 1 748.5 618.5\" stroke-width=\"26\"\/>\n            <path d=\"M 451.5 618.5 A 210 210 0 0 1 451.5 321.5\" stroke-width=\"26\"\/>\n            <path d=\"M 790.9 279.1 A 270 270 0 0 1 790.9 660.9\" stroke-width=\"20\" opacity=\".5\"\/>\n            <path d=\"M 409.1 660.9 A 270 270 0 0 1 409.1 279.1\" stroke-width=\"20\" opacity=\".5\"\/>\n          <\/g>\n          <g fill=\"url(#rsaiMark)\">\n            <rect x=\"495\" y=\"425\" width=\"26\" height=\"90\"  rx=\"13\"\/>\n            <rect x=\"541\" y=\"395\" width=\"26\" height=\"150\" rx=\"13\"\/>\n            <rect x=\"587\" y=\"365\" width=\"26\" height=\"210\" rx=\"13\"\/>\n            <rect x=\"633\" y=\"395\" width=\"26\" height=\"150\" rx=\"13\"\/>\n            <rect x=\"679\" y=\"425\" width=\"26\" height=\"90\"  rx=\"13\"\/>\n          <\/g>\n        <\/svg>\n        <span class=\"rsai-lockup-txt\">Radio Studio <em>AI<\/em><\/span>\n      <\/div>\n      <div class=\"rsai-player\">\n        <div class=\"rsp\">\n          <div class=\"rsp-top\">\n            <div class=\"rsp-art\" id=\"rspArt\"><span>&#9835;<\/span><\/div>\n            <div class=\"rsp-meta\">\n              <div class=\"rsp-station\"><span class=\"rsp-badge\" id=\"rspBadge\"><span class=\"rsai-live-dot\"><\/span> ON AIR<\/span> Radio Studio AI<\/div>\n              <div class=\"rsp-title\" id=\"rspTitle\">Radio Studio AI<\/div>\n              <div class=\"rsp-artist\" id=\"rspArtist\">the station that runs itself<\/div>\n            <\/div>\n            <button class=\"rsp-play\" id=\"rspPlay\" aria-label=\"Play \/ pause\"><span id=\"rspPlayIc\">&#9654;<\/span><\/button>\n          <\/div>\n          <div class=\"rsp-recent\">\n            <div class=\"rsp-rlabel\">Recently played<\/div>\n            <ul id=\"rspRecent\"><li class=\"rsp-dim\">tuning in&hellip;<\/li><\/ul>\n          <\/div>\n        <\/div>\n        <audio id=\"rspAudio\" preload=\"none\"><\/audio>\n      <\/div>\n\n      <div class=\"rsai-sched\">\n        <div class=\"rsai-sched-now\"><span class=\"rsai-now-dot\"><\/span> On air now \u2014 <b id=\"rsNowShow\">Radio Studio AI<\/b><span id=\"rsNowTime\" class=\"rsai-now-time\"><\/span><\/div>\n        <ul class=\"rsai-sched-list\" id=\"rsSched\">\n          <li data-from=\"0\"  data-to=\"6\"><b>Overnights<\/b> with David<span>12\u20136am<\/span><\/li>\n          <li data-from=\"6\"  data-to=\"12\"><b>Breakfast<\/b> with Mark<span>6am\u201312pm<\/span><\/li>\n          <li data-from=\"12\" data-to=\"18\"><b>Afternoons<\/b> with Lucy<span>12\u20136pm<\/span><\/li>\n          <li data-from=\"18\" data-to=\"24\"><b>Evenings<\/b> with Guy<span>6pm\u201312am<\/span><\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"rsai-proof\">\n        <div class=\"rsai-p\"><div class=\"rsai-pi\">\ud83c\udf99\ufe0f<\/div><b>AI presenters, all day<\/b><span>A different voice for breakfast, daytime &amp; drive \u2014 each back-announcing the songs with real facts.<\/span><\/div>\n        <div class=\"rsai-p\"><div class=\"rsai-pi\">\ud83d\udea6<\/div><b>Live UK travel &amp; weather<\/b><span>Pulled and read on air, on the hour \u2014 automatically.<\/span><\/div>\n        <div class=\"rsai-p\"><div class=\"rsai-pi\">\ud83d\udce1<\/div><b>Made &amp; streamed for you<\/b><span>Imaging from the RadioJingles24 AI Studio, on our own managed hosting.<\/span><\/div>\n      <\/div>\n\n      <a class=\"btn btn-pink\" href=\"#pricing\" style=\"font-size:16px\">Build a station like this \u2192<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<style>\n  .rsai-sec{position:relative;overflow:hidden}\n  \/* THE CENTERING FIX: the global `#rs24 *{margin:0}` reset (an ID selector) outranks a\n     plain `.rsai-card{margin:auto}` and zeroes its auto-centering, so the card sat hard-left\n     and dumped all slack on the right (worse the wider the window). Re-assert the centering\n     at #rs24-class weight so it wins. Same reason .rsai-pi needs it to re-centre the icons. *\/\n  #rs24 .rsai-card{margin-left:auto;margin-right:auto}\n  #rs24 .rsai-pi{margin:0 auto 12px}\n  .rsai-glow{position:absolute;inset:0;background:radial-gradient(58% 55% at 50% 0%,rgba(237,34,144,.17),transparent 70%);pointer-events:none}\n  .rsai-badge{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:800;letter-spacing:.14em;color:#ff9db0;background:rgba(255,93,93,.1);border:1px solid rgba(255,93,93,.28);border-radius:999px;padding:7px 15px}\n  .rsai-eq{display:inline-flex;align-items:flex-end;gap:2px;height:13px}\n  .rsai-eq i{width:3px;background:#ff5d5d;border-radius:2px;animation:rsaieq 1s ease-in-out infinite}\n  .rsai-eq i:nth-child(1){height:5px}.rsai-eq i:nth-child(2){height:11px;animation-delay:.2s}.rsai-eq i:nth-child(3){height:7px;animation-delay:.4s}.rsai-eq i:nth-child(4){height:13px;animation-delay:.15s}\n  @keyframes rsaieq{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}\n  .rsai-card{display:flex;flex-direction:column;align-items:center;gap:32px;width:100%;max-width:1060px;margin-left:auto;margin-right:auto;position:relative;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:44px 52px 48px}\n  .rsai-card:before{content:\"\";position:absolute;inset:-1px;border-radius:24px;padding:1px;background:linear-gradient(135deg,rgba(237,34,144,.55),transparent 42%,transparent 58%,rgba(63,107,255,.45));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}\n  .rsai-lockup{display:flex;align-items:center;gap:13px;justify-content:center}\n  .rsai-emblem{width:52px;height:52px;flex:0 0 auto;filter:drop-shadow(0 4px 14px rgba(255,45,155,.35))}\n  .rsai-lockup-txt{font-weight:900;font-size:21px;letter-spacing:.01em;color:#fff}\n  .rsai-lockup-txt em{font-style:normal;background:linear-gradient(135deg,#ff4da8,#a678ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}\n  .rsai-player{width:100%;max-width:680px;display:flex;flex-direction:column;gap:12px}\n  .rsai-wordmark{display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;color:#fff}\n  .rsai-live-dot{width:9px;height:9px;border-radius:50%;background:#ff5d5d;box-shadow:0 0 0 0 rgba(255,93,93,.7);animation:rsaipulse 1.6s infinite}\n  @keyframes rsaipulse{0%{box-shadow:0 0 0 0 rgba(255,93,93,.6)}70%{box-shadow:0 0 0 10px rgba(255,93,93,0)}100%{box-shadow:0 0 0 0 rgba(255,93,93,0)}}\n  \/* custom player *\/\n  .rsp{background:#0b0e14;border:1px solid rgba(255,255,255,.1);border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.42);overflow:hidden}\n  .rsp-top{display:flex;align-items:center;gap:14px;padding:16px}\n  .rsp-art{flex:0 0 78px;width:78px;height:78px;border-radius:12px;background:linear-gradient(135deg,#3a1030,#1a1030);display:flex;align-items:center;justify-content:center;font-size:30px;color:rgba(255,255,255,.5);background-size:cover;background-position:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}\n  .rsp-art.has span{display:none}\n  .rsp-meta{flex:1;min-width:0;text-align:left}\n  .rsp-station{font-size:11px;font-weight:800;letter-spacing:.03em;color:rgba(255,255,255,.55);display:flex;align-items:center;gap:7px;margin-bottom:3px}\n  .rsp-badge{display:inline-flex;align-items:center;gap:5px;color:#ff9db0;font-size:10px;letter-spacing:.08em}\n  .rsp-title{font-size:17px;font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n  .rsp-artist{font-size:13.5px;color:rgba(255,255,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n  .rsp-play{flex:0 0 auto;width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;color:#fff;font-size:18px;background:linear-gradient(180deg,var(--pink2,#ff5da2),var(--pink,#ed2290));box-shadow:0 6px 22px rgba(237,34,144,.4);transition:transform .12s}\n  .rsp-play:hover{transform:scale(1.06)}\n  .rsp-recent{border-top:1px solid rgba(255,255,255,.07);padding:12px 16px 14px}\n  .rsp-rlabel{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.4);font-weight:800;margin-bottom:6px}\n  .rsp-recent ul{list-style:none;margin:0;padding:0}\n  .rsp-recent li{font-size:12.5px;color:rgba(255,255,255,.62);padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n  .rsp-recent li b{color:rgba(255,255,255,.82);font-weight:700}\n  .rsp-dim{opacity:.5}\n  \/* on-air-now + schedule *\/\n  .rsai-sched{width:100%;max-width:680px;display:flex;flex-direction:column;gap:12px}\n  .rsai-sched-now{font-size:14px;font-weight:700;color:rgba(255,255,255,.72);display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n  .rsai-sched-now b{color:#fff;font-weight:900}\n  .rsai-now-time{color:#ff9db0;font-weight:800}\n  .rsai-now-dot{width:9px;height:9px;border-radius:50%;background:#ff5d5d;box-shadow:0 0 0 0 rgba(255,93,93,.7);animation:rsaipulse 1.6s infinite;flex:0 0 auto}\n  .rsai-sched-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}\n  .rsai-sched-list li{display:flex;align-items:center;gap:8px;font-size:13px;color:rgba(255,255,255,.6);padding:9px 13px;border:1px solid rgba(255,255,255,.09);border-radius:11px;background:rgba(255,255,255,.02)}\n  .rsai-sched-list li b{color:rgba(255,255,255,.86);font-weight:800}\n  .rsai-sched-list li span{margin-left:auto;font-size:11.5px;color:rgba(255,255,255,.4);white-space:nowrap}\n  .rsai-sched-list li.on{border-color:rgba(237,34,144,.55);background:linear-gradient(180deg,rgba(237,34,144,.16),rgba(237,34,144,.05));color:#fff}\n  .rsai-sched-list li.on b{color:#fff}\n  .rsai-sched-list li.on span{color:#ff9db0}\n  @media(max-width:560px){.rsai-sched-list{grid-template-columns:1fr}}\n  \/* proof row (below the player) *\/\n  .rsai-proof{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;width:100%;padding-top:6px;border-top:1px solid rgba(255,255,255,.08)}\n  .rsai-p{text-align:center}\n  .rsai-pi{width:54px;height:54px;margin:0 auto 12px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:24px;background:radial-gradient(circle at 50% 30%,rgba(237,34,144,.28),rgba(237,34,144,.08));border:1px solid rgba(237,34,144,.28);box-shadow:0 6px 18px rgba(237,34,144,.18)}\n  .rsai-p b{display:block;color:#fff;font-size:15.5px;font-weight:800;margin-bottom:5px}\n  .rsai-p span{display:block;font-size:13px;color:rgba(255,255,255,.6);line-height:1.55}\n  @media(max-width:640px){.rsai-proof{grid-template-columns:1fr;gap:18px}}\n<\/style>\n<script>\n(function(){\n  var API=\"https:\/\/app.radiostudio24.com\/api\/v1\/public\/1\/nowplaying\";\n  \/\/ AUDIO SOURCE: the revma (DAX) stream, so online listeners get the ad-inserted feed.\n  \/\/ Metadata (now playing \/ recently played) still comes from the API below.\n  var STREAM=\"https:\/\/n18-eu.rcs.revma.com\/95bhvmchc52vv?rj-ttl=5&rj-tok=AAABn5QvGVEAbvQ3oibA4aIJ3w\";\n  var NAME=\"Radio Studio AI\";   \/\/ DISPLAY name; the station's real name is phonetic so the AI DJs say it right\n  var au=document.getElementById('rspAudio'), pl=document.getElementById('rspPlay'), plic=document.getElementById('rspPlayIc');\n  if(!pl) return;\n  var listen=\"\", playing=false;\n  function esc(s){return String(s==null?\"\":s).replace(\/[&<>]\/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;'}[c];});}\n  function set(id,v){var e=document.getElementById(id); if(e) e.textContent=v;}\n  \/\/ The presenter schedule (from\/to in UK 24h) \u2014 highlight the current show + fill the \"on air now\" line.\n  var SHOWS=[[0,6,\"Overnights with David\",\"12\u20136am\"],[6,12,\"Breakfast with Mark\",\"6am\u201312pm\"],\n             [12,18,\"Afternoons with Lucy\",\"12\u20136pm\"],[18,24,\"Evenings with Guy\",\"6pm\u201312am\"]];\n  function ukHour(){\n    try{ return parseInt(new Intl.DateTimeFormat(\"en-GB\",{timeZone:\"Europe\/London\",hour:\"2-digit\",hour12:false}).format(new Date()),10)%24; }\n    catch(e){ return new Date().getHours(); }\n  }\n  function setNowOnAir(){\n    var h=ukHour(), cur=null, i;\n    for(i=0;i<SHOWS.length;i++){ if(h>=SHOWS[i][0] && h<SHOWS[i][1]){ cur=SHOWS[i]; break; } }\n    if(!cur) cur=SHOWS[0];\n    set(\"rsNowShow\", cur[2]); var t=document.getElementById(\"rsNowTime\"); if(t) t.textContent=\" \u00b7 \"+cur[3];\n    var lis=document.querySelectorAll(\"#rsSched li\");\n    for(i=0;i<lis.length;i++){ var f=+lis[i].getAttribute(\"data-from\"), to=+lis[i].getAttribute(\"data-to\");\n      if(h>=f && h<to){ lis[i].className=\"on\"; } else { lis[i].className=\"\"; } }\n  }\n  function poll(){\n    fetch(API,{cache:\"no-store\"}).then(function(r){return r.json();}).then(function(d){\n      listen=d.listen_url||listen;\n      var badge=document.getElementById('rspBadge'); if(badge) badge.style.display=d.on_air?\"\":\"none\";\n      var art=document.getElementById('rspArt');\n      var now=d.now;\n      if(now && now.title){\n        set('rspTitle', now.title); set('rspArtist', now.artist||NAME);\n        if(art){ if(now.art){ art.style.backgroundImage=\"url('\"+now.art+\"')\"; art.classList.add('has'); } else { art.style.backgroundImage=\"\"; art.classList.remove('has'); } }\n      } else {\n        set('rspTitle', NAME); set('rspArtist', d.on_air?\"on air now\":\"\");\n        if(art){ art.style.backgroundImage=\"\"; art.classList.remove('has'); }\n      }\n      var ul=document.getElementById('rspRecent'), rec=(d.recent||[]).slice(0,4);\n      if(ul) ul.innerHTML = rec.map(function(x){return \"<li><b>\"+esc(x.title)+\"<\/b>\"+(x.artist?\" \u2014 \"+esc(x.artist):\"\")+\"<\/li>\";}).join(\"\") || \"<li class='rsp-dim'>\u2014<\/li>\";\n    }).catch(function(){});\n  }\n  pl.addEventListener('click', function(){\n    if(playing){ au.pause(); return; }\n    au.src=STREAM+\"&_=\"+Date.now();     \/\/ revma DAX stream (cache-buster keeps it live)\n    au.play().catch(function(){ set('rspArtist','couldn\u2019t connect \u2014 try again'); });\n  });\n  au.addEventListener('playing', function(){ playing=true; plic.innerHTML='&#10074;&#10074;'; });\n  au.addEventListener('pause', function(){ playing=false; plic.innerHTML='&#9654;'; });\n  setNowOnAir(); setInterval(setNowOnAir, 60000);\n  poll(); setInterval(poll, 15000);\n})();\n<\/script>\n\n<!-- ===== see it work \u2014 how-to videos ===== -->\n<section id=\"videos\" style=\"border-top:1px solid var(--line)\">\n  <div class=\"wrap\" style=\"text-align:center\">\n    <div class=\"sec-eye\" style=\"text-align:center\">See exactly how it works<\/div>\n    <h2 style=\"margin:0 auto 10px\">Watch it work \u2014 every tab, explained.<\/h2>\n    <p class=\"lead\" style=\"max-width:38em;margin:0 auto 26px\">Five short walkthroughs \u2014 click any card to play.<\/p>\n    <div class=\"vgrid\" style=\"grid-template-columns:repeat(3,1fr);gap:18px;max-width:1060px;margin:0 auto\">\n      <div class=\"vcard\" data-video=\"https:\/\/www.youtube.com\/embed\/AQyiDcbctac\" data-n=\"1\" data-icon=\"&#127925;\" data-title=\"The Library\" data-sub=\"Upload, tag &amp; AI-code your music\"><\/div>\n      <div class=\"vcard\" data-video=\"https:\/\/www.youtube.com\/embed\/FBacZoH5-Ss\" data-n=\"2\" data-icon=\"&#128197;\" data-title=\"The Planner\" data-sub=\"Build your clocks &amp; the week\"><\/div>\n      <div class=\"vcard\" data-video=\"https:\/\/www.youtube.com\/embed\/Jh6KohvhhSI\" data-n=\"3\" data-icon=\"&#127899;\" data-title=\"The Playout desk\" data-sub=\"Go live on the on-air desk\"><\/div>\n      <div class=\"vcard\" data-video=\"https:\/\/www.youtube.com\/embed\/jppZbOHsoJI\" data-n=\"4\" data-icon=\"&#128226;\" data-title=\"Scheduling adverts\" data-sub=\"Traffic, breaks &amp; sponsors\"><\/div>\n      <div class=\"vcard\" data-video=\"https:\/\/www.youtube.com\/embed\/4FkZ7hYczTs\" data-n=\"5\" data-icon=\"&#9881;&#65039;\" data-title=\"The Settings\" data-sub=\"Streaming, AI presenters &amp; more\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<style>\n  #videos .vgrid{display:grid}\n  #videos .vcard{position:relative;border:1px solid rgba(255,255,255,.09);border-radius:16px;overflow:hidden;background:linear-gradient(150deg,#2a1330,#0f1119 62%);aspect-ratio:16\/9;cursor:pointer;transition:transform .15s,box-shadow .15s}\n  #videos .vcard:hover{transform:translateY(-3px);box-shadow:0 20px 44px -18px rgba(237,34,144,.5)}\n  #videos .vcard .vnum{position:absolute;top:2px;left:16px;font-size:62px;font-weight:900;color:rgba(255,255,255,.09);line-height:1}\n  #videos .vcard .vic{position:absolute;top:30px;left:0;right:0;text-align:center;font-size:46px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.45))}\n  #videos .vcard .vgo{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;gap:5px;background:linear-gradient(180deg,var(--pink2,#ff5da2),var(--pink,#ed2290));color:#fff;font-size:11.5px;font-weight:800;padding:5px 11px;border-radius:999px;box-shadow:0 6px 16px rgba(237,34,144,.4)}\n  #videos .vcard .vfoot{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;text-align:left;background:linear-gradient(180deg,transparent,rgba(0,0,0,.6) 60%)}\n  #videos .vcard .vt{font-weight:800;font-size:16px;color:#fff}\n  #videos .vcard .vs{font-size:12.5px;color:rgba(255,255,255,.74);margin-top:2px}\n  #videos .vcard iframe{position:absolute;inset:0;width:100%;height:100%;border:0}\n  @media(max-width:820px){#videos .vgrid{grid-template-columns:1fr 1fr!important}}\n  @media(max-width:520px){#videos .vgrid{grid-template-columns:1fr!important}}\n<\/style>\n<script>\n(function(){\n  \/\/ Build a robust YouTube embed: privacy-mode host + YouTube's full permissions\n  \/\/ list (encrypted-media is REQUIRED for playback \u2014 leaving it out causes the\n  \/\/ \"player configuration error 153\"). Accepts a watch\/embed\/youtu.be URL or a bare id.\n  function ytFrame(url){\n    var m = (url||'').match(\/(?:embed\\\/|v=|youtu\\.be\\\/)([A-Za-z0-9_-]{6,})\/);\n    var id = m ? m[1] : url;\n    var src = 'https:\/\/www.youtube-nocookie.com\/embed\/'+id+'?autoplay=1&rel=0&playsinline=1&modestbranding=1';\n    return '<iframe src=\"'+src+'\" title=\"RadioStudio24 video\" frameborder=\"0\" '\n      + 'allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" '\n      + 'allowfullscreen><\/iframe>';\n  }\n  document.querySelectorAll('#videos .vcard').forEach(function(c){\n    var url=c.getAttribute('data-video');\n    c.innerHTML = '<span class=\"vnum\">'+(c.getAttribute('data-n')||'')+'<\/span>'\n      + '<span class=\"vic\">'+(c.getAttribute('data-icon')||'')+'<\/span>'\n      + '<span class=\"vgo\">&#9654; Watch<\/span>'\n      + '<div class=\"vfoot\"><div class=\"vt\">'+(c.getAttribute('data-title')||'')+'<\/div><div class=\"vs\">'+(c.getAttribute('data-sub')||'')+'<\/div><\/div>';\n    if(!url) return;\n    c.addEventListener('click', function(){ c.innerHTML = ytFrame(url); });\n  });\n  \/\/ hero tour video (top of the page): click to play; shows \"Coming soon\" until a URL is set\n  document.querySelectorAll('.hero-video .vhero').forEach(function(c){\n    var url=c.getAttribute('data-video');\n    c.innerHTML = '<div class=\"vlabel\">'+(c.getAttribute('data-title')||'')+'<\/div>';\n    if(!url){ c.classList.add('noembed'); return; }\n    c.addEventListener('click', function(){\n      c.classList.add('playing');   \/\/ hide the \u25b6 overlay once it's playing\n      \/\/ a direct video file plays inline; anything else is treated as a YouTube embed\n      c.innerHTML = \/\\.(mp4|webm|mov)(\\?|#|$)\/i.test(url)\n        ? '<video src=\"'+url+'\" controls autoplay playsinline preload=\"metadata\"><\/video>'\n        : ytFrame(url);\n    });\n  });\n})();\n<\/script>\n\n<!-- ===== trial call-out ===== -->\n<section id=\"demos\" class=\"tint\" style=\"border-top:1px solid var(--line);display:none\">\n  <div class=\"wrap\" style=\"text-align:center\">\n    <div class=\"sec-eye\" style=\"text-align:center\">Hear it<\/div>\n    <h2 style=\"margin:0 auto 12px\">Real demos \u2014 actual AI links &amp; travel.<\/h2>\n    <p class=\"lead\" style=\"margin:0 auto 24px\">Straight from the system \u2014 not a script read by an actor.<\/p>\n    <div id=\"demoDJ\" style=\"display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:780px;margin:0 auto 14px\"><\/div>\n    <div id=\"demoTravel\" style=\"display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:780px;margin:0 auto\"><\/div>\n  <\/div>\n<\/section>\n<script>\n(function(){\n  \/\/ \u25b6\u25b6 FILL THESE with the demo audio URLs (host the MP3s on the site). The\n  \/\/    section shows itself automatically as soon as any URL is set.\n  var DEMOS = {\n    dj: [\n      { label:\"Breakfast link\", url:\"\" },\n      { label:\"Song intro\", url:\"\" },\n      { label:\"Back-announce\", url:\"\" },\n      { label:\"Weather read\", url:\"\" }\n    ],\n    travel: [\n      { label:\"Travel \u2014 motorway\", url:\"\" },\n      { label:\"Travel \u2014 local roads\", url:\"\" }\n    ]\n  };\n  var audio = new Audio(), cur = null;\n  audio.addEventListener(\"ended\", function(){ if(cur){ reset(cur); cur=null; } });\n  function reset(b){ b.innerHTML = \"\u25b6  \" + b.dataset.label; b.style.background=\"var(--panel)\"; b.style.color=\"var(--ink)\"; b.style.borderColor=\"var(--line2)\"; }\n  function mk(d){\n    var b=document.createElement(\"button\"); b.type=\"button\"; b.dataset.label=d.label;\n    b.style.cssText=\"cursor:pointer;border:1px solid var(--line2);background:var(--panel);color:var(--ink);padding:12px 20px;border-radius:999px;font-size:15px;font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.06)\";\n    b.innerHTML=\"\u25b6  \"+d.label;\n    b.onclick=function(){\n      if(cur===b){ audio.pause(); reset(b); cur=null; return; }\n      if(cur) reset(cur);\n      audio.src=d.url; audio.play().catch(function(){});\n      b.innerHTML=\"\u2759\u2759  \"+d.label; b.style.background=\"var(--pink)\"; b.style.color=\"#fff\"; b.style.borderColor=\"var(--pink)\";\n      cur=b;\n    };\n    return b;\n  }\n  var dj=DEMOS.dj.filter(function(d){return d.url;}), tv=DEMOS.travel.filter(function(d){return d.url;});\n  if(!dj.length && !tv.length) return;   \/\/ nothing wired yet \u2192 stay hidden\n  dj.forEach(function(d){ document.getElementById(\"demoDJ\").appendChild(mk(d)); });\n  tv.forEach(function(d){ document.getElementById(\"demoTravel\").appendChild(mk(d)); });\n  document.getElementById(\"demos\").style.display=\"\";\n})();\n<\/script>\n<section id=\"trial\" class=\"dark\" style=\"text-align:center;border-top:1px solid var(--line)\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\" style=\"text-align:center\">The \u00a31 trial<\/div>\n    <h2 style=\"margin:0 auto 12px\">Try Broadcast for 5 days \u2014 just \u00a31.<\/h2>\n    <p class=\"lead\" style=\"margin:0 auto\">Five days is enough to put the whole system through its paces \u2014 the desk, the scheduler, voice tracking, traffic and the eDSP processor, running your station from your browser. Then it's \u00a359\/mo. <b>Cancel any time in your members area before your first bill<\/b> and \u00a31 is all you'll ever pay.<\/p>\n    <div class=\"btns\" style=\"justify-content:center;margin-top:28px\">\n      <a href=\"#pricing\" class=\"btn btn-pri\">Start your \u00a31 trial \u2192<\/a>\n    <\/div>\n    <div class=\"trial-bul\">\n      <div><b>5 days, the full desk<\/b><br>Library, clocks, traffic, voice tracking &amp; the eDSP processor \u2014 test everything<\/div>\n      <div><b>~25 AI links to try<\/b><br>A taster of your AI presenter during the trial \u2014 voice your station a few times<\/div>\n      <div><b>Cancel any time<\/b><br>In your members area before the first bill \u2014 \u00a31 is all you pay<\/div>\n    <\/div>\n    <div class=\"trial-split\">\n      <div class=\"tp\" style=\"background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14)\">\n        <div class=\"tp-k\" style=\"color:#ffd1e6\">During your 5-day trial<\/div>\n        <ul style=\"color:rgba(255,255,255,.82)\">\n          <li><span class=\"yes\">\u2713<\/span> The full desk \u2014 scheduler, traffic, voice tracking &amp; eDSP<\/li>\n          <li><span class=\"yes\">\u2713<\/span> A taster of <b style=\"color:#fff\">~25 AI presenter links<\/b> to try<\/li>\n          <li><span class=\"no\">\u2717<\/span> Not yet: cloud engine, voice clones or full AI allowance<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"tp\" style=\"background:linear-gradient(180deg,rgba(237,34,144,.15),rgba(237,34,144,.06));border:1px solid rgba(237,34,144,.42)\">\n        <div class=\"tp-k\" style=\"color:#ff8ac0\">Unlocks on day 5, when your first payment is taken<\/div>\n        <ul style=\"color:#fff\">\n          <li><span class=\"yes\">\u2713<\/span> The always-on <b>cloud engine \u2014 24\/7<\/b><\/li>\n          <li><span class=\"yes\">\u2713<\/span> Your <b>full monthly AI allowance<\/b> (~300 \/ 900 \/ 1,800 links)<\/li>\n          <li><span class=\"yes\">\u2713<\/span> <b>Custom voice clones<\/b> \u2014 all switch on automatically<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <p style=\"max-width:720px;margin:16px auto 0;font-size:13px;font-weight:600;color:rgba(255,255,255,.6)\">Everything unlocks <b style=\"color:#fff\">automatically<\/b> when your first payment is taken on day 5 \u2014 nothing to do. No surprises, and you can cancel any time in your members area before then.<\/p>\n  <\/div>\n<\/section>\n\n<!-- ===== toolkit divider ===== -->\n<section style=\"padding-bottom:26px\">\n  <div class=\"wrap\" style=\"text-align:center\">\n    <div class=\"sec-eye\" style=\"text-align:center\">The complete toolkit<\/div>\n    <h2 style=\"margin:0 auto 10px\">And underneath the AI, a serious playout system.<\/h2>\n    <p class=\"lead\" style=\"margin:0 auto\">Everything the established systems do \u2014 done properly. This is the rock-solid foundation the AI sits on.<\/p>\n  <\/div>\n<\/section>\n\n<!-- ===== playout ===== -->\n<section id=\"playout\" style=\"padding-top:24px\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\">Live &amp; automated playout<\/div>\n    <h2>A desk that runs a real station \u2014 driven live or left to itself.<\/h2>\n    <p class=\"lead\">Every transition is scheduled on the audio clock, sample-accurate even with the tab in the background. Drive it live from the studio or a laptop, or hand it to full automation \u2014 either way the rules a programme controller would insist on are built into the engine.<\/p>\n    <div class=\"card-grid g3\">\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(237,34,144,.1);color:var(--pink)\">\ud83c\udf9a\ufe0f<\/span><h3>Sealed imaging, flexible music<\/h3><p>Jingles, sweepers, IDs, adverts and news play <b>full level to their true end<\/b>; only songs are ever faded, shaved or moved to make the time. Your imaging stays exactly as produced.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(18,174,191,.1);color:var(--cyan)\">\ud83c\udfaf<\/span><h3>Run-to-time that lands<\/h3><p>Continuous backtiming \u2014 small equal fades, \u00b13% varispeed, a filler when short \u2014 lands hard-timed news and the top of the hour <b>on the second<\/b>. The over\/under badge reads 0:00 because it is.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(18,162,116,.1);color:var(--green)\">\ud83c\udf99\ufe0f<\/span><h3>Intro rides, automatically<\/h3><p>Set an intro marker and the next item lands so the song's vocal arrives exactly as the jingle or link ends \u2014 the talk-up that always hits the post, every junction, hands-free.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(111,82,255,.1);color:var(--violet)\">\ud83d\udc65<\/span><h3>Multi-presenter, one air<\/h3><p>Open the desk from the studio, home or a hotel. One screen holds the air; take it and release it at the junction and listeners never hear the join.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(229,138,12,.1);color:var(--amber)\">\ud83d\udedf<\/span><h3>Broadcast-grade reliability<\/h3><p>Failed items are retried, logged and stepped over; an emergency fallback is always armed. Hidden tab, dropped item, power cut \u2014 it keeps going and heals itself.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(63,107,255,.1);color:var(--blue)\">\ud83d\udda5\ufe0f<\/span><h3>Nothing to install<\/h3><p>Runs in Chrome on any machine \u2014 Windows, Mac, a studio PC or a laptop on the sofa. No servers to run, no software to update, no license to move.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== voice tracking ===== -->\n<section id=\"voicetrack\" class=\"tint\">\n  <div class=\"wrap fblock\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">Remote voice tracking<\/div>\n      <h2>Track a whole show from anywhere. It airs like you were there.<\/h2>\n      <p class=\"lead\">Open the editor at any junction and lay your voice over the real song tails \u2014 the outgoing track ducking under you, the next one teed up exactly where it starts on air. Three lanes you can drag and audition; what you hear in the editor is precisely what goes out.<\/p>\n      <ul class=\"fbul\">\n        <li>Record over the <b>real<\/b> outgoing and incoming songs<\/li>\n        <li>Duck-and-hold and the talk-up post, set by ear<\/li>\n        <li>Runs through the full broadcast chain on save<\/li>\n        <li>Drops straight into the log, ready to play<\/li>\n      <\/ul>\n    <\/div>\n    <div>\n      <div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>Voice track editor<\/span><\/div>\n        <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/voicetrack-editor.png\" alt=\"The voice track editor: outgoing, your voice and incoming song on three lanes\" width=\"1600\" height=\"1040\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== scheduling ===== -->\n<section id=\"scheduling\">\n  <div class=\"wrap fblock rev\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">Music scheduling<\/div>\n      <h2>Build the format once. Every hour follows it.<\/h2>\n      <p class=\"lead\">Design your clocks \u2014 songs, categories, groups, imaging, ad breaks, voice links and time markers \u2014 paint them across the week, and build a month ahead in a click. The scheduler picks every hour against real rotation rules, and shows you guide times from your own library before you build.<\/p>\n      <ul class=\"fbul\">\n        <li>A <b>visual clock wheel<\/b> \u2014 see the whole hour at a glance<\/li>\n        <li>Live guide times as you build, from your own library<\/li>\n        <li>Artist, title, no-repeat &amp; the pro coding axes (era, gender, tempo, genre)<\/li>\n        <li><b>Hard, soft and reset<\/b> time markers baked into the format<\/li>\n      <\/ul>\n    <\/div>\n    <div>\n      <div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>Clock editor \u2014 the visual clock wheel<\/span><\/div>\n        <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/clock-editor.png\" alt=\"The clock editor: a segmented clock wheel and the slot list with live guide times\" width=\"944\" height=\"780\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== traffic + compliance ===== -->\n<section id=\"traffic\" class=\"tint\">\n  <div class=\"wrap fblock\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">Traffic &amp; proof-of-play<\/div>\n      <h2>Adverts that book themselves \u2014 and a receipt that proves they ran.<\/h2>\n      <p class=\"lead\">Campaigns with dates, plays per day, dayparts and positions. The allocator fills every break \u2014 never the same advertiser twice, collision tags respected \u2014 and books itself into the log at build time. Then an air-event log records what actually happened, to the second.<\/p>\n      <ul class=\"fbul\">\n        <li>Advertiser <b>proof-of-play<\/b>: scheduled vs actual, booked vs aired<\/li>\n        <li>Partial and missed spots flagged, with reasons<\/li>\n        <li>PRS\/PPL music return in one click<\/li>\n        <li>Printable per-hour cue sheets for the studio<\/li>\n      <\/ul>\n    <\/div>\n    <div>\n      <div class=\"shot\"><div class=\"shot-bar\"><i><\/i><i><\/i><i><\/i><span>Adverts \u2014 campaigns &amp; bands<\/span><\/div>\n        <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/radiojingles24.com\/wp-content\/uploads\/2026\/07\/adverts.png\" alt=\"The Adverts tab: campaign booking, ad bands and the break tail\" width=\"1600\" height=\"720\"><\/div>\n      <table class=\"recon\" style=\"margin-top:20px\">\n        <thead><tr><th>Advertiser<\/th><th>Scheduled<\/th><th>Aired<\/th><th>Booked \/ aired<\/th><th>Result<\/th><\/tr><\/thead>\n        <tbody>\n          <tr><td><b>Smiths Autos<\/b><\/td><td class=\"mono\">14:20:00<\/td><td class=\"mono\">14:20:03<\/td><td class=\"mono\">30 \/ 30s<\/td><td><span class=\"rchip ok\">PLAYED<\/span><\/td><\/tr>\n          <tr><td><b>Thornes Garden Ctr<\/b><\/td><td class=\"mono\">16:50:00<\/td><td class=\"mono\">16:50:02<\/td><td class=\"mono\">40 \/ 31s<\/td><td><span class=\"rchip part\">PARTIAL<\/span><\/td><\/tr>\n          <tr><td><b>Wakey Windows<\/b><\/td><td class=\"mono\">17:20:00<\/td><td class=\"mono\">\u2014<\/td><td class=\"mono\">30 \/ 0s<\/td><td><span class=\"rchip miss\">MISSED<\/span><\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== eDSP processor (dark) ===== -->\n<!-- ===== Radio News Hub ===== -->\n<section id=\"newshub\" class=\"tint\" style=\"border-top:1px solid var(--line)\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\">News, done for you<\/div>\n    <h2>Radio News Hub \u2014 connected in one click.<\/h2>\n    <p class=\"lead\" style=\"max-width:46em\">Take bulletins from <b>Radio News Hub<\/b>? RadioStudio24 picks them up automatically. Connect your Dropbox once and every bulletin \u2014 <b>news, headlines, sport, showbiz, business<\/b> and <b>weather<\/b> \u2014 arrives, stays fresh, and drops straight into your hour. Nothing to name, nothing to upload.<\/p>\n    <div class=\"nhgrid\" style=\"display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:26px\">\n      <div class=\"nhcard\">\n        <div class=\"nhcap\">1 \u00b7 Add it to your clock<\/div>\n        <div class=\"nhchips\">\n          <span class=\"nhchip\">\ud83d\udcf0 RNH 2-Min News<\/span>\n          <span class=\"nhchip\">\ud83d\udccb RNH Headlines<\/span>\n          <span class=\"nhchip\">\u26bd RNH Sport<\/span>\n          <span class=\"nhchip on\">\ud83c\udf26\ufe0f RNH Weather \uff0b<\/span>\n        <\/div>\n        <div class=\"nhslots\">\n          <div class=\"nhslot\"><b>1<\/b> News \u2014 top of hour<\/div>\n          <div class=\"nhslot\"><b>2<\/b> Sweeper<\/div>\n          <div class=\"nhslot new\"><b>3<\/b> \ud83c\udf26\ufe0f RNH Weather &nbsp;\u2190 dropped in<\/div>\n          <div class=\"nhslot\"><b>4<\/b> Power song<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"nhcard\">\n        <div class=\"nhcap\">2 \u00b7 It fills the log automatically<\/div>\n        <div class=\"nhlog\">\n          <div class=\"nhrow\"><span class=\"t\">08:00:00<\/span><span class=\"k news\">NEWS<\/span> 2-Min News <span class=\"fresh\">updated 4m ago<\/span><\/div>\n          <div class=\"nhrow\"><span class=\"t\">08:02:30<\/span><span class=\"k\">SWEEPER<\/span> RSAI Sweeper 2<\/div>\n          <div class=\"nhrow\"><span class=\"t\">08:02:46<\/span><span class=\"k news\">WEATHER<\/span> \ud83c\udf26\ufe0f RNH Weather <span class=\"fresh\">updated 9m ago<\/span><\/div>\n          <div class=\"nhrow\"><span class=\"t\">08:03:20<\/span><span class=\"k\">SONG<\/span> Power song<\/div>\n          <div class=\"nhrow\"><span class=\"t\">08:30:00<\/span><span class=\"k news\">HEADLINES<\/span> \ud83d\udccb RNH Headlines <span class=\"fresh\">on the half-hour<\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n    <p class=\"sub\" style=\"margin-top:16px\">Bulletins play in full, are <b>never dropped<\/b>, and a <b>stale bulletin is skipped<\/b> \u2014 so yesterday's news never airs. Add a <b>music bed<\/b> under any of them, ducked with an intro, just like the weather. Prefer your own feed? An <b>FTP<\/b> source works exactly the same.<\/p>\n  <\/div>\n<\/section>\n<style>\n  #newshub .nhcard{background:#0d1017;border:1px solid var(--line);border-radius:16px;padding:18px 18px 20px}\n  #newshub .nhcap{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--pink2,#ff5da2);font-weight:800;margin-bottom:12px}\n  #newshub .nhchips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}\n  #newshub .nhchip{font-size:12.5px;font-weight:700;color:#9fd0ff;border:1px solid rgba(122,206,255,.5);border-radius:999px;padding:5px 11px;background:rgba(122,206,255,.06)}\n  #newshub .nhchip.on{color:#fff;background:linear-gradient(180deg,var(--pink2,#ff5da2),var(--pink,#ed2290));border-color:transparent}\n  #newshub .nhslots,#newshub .nhlog{display:flex;flex-direction:column;gap:6px}\n  #newshub .nhslot{font-size:13px;color:rgba(255,255,255,.8);background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;padding:8px 10px}\n  #newshub .nhslot b{color:var(--pink2,#ff5da2);margin-right:8px}\n  #newshub .nhslot.new{border-color:rgba(122,206,255,.6);color:#9fd0ff;background:rgba(122,206,255,.08)}\n  #newshub .nhrow{display:flex;align-items:center;gap:9px;font-size:12.5px;color:rgba(255,255,255,.82);background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;padding:7px 10px}\n  #newshub .nhrow .t{font-family:ui-monospace,monospace;color:rgba(255,255,255,.5);font-size:11.5px}\n  #newshub .nhrow .k{font-size:10px;font-weight:800;letter-spacing:.04em;color:rgba(255,255,255,.55);border:1px solid var(--line);border-radius:5px;padding:2px 6px;white-space:nowrap}\n  #newshub .nhrow .k.news{color:#9fd0ff;border-color:rgba(122,206,255,.5)}\n  #newshub .nhrow .fresh{margin-left:auto;font-size:11px;font-weight:700;color:#46d39a;white-space:nowrap}\n  @media(max-width:820px){#newshub .nhgrid{grid-template-columns:1fr!important}}\n<\/style>\n\n<section id=\"processor\" class=\"dark\">\n  <div class=\"wrap fblock rev\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">Radio Studio eDSP<\/div>\n      <h2>A broadcast audio processor, built in.<\/h2>\n      <p class=\"lead\">The kind of processing that costs thousands in a rack \u2014 on your output, with nothing to buy. Choose a format preset, ride one LESS \u25c2 \u25b8 MORE knob, and your station sits loud, consistent and polished: every song at a steady level, tone evened out, a dense and competitive sound with no obvious distortion.<\/p>\n      <ul class=\"fbul\">\n        <li>Gated wideband AGC + 5-band multiband compression<\/li>\n        <li>Masking-aware clipping \u2014 loud where it can't be heard, clean where it can<\/li>\n        <li>Harmonic bass so the low end lands on phones and DAB<\/li>\n        <li>True-peak limiting and mono-safe stereo, per-format presets<\/li>\n      <\/ul>\n    <\/div>\n    <div>\n      <div class=\"proc\">\n        <div class=\"proc-top\"><div class=\"proc-mark\">e<\/div><div class=\"proc-name\">Radio Studio eDSP<small>BROADCAST PROCESSOR<\/small><\/div><div class=\"proc-on\">\u25cf PROCESS<\/div><\/div>\n        <div class=\"proc-body\">\n          <div class=\"vu\">\n            <div style=\"text-align:center\"><div class=\"vu-col\"><i style=\"height:72%\"><\/i><\/div><div class=\"vu-lab\">IN<\/div><\/div>\n            <div style=\"text-align:center\"><div class=\"vu-col\"><i style=\"height:90%\"><\/i><\/div><div class=\"vu-lab\">OUT<\/div><\/div>\n          <\/div>\n          <div><div class=\"knob\"><b>7<\/b><\/div><div class=\"knob-lab\">LESS \u25c2 \u25b8 MORE<\/div><\/div>\n          <div>\n            <div class=\"bands\">\n              <div class=\"band-col\"><i style=\"height:40%\"><\/i><\/div><div class=\"band-col\"><i style=\"height:62%\"><\/i><\/div>\n              <div class=\"band-col\"><i style=\"height:52%\"><\/i><\/div><div class=\"band-col\"><i style=\"height:70%\"><\/i><\/div>\n              <div class=\"band-col\"><i style=\"height:34%\"><\/i><\/div>\n            <\/div><div class=\"vu-lab\" style=\"margin-top:7px\">5-BAND GR<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"proc-foot\"><span>PRESET <b>Pop<\/b><\/span><span>\u221214.1 <b>LUFS<\/b><\/span><span>\u22121.0 <b>dBTP<\/b><\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== cloud engine (dark) ===== -->\n<section id=\"cloud\" class=\"dark\" style=\"border-top:1px solid rgba(255,255,255,.06)\">\n  <div class=\"wrap fblock\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">The cloud engine<\/div>\n      <h2>On air 24\/7 \u2014 no browser open, no PC left running.<\/h2>\n      <p class=\"lead\">Switch the cloud engine on and a copy of your station runs in our cloud, streaming to your own stream around the clock \u2014 immune to refreshes, laptops closing and power cuts. When a presenter wants to go live they open a desk and take the air at the junction; press release at the end of the show and the engine picks up the very next item. The public stream never drops, whoever's driving.<\/p>\n      <div class=\"workswith\">\n        <div class=\"ww-label\">Works with your stream \u2014 no lock-in<\/div>\n        <div class=\"ww-chips\">\n          <span>Icecast<\/span><span>SHOUTcast<\/span><span>AzuraCast<\/span><span>Radio.co<\/span><span>Live365<\/span><span>any Icecast\/SHOUTcast host<\/span>\n        <\/div>\n        <div class=\"ww-note\">Point the engine at the stream you already have \u2014 keep your listener stats, players and apps exactly where they are.<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"handover\">\n      <div class=\"ho-row ho-engine\"><span class=\"ho-dot\"><\/span><span class=\"ho-lab\"><b>\u2601 Cloud engine<\/b> \u2014 on air, streaming your 13:00 hour<\/span><\/div>\n      <div class=\"ho-arrow\">\u2193 presenter opens a desk, takes at the junction<\/div>\n      <div class=\"ho-row ho-desk\"><span class=\"ho-dot\"><\/span><span class=\"ho-lab\"><b>Studio desk<\/b> \u2014 live, mic open, over the intro<\/span><\/div>\n      <div class=\"ho-arrow\">\u2193 presses release at the end of the show<\/div>\n      <div class=\"ho-row ho-engine\"><span class=\"ho-dot\"><\/span><span class=\"ho-lab\"><b>\u2601 Cloud engine<\/b> \u2014 back on air with the next song<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== streaming made simple ===== -->\n<section id=\"streaming\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\" style=\"text-align:center\">Streaming, sorted<\/div>\n    <h2 style=\"text-align:center;margin:0 auto 12px;max-width:18em\">Add streaming and you're on air \u2014 no server, no settings, no faff.<\/h2>\n    <p class=\"lead\" style=\"text-align:center;margin:0 auto\">Tick hosted streaming at checkout and your station goes live natively \u2014 we run the stream, you get a listen link. Then drop your live output onto any website with a paste-in widget. Already have a stream? Plug it straight in \u2014 it all just works.<\/p>\n    <div class=\"card-grid g3\">\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(237,34,144,.1);color:var(--pink)\">\ud83d\udce1<\/span><h3>Hosted streaming, one tick<\/h3><p>Add it at checkout (<b>+\u00a310\/mo<\/b>) and we host the stream for you \u2014 nothing to rent, nothing to configure. You get a <b>share-anywhere listen link<\/b> and you're broadcasting. It just works, natively.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(18,174,191,.1);color:var(--cyan)\">\ud83d\udd0a<\/span><h3>Widgets for any website<\/h3><p>Paste one line into your site \u2014 or anyone's \u2014 for a <b>now-playing player<\/b>: cover art, what's playing, your AI presenter's song facts and a <b>live listen button<\/b>. It updates itself and works on as many sites as you like.<\/p><\/div>\n      <div class=\"card\"><span class=\"ico\" style=\"background:rgba(18,162,116,.1);color:var(--green)\">\ud83d\udd0c<\/span><h3>Or bring your own<\/h3><p>Already streaming with Icecast, SHOUTcast, AzuraCast, Radio.co or anyone else? <b>Plug it straight in<\/b> on any cloud plan and keep your listener stats, players and apps exactly where they are.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== AI Studio bundle ===== -->\n<section id=\"bundle\" class=\"tint\">\n  <div class=\"wrap fblock\">\n    <div class=\"ftext\">\n      <div class=\"sec-eye\">AI Studio \u2014 straight into the log<\/div>\n      <h2>Make a jingle, a sweeper or an advert. Drop it on the air.<\/h2>\n      <p class=\"lead\">RadioStudio24 plugs into <a href=\"https:\/\/radiojingles24.com\/ai-studio\/\" class=\"inline\">AI Studio<\/a> \u2014 the same credits that power your jingles on RadioJingles24 work right here in the playout. Generate a sung station ID, a produced advert or a sweeper and it lands in your library, typed and analysed, ready to schedule.<\/p>\n      <div class=\"btns\" style=\"margin-top:24px\"><a href=\"https:\/\/radiojingles24.com\/ai-studio-plans\/\" class=\"btn btn-ghost\">See AI Studio credits<\/a><\/div>\n    <\/div>\n    <div class=\"bundle-card\">\n      <div class=\"bc-row\"><span class=\"bc-ico\">\ud83c\udfb5<\/span><span class=\"bc-lab\">Sung jingle<\/span><span class=\"bc-cost\">10 credits<\/span><\/div>\n      <div class=\"bc-row\"><span class=\"bc-ico\">\ud83d\udce2<\/span><span class=\"bc-lab\">Advert with AI music<\/span><span class=\"bc-cost\">4 credits<\/span><\/div>\n      <div class=\"bc-row\"><span class=\"bc-ico\">\ud83d\udce3<\/span><span class=\"bc-lab\">Sweeper \/ DJ drop<\/span><span class=\"bc-cost\">2 credits<\/span><\/div>\n      <div class=\"bc-row\"><span class=\"bc-ico\">\ud83c\udf99\ufe0f<\/span><span class=\"bc-lab\">Dry 30s voiceover<\/span><span class=\"bc-cost\">1 credit<\/span><\/div>\n      <div class=\"bc-foot\">Credits from <b>\u00a339 \/ 120<\/b> a month on AI Studio \u2014 shared with your RadioJingles24 account.<\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== pricing ===== -->\n<section id=\"pricing\" class=\"config\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\" style=\"text-align:center\">Pricing<\/div>\n    <h2 style=\"text-align:center;margin:0 auto 8px\">Simple, honest pricing.<\/h2>\n    <p class=\"lead\" style=\"text-align:center;margin:0 auto 8px\">Two ways to start \u2014 try it for <b style=\"color:var(--pink)\">\u00a31<\/b>, or skip the trial and get <b style=\"color:var(--pink)\">everything from day one<\/b>. Pick your plan, add hosted streaming if you want it, and the total updates as you go.<\/p>\n\n    <!-- trial \/ no-trial slider -->\n    <div class=\"trial-switch\" id=\"trialSwitch\" role=\"tablist\">\n      <button id=\"tsTrial\" class=\"on\" type=\"button\">\n        <span class=\"ts-t\">\u2728 Start for \u00a31<\/span>\n        <span class=\"ts-s\">5-day trial \u00b7 cancel any time<\/span>\n      <\/button>\n      <button id=\"tsNow\" type=\"button\">\n        <span class=\"ts-t\">\u26a1 Start now \u2014 no trial<\/span>\n        <span class=\"ts-s\">everything live from day one<\/span>\n      <\/button>\n    <\/div>\n    <p class=\"switch-note\" id=\"switchNote\"><b>\u00a31 for 5 days<\/b>, fully functional to test the whole system &mdash; the <b>24\/7 cloud engine<\/b>, your full AI allowance and voice clones switch on at your first payment on day 5. Want them from <b>day one<\/b>? Flip to <b>no trial<\/b> and your first month starts today.<\/p>\n\n    <div id=\"slotsBanner\" class=\"slots-banner\" style=\"display:none\"><\/div>\n\n    <div class=\"cfg-step\">\n      <div class=\"cfg-step-head\"><span class=\"cfg-num\">1<\/span> Choose your playout plan<\/div>\n      <div class=\"plan-row\" id=\"planRow\">\n        <button class=\"plan\" data-plan=\"studio\" data-price=\"29\" data-pid=\"117355\" data-trial=\"0\" data-cloud=\"0\">\n          <div class=\"plan-name\">Studio<\/div>\n          <div class=\"plan-amt\">\u00a329<small>\/mo<\/small><\/div>\n          <div class=\"plan-desc\">The full playout system, streamed live from your browser.<\/div>\n          <ul>\n            <li>Full desk &amp; music scheduler<\/li>\n            <li>Voice tracking, traffic &amp; proof-of-play<\/li>\n            <li>Radio Studio eDSP processor<\/li>\n            <li>Stream from the desk<\/li>\n            <li>25GB storage \u00b7 3 seats<\/li>\n            <li>AI presenter \u2014 pay as you go<\/li>\n          <\/ul>\n        <\/button>\n        <button class=\"plan sel\" data-plan=\"broadcast\" data-price=\"59\" data-pid=\"117356\" data-pid-notrial=\"117814\" data-trial=\"1\" data-cloud=\"1\">\n          <div class=\"plan-flag\">Most popular<\/div>\n          <div class=\"plan-name\">Broadcast<\/div>\n          <div class=\"plan-amt\">\u00a359<small>\/mo<\/small><\/div>\n          <div class=\"plan-trial\">\u2728 \u00a31 for 5 days<\/div>\n          <div class=\"plan-desc\">Adds the cloud engine \u2014 on air 24\/7, no browser needed.<\/div>\n          <ul>\n            <li>Everything in Studio<\/li>\n            <li><b>\u2601 Cloud engine \u2014 24\/7<\/b><\/li>\n            <li>Desk \u21c4 cloud handover<\/li>\n            <li>100GB storage \u00b7 unlimited seats<\/li>\n            <li><b>2 AI presenter hrs\/day \u2014 ~300 links a month<\/b><\/li>\n            <li>1 custom voice clone<\/li>\n          <\/ul>\n        <\/button>\n        <button class=\"plan\" data-plan=\"pro\" data-price=\"99\" data-pid=\"117742\" data-pid-notrial=\"117815\" data-trial=\"1\" data-cloud=\"1\">\n          <div class=\"plan-name\">Broadcast Pro<\/div>\n          <div class=\"plan-amt\">\u00a399<small>\/mo<\/small><\/div>\n          <div class=\"plan-trial\">\u2728 \u00a31 for 5 days<\/div>\n          <div class=\"plan-desc\">More AI presenting, for a station that talks all day.<\/div>\n          <ul>\n            <li>Everything in Broadcast<\/li>\n            <li><b>6 AI presenter hrs\/day \u2014 ~900 links a month<\/b><\/li>\n            <li>2 custom voice clones<\/li>\n            <li>Priority support<\/li>\n          <\/ul>\n        <\/button>\n        <button class=\"plan\" data-plan=\"ultra\" data-price=\"149\" data-pid=\"117743\" data-pid-notrial=\"117816\" data-trial=\"1\" data-cloud=\"1\">\n          <div class=\"plan-name\">Broadcast Ultra<\/div>\n          <div class=\"plan-amt\">\u00a3149<small>\/mo<\/small><\/div>\n          <div class=\"plan-trial\">\u2728 \u00a31 for 5 days<\/div>\n          <div class=\"plan-desc\">Near round-the-clock AI presenting, maxed out.<\/div>\n          <ul>\n            <li>Everything in Pro<\/li>\n            <li><b>12 AI presenter hrs\/day \u2014 ~1,800 links a month<\/b><\/li>\n            <li>4 custom voice clones<\/li>\n            <li>Priority support<\/li>\n          <\/ul>\n        <\/button>\n      <\/div>\n      <p style=\"text-align:center;font-size:13.5px;font-weight:700;color:var(--ink-faint);margin-top:16px\">Running multiple stations? <a href=\"https:\/\/radiojingles24.com\/contact-us\/\" class=\"inline\">Network pricing \u2014 let's talk \u2192<\/a><\/p>\n    <\/div>\n\n    <div class=\"cfg-step\" id=\"streamStep\">\n      <div class=\"cfg-step-head\"><span class=\"cfg-num\">2<\/span> Add hosted streaming? <span class=\"cfg-opt\">optional<\/span><\/div>\n      <label class=\"stream-toggle\" id=\"streamToggle\">\n        <input type=\"checkbox\" id=\"streamChk\">\n        <span class=\"st-box\"><\/span>\n        <span class=\"st-text\">\n          <b>Stream your station to the world \u2014 +\u00a310\/mo<\/b>\n          We host the stream for you: a share-anywhere listen link, a live web player, and a now-playing widget you paste into your own website \u2014 it shows what's playing live, cover art and your AI presenter's song facts. No stream of your own needed.\n        <\/span>\n        <span class=\"st-price\">+\u00a310<small>\/mo<\/small><\/span>\n      <\/label>\n      <p class=\"stream-byo\">Already have a stream (Icecast, SHOUTcast, AzuraCast, Radio.co\u2026)? <b>Leave this off<\/b> \u2014 RadioStudio24 streams to your existing server on every cloud plan, no lock-in.<\/p>\n    <\/div>\n\n    <div class=\"ai-note\" style=\"max-width:none;text-align:center;margin-top:20px\">\ud83d\udca1 <b>Need more AI presenting?<\/b> Top up AI presenter credits <b class=\"amp\">any time<\/b> from inside the app \u2014 pay only for what you use, no plan change needed.<\/div>\n\n    <div class=\"cfg-total\" id=\"cfgTotal\">\n      <div class=\"ct-line\">\n        <div class=\"ct-bits\"><span id=\"ctPlanName\">Broadcast<\/span><span id=\"ctStreamBit\" style=\"display:none\"> + hosted streaming<\/span><\/div>\n        <div class=\"ct-amt\">\n          <span id=\"ctToday\">\u00a31 <small>due today<\/small><\/span>\n          <span id=\"ctThen\">then \u00a359\/mo after your 5-day trial<\/span>\n        <\/div>\n      <\/div>\n      <a href=\"https:\/\/radiojingles24.com\/cart\/?add-to-cart=117356\" class=\"btn\" id=\"ctCta\">Start your \u00a31 trial \u2192<\/a>\n    <\/div>\n    <p id=\"cartPreview\" style=\"text-align:center;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink-faint);margin-top:16px\"><\/p>\n    <p class=\"aihours-fine\" style=\"text-align:center;margin-left:auto;margin-right:auto\">Every plan is the full playout system \u2014 run as much live and voice-tracked radio as you like. Broadcast, Pro and Ultra start with a \u00a31, 5-day trial (then the monthly price); Studio is billed today. During the trial you get a starter batch of AI credits to test the presenter \u2014 your full monthly allowance, the always-on 24\/7 cloud engine and custom voice clones switch on automatically at your first payment on day 5. AI presenter hours are included with your plan and refill each month \u2014 add more any time from inside. Hosted streaming is an optional \u00a310\/mo add-on. Cancel any time.<\/p>\n  <\/div>\n<\/section>\n\n<!-- ===== rj24 heritage ===== -->\n<section id=\"rj24\" class=\"tint\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\">RadioStudio24 \u00d7 RadioJingles24<\/div>\n    <h2>The playout system with a jingle factory attached.<\/h2>\n    <p class=\"lead\">RadioStudio24 comes from <a href=\"https:\/\/radiojingles24.com\" class=\"inline\">RadioJingles24.com<\/a> \u2014 the team that's produced sung jingles, sweepers, DJ drops and full imaging packages for 600+ stations since 2014. The software and the sound come from the same place.<\/p>\n    <div class=\"steps\">\n      <div class=\"step\"><div class=\"step-n\">Name it<\/div><h3>Your name on air<\/h3><p>Set your station name and slogan in Settings \u2014 the AI presenter starts using them on air the same hour.<\/p><\/div>\n      <div class=\"step\"><div class=\"step-n\">Sound it<\/div><h3>Real imaging<\/h3><p>Order custom jingles from RadioJingles24, or generate imaging instantly in AI Studio, and upload straight into your library.<\/p><\/div>\n      <div class=\"step\"><div class=\"step-n\">Schedule it<\/div><h3>Build the week<\/h3><p>Build your clocks, assign your week, book your first campaigns. The guide times tell you it fits before you press anything.<\/p><\/div>\n      <div class=\"step\"><div class=\"step-n\">Switch on<\/div><h3>Cloud on, you off<\/h3><p>Flip the cloud engine on. Automation rolls hour into hour, links voiced, breaks filled, news on the pips \u2014 while you sleep.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== final ===== -->\n<section class=\"dark final\">\n  <div class=\"wrap\">\n    <div class=\"sec-eye\" style=\"text-align:center\">Ready when you are<\/div>\n    <h2>Your station. Your sound. On air around the clock.<\/h2>\n    <p class=\"lead\">A complete broadcast system in a browser tab \u2014 with imaging and AI Studio from the same team that's kitted out 600+ stations.<\/p>\n    <div class=\"btns\">\n      <a href=\"#pricing\" class=\"btn btn-pri\">Start your \u00a31 trial \u2192<\/a>\n      <a href=\"https:\/\/radiojingles24.com\" class=\"btn btn-light\">Get your jingles first<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<\/div><!-- \/#rs24 -->\n\n<script>\n(function(){\n  var planRow = document.getElementById('planRow');\n  if(!planRow) return;\n  var STREAM_ID = '117744', STREAM_PRICE = 10;\n  var CART = 'https:\/\/radiojingles24.com\/cart\/?add-to-cart=';\n  var SLOTS = { open:true, cap:0, remaining:null };   \/\/ founding-cohort availability\n  \/\/ WooCommerce product IDs live on each plan button (data-pid). Streaming is a\n  \/\/ separate add-on product added as a second cart line when toggled on.\n  var TRIAL = true;   \/\/ slider: true = \u00a31 5-day trial, false = pay full price today (no-trial products)\n  var plan = { key:'broadcast', name:'Broadcast', price:59, cloud:true, canTrial:true,\n               pidTrial:'117356', pidNoTrial:'117814' };\n  var streaming = false;\n  function effTrial(){ return TRIAL && plan.canTrial; }         \/\/ Studio never trials\n  function effPid(){ return effTrial() ? plan.pidTrial : plan.pidNoTrial; }\n  function checkoutURL(){\n    var pid = effPid();\n    if(!pid) return CART;\n    if(streaming && plan.cloud) return CART + pid + ',' + STREAM_ID + '&quantity=1,1';\n    return CART + pid;\n  }\n  function render(){\n    var isTrial = effTrial();\n    var streamAdd = (streaming && plan.cloud) ? STREAM_PRICE : 0;\n    document.getElementById('streamToggle').classList.toggle('on', streamAdd>0);\n    document.getElementById('streamStep').classList.toggle('st-disabled', !plan.cloud);\n    document.getElementById('ctPlanName').textContent = plan.name;\n    document.getElementById('ctStreamBit').style.display = streamAdd ? '' : 'none';\n    \/\/ slider active state + hide the \"\u00a31 for 5 days\" plan badges when no-trial\n    var tt = document.getElementById('tsTrial'), tn = document.getElementById('tsNow');\n    if(tt) tt.classList.toggle('on', TRIAL);\n    if(tn) tn.classList.toggle('on', !TRIAL);\n    document.querySelectorAll('#rs24 .plan').forEach(function(p){\n      if(p.dataset.trial === '1') p.classList.toggle('notrial', !TRIAL);\n    });\n    var sn = document.getElementById('switchNote');\n    if(sn){\n      if(!plan.canTrial)\n        sn.innerHTML = '<b>Studio starts today \u2014 no trial.<\/b> The \u00a31 trial option is on Broadcast, Pro &amp; Ultra (they add the 24\/7 cloud engine).';\n      else if(TRIAL)\n        sn.innerHTML = '<b>\u00a31 for 5 days<\/b>, fully functional to test the whole system &mdash; the <b>24\/7 cloud engine<\/b>, your full AI allowance and voice clones switch on at your first payment on day 5. Want them from <b>day one<\/b>? Flip to <b>no trial<\/b>.';\n      else\n        sn.innerHTML = '<b>No trial \u2014 everything from day one.<\/b> Your first month is billed today and the <b>24\/7 cloud engine<\/b>, full AI allowance and voice clones are live immediately. Cancel any time.';\n    }\n    var cta = document.getElementById('ctCta'),\n        ctToday = document.getElementById('ctToday'), ctThen = document.getElementById('ctThen');\n    cta.href = checkoutURL();\n    \/\/ cart preview \u2014 show exactly what the button drops into the basket\n    var cp = document.getElementById('cartPreview');\n    var bits = [plan.name + (isTrial ? \" (\u00a31 trial)\" : \"\")];\n    if(streamAdd) bits.push(\"Hosted streaming\");\n    cp.textContent = \"\ud83d\uded2 Adds to cart:  \" + bits.join(\"   +   \");\n    if(isTrial){\n      ctToday.innerHTML = \"\u00a3\"+(1 + streamAdd)+\" <small>due today<\/small>\";\n      ctThen.textContent = \"then \u00a3\"+(plan.price + streamAdd)+\"\/mo after your 5-day trial\";\n      cta.textContent = \"Start your \u00a31 trial \u2192\";\n    } else {\n      ctToday.innerHTML = \"\u00a3\"+(plan.price + streamAdd)+\" <small>due today<\/small>\";\n      ctThen.textContent = plan.canTrial\n        ? \"everything live from day one \u00b7 then \u00a3\"+(plan.price + streamAdd)+\"\/mo \u00b7 cancel any time\"\n        : \"then \u00a3\"+(plan.price + streamAdd)+\"\/mo \u00b7 cancel any time\";\n      cta.textContent = plan.canTrial ? \"Start now \u2014 no trial \u2192\" : \"Get started \u2192\";\n    }\n    \/\/ founding-cohort gate \u2014 close the button once the group is full\n    if(!SLOTS.open){\n      cta.textContent = \"Founding places full\";\n      cta.removeAttribute('href'); cta.style.opacity = \".55\"; cta.style.pointerEvents = \"none\";\n    } else { cta.style.opacity = \"\"; cta.style.pointerEvents = \"\"; }\n  }\n  document.querySelectorAll('#rs24 .plan').forEach(function(b){\n    b.addEventListener('click', function(){\n      document.querySelectorAll('#rs24 .plan').forEach(function(x){x.classList.remove('sel');});\n      b.classList.add('sel');\n      plan.key = b.dataset.plan; plan.name = b.querySelector('.plan-name').textContent;\n      plan.price = +b.dataset.price; plan.canTrial = b.dataset.trial === '1';\n      plan.cloud = b.dataset.cloud === '1';\n      plan.pidTrial = b.dataset.pid; plan.pidNoTrial = b.dataset.pidNotrial || b.dataset.pid;\n      if(!plan.cloud){ streaming = false; var c = document.getElementById('streamChk'); if(c) c.checked = false; }\n      render();\n    });\n  });\n  \/\/ trial \/ no-trial slider\n  var tsTrial = document.getElementById('tsTrial'), tsNow = document.getElementById('tsNow');\n  if(tsTrial) tsTrial.addEventListener('click', function(){ TRIAL = true; render(); });\n  if(tsNow) tsNow.addEventListener('click', function(){ TRIAL = false; render(); });\n  var chk = document.getElementById('streamChk');\n  if(chk) chk.addEventListener('change', function(){\n    if(!plan.cloud){ chk.checked = false; return; }\n    streaming = chk.checked; render();\n  });\n  render();\n\n  \/\/ founding-cohort availability \u2014 read live from the app (cross-origin)\n  fetch('https:\/\/app.radiostudio24.com\/api\/v1\/slots').then(function(r){ return r.json(); }).then(function(d){\n    if(!d) return;\n    SLOTS = d;\n    var b = document.getElementById('slotsBanner');\n    if(b && d.cap > 0){\n      b.style.display = '';\n      if(d.open){ b.className = 'slots-banner'; b.innerHTML = '\ud83d\udd25 Founding launch \u2014 only <b>' + d.remaining + '<\/b> place' + (d.remaining===1?'':'s') + ' left'; }\n      else {\n        b.className = 'slots-banner full';\n        b.innerHTML = 'Founding places are full for now \u2014 join the waitlist and we\u2019ll email you the moment one opens:'\n          + '<form id=\"wlForm\" style=\"display:flex;gap:8px;max-width:430px;margin:12px auto 0;flex-wrap:wrap;justify-content:center\">'\n          + '<input id=\"wlEmail\" type=\"email\" required placeholder=\"you@yourstation.com\" style=\"flex:1;min-width:210px;padding:11px 15px;border-radius:999px;border:1px solid var(--line2);font:800 14px var(--sans);color:var(--ink);outline:none\">'\n          + '<button class=\"btn btn-pri\" type=\"submit\" style=\"padding:11px 20px\">Join the waitlist<\/button>'\n          + '<\/form><div id=\"wlMsg\" style=\"margin-top:9px;font-weight:800\"><\/div>';\n        var wf = document.getElementById('wlForm');\n        if(wf) wf.addEventListener('submit', async function(e){\n          e.preventDefault();\n          var em = document.getElementById('wlEmail').value.trim(), wm = document.getElementById('wlMsg');\n          if(!em) return;\n          try{\n            var rr = await fetch('https:\/\/app.radiostudio24.com\/api\/v1\/leads', {method:'POST',\n              headers:{'Content-Type':'application\/json'}, body: JSON.stringify({ email: em, source: 'waitlist' })});\n            if(!rr.ok) throw 0;\n            wf.style.display = 'none';\n            wm.textContent = '\u2713 You\u2019re on the list \u2014 we\u2019ll be in touch the moment a place opens.'; wm.style.color = 'var(--green)';\n          }catch(_){ wm.innerHTML = 'Hmm, that didn\u2019t send. <a href=\"mailto:info@radiojingles24.com?subject=RadioStudio24%20waitlist\">email us to join \u2192<\/a>'; }\n        });\n      }\n    }\n    render();\n  }).catch(function(){});\n})();\n\n\/\/ ===== hero AI ticker: now playing -> AI back-announce =====\n(function(){\n  var say = document.getElementById('adSay'), np = document.getElementById('adNp'), tags = document.getElementById('adTags');\n  if(!say) return;\n  var demos = [\n    { np:\"Roll Away the Stone \u00b7 Mott the Hoople\",\n      say:\"That was Mott the Hoople \u2014 written by Ian Hunter, number two back in '73. Proper glam-rock swagger to carry us toward the half hour\u2026\",\n      tags:[\"song facts\",\"the year\",\"chart run\"] },\n    { np:\"Cruel Summer \u00b7 Taylor Swift\",\n      say:\"Taylor Swift there, Cruel Summer. Bright and 14 degrees out there in Wakefield right now \u2014 gorgeous. More music in a moment\u2026\",\n      tags:[\"now playing\",\"live weather\",\"your town\"] },\n    { np:\"Dancing Queen \u00b7 ABBA\",\n      say:\"ABBA and Dancing Queen! Quick one before we carry on \u2014 it's slow on the M62 westbound near junction 40, so leave yourself a minute\u2026\",\n      tags:[\"live travel\",\"M62 \u00b7 junction 40\",\"into the log\"] },\n    { np:\"Mr. Brightside \u00b7 The Killers\",\n      say:\"The Killers, on the station that never sleeps. Just gone midnight \u2014 you're with me right through till six. Nice and easy from here\u2026\",\n      tags:[\"the hour\",\"the ident\",\"your slogan\"] }\n  ];\n  var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var di = -1;\n  function chips(d){ return d.tags.map(function(t){ return \"<span>\"+t+\"<\/span>\"; }).join(\"\"); }\n  function next(){ di = (di+1) % demos.length; run(); }\n  function run(){\n    var d = demos[di];\n    np.innerHTML = \"Now playing \u2014 <b>\" + d.np + \"<\/b>\";\n    if(reduce){\n      say.textContent = d.say; tags.innerHTML = chips(d);\n      setTimeout(next, 5200); return;\n    }\n    tags.innerHTML = \"\";\n    var full = d.say, i = 0;\n    (function step(){\n      i++;\n      say.innerHTML = full.slice(0,i) + '<span class=\"cur\"><\/span>';\n      if(i < full.length){ setTimeout(step, 20 + Math.random()*34); }\n      else { tags.innerHTML = chips(d); setTimeout(next, 3600); }\n    })();\n  }\n  setTimeout(next, 500);\n})();\n\n\/\/ ===== iframe auto-resize =====\n\/\/ If embedded in an <iframe> on the WordPress site, tell the parent how tall we\n\/\/ are so the frame grows to fit (no inner scrollbar). Harmless as a normal page.\n(function(){\n  function reportHeight(){\n    try{\n      var el = document.getElementById('rs24') || document.body;\n      var h = Math.max(el.scrollHeight, document.body.scrollHeight, document.documentElement.scrollHeight);\n      parent.postMessage({ rs24height: h }, \"*\");\n    }catch(e){}\n  }\n  window.addEventListener(\"load\", reportHeight);\n  window.addEventListener(\"resize\", reportHeight);\n  document.querySelectorAll(\"#rs24 img\").forEach(function(im){ im.addEventListener(\"load\", reportHeight); });\n  setInterval(reportHeight, 1000);\n})();\n<\/script>\n<\/body>\n<\/html>\n\n\t\t<\/div>\n\t<\/div>\n\n\t\t\t<\/div> \n\t\t<\/div>\n\t<\/div> \n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"RadioStudio24 \u2014 professional radio playout, in a browser | by Radio Jingles 24 \/* ============================================================= * * EVERYTHING is scoped under #rs24 so the WordPress theme can't * reach in...","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-117351","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles<\/title>\n<meta name=\"description\" content=\"Radio Jingles, Sung Jingles, DJ Drops, and Podcast Intros for commercial, community and internet radio stations. UK Based. Prices from \u00a35. Order online.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/radiojingles24.com\/de\/?page_id=117351\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles\" \/>\n<meta property=\"og:description\" content=\"Radio Jingles, Sung Jingles, DJ Drops, and Podcast Intros for commercial, community and internet radio stations. UK Based. Prices from \u00a35. Order online.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/radiojingles24.com\/de\/?page_id=117351\" \/>\n<meta property=\"og:site_name\" content=\"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/radiojingles24\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-24T12:56:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@radiojingles24\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"88\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/?page_id=117351\",\"url\":\"https:\\\/\\\/radiojingles24.com\\\/?page_id=117351\",\"name\":\"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/#website\"},\"datePublished\":\"2026-06-13T10:55:33+00:00\",\"dateModified\":\"2026-07-24T12:56:27+00:00\",\"description\":\"Radio Jingles, Sung Jingles, DJ Drops, and Podcast Intros for commercial, community and internet radio stations. UK Based. Prices from \u00a35. Order online.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/?page_id=117351#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/radiojingles24.com\\\/?page_id=117351\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/?page_id=117351#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/radiojingles24.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Radio Studio 24\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/#website\",\"url\":\"https:\\\/\\\/radiojingles24.com\\\/\",\"name\":\"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles\",\"description\":\"Radio Jingles, Sung Jingles, DJ Drops, and Podcast Intros for commercial, community and internet radio stations. UK Based. Prices from \u00a35. Order online.\",\"publisher\":{\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/radiojingles24.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/#organization\",\"name\":\"Radio Jingles 24\",\"url\":\"https:\\\/\\\/radiojingles24.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/radiojingles24.com\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/RadioJingle1-1.jpg\",\"contentUrl\":\"https:\\\/\\\/radiojingles24.com\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/RadioJingle1-1.jpg\",\"width\":512,\"height\":158,\"caption\":\"Radio Jingles 24\"},\"image\":{\"@id\":\"https:\\\/\\\/radiojingles24.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/radiojingles24\\\/\",\"https:\\\/\\\/x.com\\\/radiojingles24\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Gesungene Jingles","description":"Radio Jingles, Sung Jingles, DJ Drops und Podcast Intros f\u00fcr kommerzielle, Community- und Internetradiosender. In Gro\u00dfbritannien ans\u00e4ssig. Preise ab \u00a3 5. Online bestellen.","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:\/\/radiojingles24.com\/de\/?page_id=117351","og_locale":"de_DE","og_type":"article","og_title":"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles","og_description":"Radio Jingles, Sung Jingles, DJ Drops, and Podcast Intros for commercial, community and internet radio stations. UK Based. Prices from \u00a35. Order online.","og_url":"https:\/\/radiojingles24.com\/de\/?page_id=117351","og_site_name":"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Sung Jingles","article_publisher":"https:\/\/www.facebook.com\/radiojingles24\/","article_modified_time":"2026-07-24T12:56:27+00:00","twitter_card":"summary_large_image","twitter_site":"@radiojingles24","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"88\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/radiojingles24.com\/?page_id=117351","url":"https:\/\/radiojingles24.com\/?page_id=117351","name":"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Gesungene Jingles","isPartOf":{"@id":"https:\/\/radiojingles24.com\/#website"},"datePublished":"2026-06-13T10:55:33+00:00","dateModified":"2026-07-24T12:56:27+00:00","description":"Radio Jingles, Sung Jingles, DJ Drops und Podcast Intros f\u00fcr kommerzielle, Community- und Internetradiosender. In Gro\u00dfbritannien ans\u00e4ssig. Preise ab \u00a3 5. Online bestellen.","breadcrumb":{"@id":"https:\/\/radiojingles24.com\/?page_id=117351#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/radiojingles24.com\/?page_id=117351"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/radiojingles24.com\/?page_id=117351#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/radiojingles24.com\/"},{"@type":"ListItem","position":2,"name":"Radio Studio 24"}]},{"@type":"WebSite","@id":"https:\/\/radiojingles24.com\/#website","url":"https:\/\/radiojingles24.com\/","name":"Radio Jingles 24: Radio Jingles | DJ Drops | Podcast Intros | Gesungene Jingles","description":"Radio Jingles, Sung Jingles, DJ Drops und Podcast Intros f\u00fcr kommerzielle, Community- und Internetradiosender. In Gro\u00dfbritannien ans\u00e4ssig. Preise ab \u00a3 5. Online bestellen.","publisher":{"@id":"https:\/\/radiojingles24.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/radiojingles24.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/radiojingles24.com\/#organization","name":"Radio Jingles 24","url":"https:\/\/radiojingles24.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/radiojingles24.com\/#\/schema\/logo\/image\/","url":"https:\/\/radiojingles24.com\/wp-content\/uploads\/2019\/11\/RadioJingle1-1.jpg","contentUrl":"https:\/\/radiojingles24.com\/wp-content\/uploads\/2019\/11\/RadioJingle1-1.jpg","width":512,"height":158,"caption":"Radio Jingles 24"},"image":{"@id":"https:\/\/radiojingles24.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/radiojingles24\/","https:\/\/x.com\/radiojingles24"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/pages\/117351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/comments?post=117351"}],"version-history":[{"count":1,"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/pages\/117351\/revisions"}],"predecessor-version":[{"id":117667,"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/pages\/117351\/revisions\/117667"}],"wp:attachment":[{"href":"https:\/\/radiojingles24.com\/de\/wp-json\/wp\/v2\/media?parent=117351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}