Help
RSS
API
Feed
Maltego
Contact
Domain > www.sonoklip.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-02-12
24.37.85.102
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Thu, 12 Feb 2026 01:02:07 GMTServer: Apache/2.4.65 (Unix) OpenSSL/1.1.1kX-Powered-By: PHP/8.1.33Vary: Accept-Encoding,User-AgentTransfer-Encoding: chunkedContent-Type: text/html; charsetUTF-8 !DOCTYPE html>!-- Project: Metronic Asentus Frontend Freebie - Responsive HTML Template Based On Twitter Bootstrap 3.3.4 Version: 1.0 Author: KeenThemes Primary use: Corporate, Business Themes. Email: support@keenthemes.com Follow: http://www.twitter.com/keenthemes Like: http://www.facebook.com/keenthemes Website: http://www.keenthemes.com Premium: Premium Metronic Admin Theme: http://themeforest.net/item/metronic-responsive-admin-dashboard-template/4021469?refkeenthemes -->html langfr classno-js> !-- BEGIN HEAD --> head> meta charsetutf-8/> title>SONOKILP - Édition, Production et Réalisation/title> meta http-equivX-UA-Compatible contentIEedge> meta contentwidthdevice-width, initial-scale1 nameviewport/> !-- SEO Meta Tags --> meta namedescription contentAvec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique> meta namekeywords contentSONOKLIP, édition, production, réalisation, audio, voix, musique, identité sonore, production sonore, composition, mixage, mastering, sound design, Montréal, Rive-Sud> meta nameauthor contentSONOKLIP> !-- Open Graph / Facebook --> meta propertyog:title contentSONOKLIP> meta propertyog:description contentAvec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique> meta propertyog:image contenthttps://www.sonoklip.com/img/logo-dark.png> meta propertyog:url contenthttps://www.sonoklip.com> meta propertyog:type contentwebsite> meta propertyog:locale contentfr_CA> !-- GLOBAL MANDATORY STYLES --> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyHind:wght@300;400;500;600;700&displayswap relstylesheet> link hrefvendor/simple-line-icons/simple-line-icons.min.css relstylesheet typetext/css/> link hrefvendor/bootstrap/css/bootstrap.min.css relstylesheet typetext/css/> !-- PAGE LEVEL PLUGIN STYLES --> link hrefcss/animate.css relstylesheet> link hrefvendor/swiper/css/swiper.min.css relstylesheet typetext/css/> !-- THEME STYLES --> link hrefcss/layout.min.css relstylesheet typetext/css/> link hrefcss/player.css relstylesheet typetext/css/> link hrefcss/produits.css relstylesheet typetext/css/> !-- Favicon --> link relicon hreffavicon.ico/> /head> !-- END HEAD --> !-- BODY --> body> !-- HEADER --> header classheader navbar-fixed-top> !-- Navbar --> nav classnavbar rolenavigation> div classcontainer> !-- Brand and toggle get grouped for better mobile display --> div classmenu-container> button typebutton classnavbar-toggle data-togglecollapse data-target.nav-collapse> span classsr-only>Toggle navigation/span> span classtoggle-icon>/span> /button> !-- Logo --> div classlogo> a classlogo-wrap href/> img classlogo-img logo-img-main srcimg/logo.png altSonoklip Logo> img classlogo-img logo-img-active srcimg/logo-dark.png altSonoklip Logo> /a> /div> !-- End Logo --> /div> !-- Collect the nav links, forms, and other content for toggling --> div classcollapse navbar-collapse nav-collapse> div classmenu-container> ul classnavbar-nav navbar-nav-right> li classnav-item>a classnav-item-child nav-item-hover active href/>Accueil/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefapropos>À propos/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefproduits>Produits/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefforfaits>Forfaits/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefcontact>Contact/a>/li> /ul> /div> /div> !-- End Navbar Collapse --> /div> /nav> !-- Navbar --> /header> !-- END HEADER --> !-- SLIDER --> div idcarousel-example-generic classcarousel slide data-ridecarousel> div classcontainer> !-- Indicators --> ol classcarousel-indicators> li data-target#carousel-example-generic data-slide-to0 classactive>/li> li data-target#carousel-example-generic data-slide-to1>/li> li data-target#carousel-example-generic data-slide-to2>/li> /ol> /div> !-- Wrapper for slides --> div classcarousel-inner rolelistbox> div classitem active> img classimg-responsive srcimg/1920x1080/01.jpg altSlider Image> div classcontainer> div classcarousel-centered> div classmargin-b-40> h1 classcarousel-title>Édition/h1> p>Avec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique/p> /div> a href/contact classbtn-theme btn-theme-sm btn-default-bg-apropos text-uppercase>Pour une évaluation de projet/a> /div> /div> /div> div classitem> img classimg-responsive srcimg/1920x1080/02.jpg altSlider Image> div classcontainer> div classcarousel-centered> div classmargin-b-40> h2 classcarousel-title>Production/h2> p>Avec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique/p> /div> a href/contact classbtn-theme btn-theme-sm btn-default-bg-apropos text-uppercase>Pour une évaluation de projet/a> /div> /div> /div> div classitem> img classimg-responsive srcimg/1920x1080/03.jpg altSlider Image> div classcontainer> div classcarousel-centered> div classmargin-b-40> h2 classcarousel-title>Réalisation/h2> p>Avec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique/p> /div> a href/contact classbtn-theme btn-theme-sm btn-default-bg-apropos text-uppercase>Pour une évaluation de projet/a> /div> /div> /div> /div> /div> !-- SLIDER --> !-- PLAYER HORIZONTAL --> !-- PLAYER HORIZONTAL --> !-- PAGE LAYOUT --> !-- Service div classbg-color-sky-light data-auto-heighttrue> div classcontent-lg container> div classrow row-space-1 margin-b-2> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.3s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-chemistry>/i> /div> div classservice-info> h3>Art Of Coding/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.2s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-screen-tablet>/i> /div> div classservice-info> h3>Responsive Design/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.1s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-badge>/i> /div> div classservice-info> h3>Feature Reach/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> /div> --> !--// end row --> !--div classrow row-space-1> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.4s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-notebook>/i> /div> div classservice-info> h3>Useful Documentation/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.5s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-speedometer>/i> /div> div classservice-info> h3>Fast Delivery/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.6s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-badge>/i> /div> div classservice-info> h3>Free Plugins/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> /div> --> !--// end row --> /div> /div> !-- End Service --> div classbg-color-sky-light overflow-h> div classcontent container> div classrow> div classcol-sm-9> p> span classfs-2 styledisplay:inline-block;font-weight:700;font-size:clamp(20px,1.2vw,26px);line-height:1.15;> h2> img srcimg/icones/icone-essentiel.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Avec SONOspan classsonoklip-text>KLIP/span>/h2> blockquote classblockquote>Chaque projet se transforme en une expérience sonore et visuelle unique/blockquote> /span> p>Nous créons des bandes sonores sur mesure ou issues de notre catalogue, produisons des livres audio immersifs pour tous types de contenus, et réalisons des créations multimédias complètes alliant graphisme, vidéo, podcast, site web ou événementiel/p> /p> /div> /div> /div> /div> !-- Latest Products --> div classcontent-sm container> div classrow margin-b-40> div classcol-sm-6 mt-3> h2> img srcimg/icones/icone-produits.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Produits et Services /h2> /div> /div> !--// end row --> div classrow> !-- Latest Products --> div classcol-sm-4 sm-margin-b-50> !--div classmargin-b-20> div classwow zoomIn data-wow-duration.3 data-wow-delay.1s> img classimg-responsive srcimg/970x647/01.jpg altLatest Products Image> /div> /div>--> h4>a href#>Bande sonore/a> !--span classtext-uppercase margin-l-20>Management/span>-->/h4> p>Nous composons des bandes sonores sur mesure qui renforcent lémotion, soutiennent le récit et marquent les esprits pour vos projets, b>ainsi que via notre catalogue/b> de créations originales/p> !--a classlink hreftrame.html>Read More/a>--> /div> !-- End Latest Products --> !-- Latest Products --> div classcol-sm-4 sm-margin-b-50> !--div classmargin-b-20> div classwow zoomIn data-wow-duration.3 data-wow-delay.1s> img classimg-responsive srcimg/970x647/02.jpg altLatest Products Image> /div> /div>--> h4>a href#>Livre audio/a> !--span classtext-uppercase margin-l-20>Development/span>-->/h4> p>Nous mettons à disposition nos voix, notre sens du rythme et notre oreille musicale pour donner vie à vos textes, quil sagisse de b>romans, ouvrages destinés à lapprentissage ou contenus narratifs/b>/p> !--a classlink hreflivre.html>Read More/a>--> /div> !-- End Latest Products --> !-- Latest Products --> div classcol-sm-4 sm-margin-b-50> !--div classmargin-b-20> div classwow zoomIn data-wow-duration.3 data-wow-delay.1s> img classimg-responsive srcimg/970x647/03.jpg altLatest Products Image> /div> /div>--> h4>a href#>Multimédia/a> !--span classtext-uppercase margin-l-20>Design/span>-->/h4> p>Nous concevons et réalisons des projets multimédias clairs, rythmés et engageants, alliant exigence sonore et visuelle : b>événementielle, graphisme, site Web, podcast, vidéo, chaîne YouTube, etc/b>/p> !--a classlink hrefformation.html>Read More/a>--> /div> !-- End Latest Products --> /div> !--// end row --> /div> !-- End Latest Products --> !-- Playlists Section --> section idproducts classpromo-section overflow-h> div classcontent-xs container> div classrow> div classcol-xs-12> div classsection-header stylemargin-bottom:15px;> h2 stylemargin:0 0 5px;> img srcimg/icones/icone-portfolio.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Portfolio audio/h2> p classtext-muted stylemargin:0;>Chaque produit inclut son image et sa playlist./p> /div> !-- Onglets Bootstrap 3 --> div classtabs-wrapper> div classtabs-arrows> button classtabs-arrow left idtabsArrowLeft aria-labelVoir précédents>←/button> button classtabs-arrow right idtabsArrowRight aria-labelVoir suivants>→/button> /div> ul classnav nav-tabs idprodTabs> li classactive> a href#pane-16 data-toggletab> SONOKLIP /a> /li> li class> a href#pane-15 data-toggletab> Bande sonore /a> /li> li class> a href#pane-14 data-toggletab> Livre audio /a> /li> li class> a href#pane-18 data-toggletab> Multimédia /a> /li> /ul> /div> div classtab-content idprodTabsContent stylemargin-top:15px;> div classtab-pane fade in active idpane-16> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251027_003118_a89bc070.jpg altSONOKLIP classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>SONOKLIP/h3> p>Nous accompagnons producteurs, réalisateurs, artistes indépendants, agences créatives et marques dans la création de contenus audio et visuels à forte valeur ajoutée, alliant expertise technique, sensibilité artistique et compréhension des besoins narratifs. Notre objectif : offrir une signature sonore et visuelle unique à chaque projet/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl18_5b8911_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl18_5b8911_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl18_5b8911_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : SONOKLIP/div> /div> audio idpl18_5b8911_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl18_5b8911_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl18_5b8911_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251109_005943_d71c0e4d.wav data-mimeaudio/wav data-index0> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_020221_efebbb91.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_020342_2ed7e004.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl18_5b8911_audio); const list document.getElementById(pl18_5b8911_list); const playBtn document.getElementById(pl18_5b8911_play); const prevBtn document.getElementById(pl18_5b8911_prev); const nextBtn document.getElementById(pl18_5b8911_next); const panel document.getElementById(pl18_5b8911_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> div classtab-pane fade idpane-15> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251027_000213_8407fb91.jpg altBande sonore classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>Bande sonore/h3> p>Nous composons des bandes sonores sur mesure qui renforcent l'émotion, soutiennent le récit et marquent les esprits pour vos projets, ainsi que via notre catalogue de créations originales/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl16_56bfee_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl16_56bfee_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl16_56bfee_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : Bande sonore/div> /div> audio idpl16_56bfee_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl16_56bfee_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl16_56bfee_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251027_001058_8c556c93.wav data-mimeaudio/wav data-index0> span classtrack-title text-truncate stylemax-width:85%;>1 - Bande sonore - tutita tatitu mix 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_001152_a9a1bb8b.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>2 - TAGUEDUL HGAAAA 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_001904_cf87c373.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>3 - piano reverse mix 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_002112_ca59db39.mp3 data-mimeaudio/mpeg data-index3> span classtrack-title text-truncate stylemax-width:85%;>4 - Action Film/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221222_5534edb9.mp3 data-mimeaudio/mpeg data-index4> span classtrack-title text-truncate stylemax-width:85%;>5 - Film 1 lounge/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221328_fddfaf96.wav data-mimeaudio/wav data-index5> span classtrack-title text-truncate stylemax-width:85%;>6 - Beat 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221522_c8a78510.mp3 data-mimeaudio/mpeg data-index6> span classtrack-title text-truncate stylemax-width:85%;>7 - ERIK - That's right/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221911_144a7bbd.mp3 data-mimeaudio/mpeg data-index7> span classtrack-title text-truncate stylemax-width:85%;>8 - ERIK - Song 1 Galaxy 4/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_222005_803ff5f8.mp3 data-mimeaudio/mpeg data-index8> span classtrack-title text-truncate stylemax-width:85%;>9 - ERIK - Lounge P1A/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_223648_7a50ef8a.mp3 data-mimeaudio/mpeg data-index9> span classtrack-title text-truncate stylemax-width:85%;>10 - ERIK - Piste 22/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_225920_4fb97c65.wav data-mimeaudio/wav data-index10> span classtrack-title text-truncate stylemax-width:85%;>11 - GROOVY 3 - Yé 11111/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_230040_b39bf5a1.wav data-mimeaudio/wav data-index11> span classtrack-title text-truncate stylemax-width:85%;>12 - GROOVY 3 - Life12345/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_230633_358a454a.wav data-mimeaudio/wav data-index12> span classtrack-title text-truncate stylemax-width:85%;>13 - GROOVY 3 - Piano - Opus 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_230841_3b42546e.wav data-mimeaudio/wav data-index13> span classtrack-title text-truncate stylemax-width:85%;>14 - GROOVY 3 - 11W - piano 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231006_f896c062.wav data-mimeaudio/wav data-index14> span classtrack-title text-truncate stylemax-width:85%;>15 - GROOVY 3 - Jazzy Lounge/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231110_85550c30.wav data-mimeaudio/wav data-index15> span classtrack-title text-truncate stylemax-width:85%;>16 - GROOVY 3 - Jazzy Intro/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231253_ad2c0d92.wav data-mimeaudio/wav data-index16> span classtrack-title text-truncate stylemax-width:85%;>17 - GROOVY 3 - Free Time/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231422_9c14a10d.wav data-mimeaudio/wav data-index17> span classtrack-title text-truncate stylemax-width:85%;>18 - GROOVY 3 - Trippy Folk/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231605_a55fdc65.wav data-mimeaudio/wav data-index18> span classtrack-title text-truncate stylemax-width:85%;>19 - GROOVY 3 - Blues style 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231813_e11e9583.wav data-mimeaudio/wav data-index19> span classtrack-title text-truncate stylemax-width:85%;>20 - GROOVY 3 - Good Time/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_232109_b9525f43.wav data-mimeaudio/wav data-index20> span classtrack-title text-truncate stylemax-width:85%;>21 - GROOVY 3 - Le nouveau monde/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_211308_91f8eada.wav data-mimeaudio/wav data-index21> span classtrack-title text-truncate stylemax-width:85%;>22 - free song SAXOPHONE/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_211427_7c347525.wav data-mimeaudio/wav data-index22> span classtrack-title text-truncate stylemax-width:85%;>23 - free song sax Mix/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_212156_4cd0c332.wav data-mimeaudio/wav data-index23> span classtrack-title text-truncate stylemax-width:85%;>24 - Film_free song mix 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_211618_2e1fa105.wav data-mimeaudio/wav data-index24> span classtrack-title text-truncate stylemax-width:85%;>25 - Intro_Film_yin song 1 MIX/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_212615_3a2897a8.wav data-mimeaudio/wav data-index25> span classtrack-title text-truncate stylemax-width:85%;>26 - Film - style country/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_212752_d064921f.wav data-mimeaudio/wav data-index26> span classtrack-title text-truncate stylemax-width:85%;>27 - kick song 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_213357_151cb40e.wav data-mimeaudio/wav data-index27> span classtrack-title text-truncate stylemax-width:85%;>28 - Film_loop_Wolf MIX/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_213506_7cdca874.wav data-mimeaudio/wav data-index28> span classtrack-title text-truncate stylemax-width:85%;>29 - Film_Piano - MIX1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_213613_dc9e707e.wav data-mimeaudio/wav data-index29> span classtrack-title text-truncate stylemax-width:85%;>30 - Film_Piano Wow/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_225753_2c443a1d.wav data-mimeaudio/wav data-index30> span classtrack-title text-truncate stylemax-width:85%;>31 - Klip Lounge - 01 Spirale/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_230028_9cec74b3.wav data-mimeaudio/wav data-index31> span classtrack-title text-truncate stylemax-width:85%;>32 Klip Lounge - Feel Free/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_230240_b4fcd7ab.wav data-mimeaudio/wav data-index32> span classtrack-title text-truncate stylemax-width:85%;>33 - Klip Lounge - Zoom/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_230916_b0987db4.wav data-mimeaudio/wav data-index33> span classtrack-title text-truncate stylemax-width:85%;>34 - Klip Lounge - Prélude 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_231653_ea922bda.wav data-mimeaudio/wav data-index34> span classtrack-title text-truncate stylemax-width:85%;>35 - Klip Lounge - Zoom mix/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_233653_9bcfd7f0.wav data-mimeaudio/wav data-index35> span classtrack-title text-truncate stylemax-width:85%;>36 - Klip Lounge - Guitare - piano/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_234037_7c1484ba.wav data-mimeaudio/wav data-index36> span classtrack-title text-truncate stylemax-width:85%;>37 - Al - 01 Argentina/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_234208_8cf2c8dd.wav data-mimeaudio/wav data-index37> span classtrack-title text-truncate stylemax-width:85%;>38 - Al - 05 Argentina II/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_234417_48f677a2.wav data-mimeaudio/wav data-index38> span classtrack-title text-truncate stylemax-width:85%;>49 - Al - 06 Funk Blues 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_190446_261ccb8f.wav data-mimeaudio/wav data-index39> span classtrack-title text-truncate stylemax-width:85%;>40 - Al - Temps Libre/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_190618_37537953.wav data-mimeaudio/wav data-index40> span classtrack-title text-truncate stylemax-width:85%;>41- Al - F1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_190746_9ddae23a.wav data-mimeaudio/wav data-index41> span classtrack-title text-truncate stylemax-width:85%;>42 Al - Jazzy Intro 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_191031_7a558220.wav data-mimeaudio/wav data-index42> span classtrack-title text-truncate stylemax-width:85%;>43 - Al - UP W/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_191138_103cc2d1.wav data-mimeaudio/wav data-index43> span classtrack-title text-truncate stylemax-width:85%;>44 - Al - beat 1 piano/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_191248_5c4a92d7.wav data-mimeaudio/wav data-index44> span classtrack-title text-truncate stylemax-width:85%;>45 - Al - Universal Planet/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_212733_ddb71c6c.wav data-mimeaudio/wav data-index45> span classtrack-title text-truncate stylemax-width:85%;>46 - Al - Irish Mix (remix)/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_213059_5f77394e.wav data-mimeaudio/wav data-index46> span classtrack-title text-truncate stylemax-width:85%;>47 - Al - Kafé/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_213226_36cd61fd.wav data-mimeaudio/wav data-index47> span classtrack-title text-truncate stylemax-width:85%;>48 - Al - Une Hirondelle/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_213434_6fa29f36.wav data-mimeaudio/wav data-index48> span classtrack-title text-truncate stylemax-width:85%;>49 - Al - Lune W1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_233722_c0078785.wav data-mimeaudio/wav data-index49> span classtrack-title text-truncate stylemax-width:85%;>50 - GROOVY 3 - Groovy 11111/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251115_042210_8bdc30be.wav data-mimeaudio/wav data-index50> span classtrack-title text-truncate stylemax-width:85%;>51 - T1W/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl16_56bfee_audio); const list document.getElementById(pl16_56bfee_list); const playBtn document.getElementById(pl16_56bfee_play); const prevBtn document.getElementById(pl16_56bfee_prev); const nextBtn document.getElementById(pl16_56bfee_next); const panel document.getElementById(pl16_56bfee_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> div classtab-pane fade idpane-14> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251026_233406_440cecbe.jpg altLivre audio classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>Livre audio/h3> p>Nous mettons à disposition nos voix, notre sens du rythme et notre oreille musicale pour donner vie à vos textes, qu'il s'agisse de romans, ouvrages destinés à l'apprentissage ou contenus narratifs/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl17_4ff7d4_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl17_4ff7d4_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl17_4ff7d4_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : Livre audio/div> /div> audio idpl17_4ff7d4_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl17_4ff7d4_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl17_4ff7d4_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251109_223635_af0a084b.mp3 data-mimeaudio/mpeg data-index0> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Bottes/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_025238_1701f100.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Monsieur Alphonse Tremblay/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_020524_4938484c.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Monsieur Wilfrid - Lac St-Jean/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251112_022223_833dd6dc.mp3 data-mimeaudio/mpeg data-index3> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Le Lynx - chapitre 1/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251028_031802_1f2af728.wav data-mimeaudio/wav data-index4> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Beach Bum/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_195235_47aa8667.wav data-mimeaudio/wav data-index5> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Korto/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_013520_96c8092f.wav data-mimeaudio/wav data-index6> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Hot Tropique - Pierre Brume/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_224055_d80d83a6.wav data-mimeaudio/wav data-index7> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Jeanne Barret/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_224207_2fa5a38a.wav data-mimeaudio/wav data-index8> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Technologie USB/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_005717_a3942567.wav data-mimeaudio/wav data-index9> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Johny Cash/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251026_233307_1d081cbe.wav data-mimeaudio/wav data-index10> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Aznavour/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251026_234728_6f26ead6.wav data-mimeaudio/wav data-index11> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrai - Led Zeppelin/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251026_235025_a55d8919.wav data-mimeaudio/wav data-index12> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Jon Anderson - version anglaise/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl17_4ff7d4_audio); const list document.getElementById(pl17_4ff7d4_list); const playBtn document.getElementById(pl17_4ff7d4_play); const prevBtn document.getElementById(pl17_4ff7d4_prev); const nextBtn document.getElementById(pl17_4ff7d4_next); const panel document.getElementById(pl17_4ff7d4_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> div classtab-pane fade idpane-18> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251028_014544_7f7c1d82.png altMultimédia classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>Multimédia/h3> p>Nous concevons et réalisons des projets multimédias clairs, rythmés et engageants, alliant exigence sonore et visuelle : événementielle, graphisme, site Web, podcast, vidéo, chaîne YouTube/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl20_28f348_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl20_28f348_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl20_28f348_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : Multimédia/div> /div> audio idpl20_28f348_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl20_28f348_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl20_28f348_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251030_060017_3a50dad8.wav data-mimeaudio/wav data-index0> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP - Vidéo/Reportage/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_231431_cb3de879.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP - Multimédia/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_231452_8e6342f3.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP - Multimédia 1/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl20_28f348_audio); const list document.getElementById(pl20_28f348_list); const playBtn document.getElementById(pl20_28f348_play); const prevBtn document.getElementById(pl20_28f348_prev); const nextBtn document.getElementById(pl20_28f348_next); const panel document.getElementById(pl20_28f348_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> /div> /div> /div> /div> /section> !-- End Playlists Section --> !-- Testimonials --> div classcontent-lg container> div classrow> div classcol-sm-9> h2> img srcimg/icones/icone-avis.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Expériences clients/h2> !-- Swiper Testimonials --> div classswiper-slider swiper-testimonials> !-- Swiper Wrapper --> div classswiper-wrapper> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Excellente collaboration ! La trame sonore créée a parfaitement sublimé notre vidéo. Équipe très professionnelle et à lécoute. /div> p>span classfweight-700 color-link>Sophie L./span>, Réalisatrice/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Les formations audio sont claires et engageantes. Mes étudiants apprennent beaucoup plus facilement grâce à ce format. /div> p>span classfweight-700 color-link>Marc D./span>, Formateur/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Une qualité sonore exceptionnelle et un vrai sens artistique. Je recommande vivement pour tout projet créatif ! /div> p>span classfweight-700 color-link>Clara M./span>, Chorégraphe/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Très satisfait du rendu pour notre podcast dentreprise. Le son est net, dynamique, et fidèle à notre image de marque. /div> p>span classfweight-700 color-link>Julien P./span>, Responsable communication/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Rapidité, professionnalisme et créativité. Une équipe qui sait vraiment comment donner vie à vos idées avec le son. /div> p>span classfweight-700 color-link>Élodie R./span>, Éditrice/p> /blockquote> /div> /div> !-- End Swiper Wrapper --> !-- Pagination --> div classswiper-testimonials-pagination>/div> /div> !-- End Swiper Testimonials --> /div> /div> !--// end row --> /div> !-- End Testimonials --> !-- Pricing --> !--div classbg-color-sky-light> div classcontent-lg container> div classrow row-space-1> div classcol-sm-4 sm-margin-b-2> --> !-- Pricing --> !--div classpricing> div classmargin-b-30> i classpricing-icon icon-chemistry>/i> h3>Starter Kit span> - $/span> 49/h3> p>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> ul classlist-unstyled pricing-list margin-b-50> li classpricing-list-item>Basic Features/li> li classpricing-list-item>Up to 5 products/li> li classpricing-list-item>50 Users Panels/li> /ul> a hrefpricing.html classbtn-theme btn-theme-sm btn-default-bg text-uppercase>Choose/a> /div> --> !-- End Pricing --> !--/div> div classcol-sm-4 sm-margin-b-2> --> !-- Pricing --> !--div classpricing pricing-active> div classmargin-b-30> i classpricing-icon icon-badge>/i> h3>Professional span> - $/span> 149/h3> p>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> ul classlist-unstyled pricing-list margin-b-50> li classpricing-list-item>Basic Features/li> li classpricing-list-item>Up to 100 products/li> li classpricing-list-item>100 Users Panels/li> /ul> a hrefpricing.html classbtn-theme btn-theme-sm btn-default-bg text-uppercase>Choose/a> /div> --> !-- End Pricing --> !--/div> --> !--div classcol-sm-4> --> !-- Pricing --> !--div classpricing> div classmargin-b-30> i classpricing-icon icon-shield>/i> h3>Advanced span> - $/span> 249/h3> p>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> ul classlist-unstyled pricing-list margin-b-50> li classpricing-list-item>Extended Features/li> li classpricing-list-item>Unlimited products/li> li classpricing-list-item>Unlimited Users Panels/li> /ul> a hrefpricing.html classbtn-theme btn-theme-sm btn-default-bg text-uppercase>Choose/a> /div> --> !-- End Pricing --> !--/div> /div> --> !--// end row --> !--/div> /div> --> !-- End Pricing --> !-- Work --> div classbg-color-sky-light overflow-h> div classcontent-lg container> div classrow margin-b-40> div classcol-sm-6> h2> img srcimg/icones/icone-boofer.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Passionné de laudio !/h2> p>Nous accompagnons les producteurs, réalisateurs, les artistes indépendants, les agences créatives et les marques dans la création de contenu sonore de qualité professionnelle, avec une signature musicale forte et actuelle./p> /div> /div> !--// end row --> !-- Masonry Grid --> div classmasonry-grid> div classmasonry-grid-sizer col-xs-6 col-sm-6 col-md-1>/div> div classmasonry-grid-item col-xs-12 col-sm-6 col-md-8> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.1s> div classwork-overlay> img classfull-width img-responsive srcimg/800x400/01.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.2s> div classwork-overlay> img classfull-width img-responsive srcimg/397x400/01.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.3s> div classwork-overlay> img classfull-width img-responsive srcimg/397x300/01.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.4s> div classwork-overlay> img classfull-width img-responsive srcimg/397x300/02.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.5s> div classwork-overlay> img classfull-width img-responsive srcimg/397x300/03.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> /div> !-- End Masonry Grid --> /div> /div> !-- End Work --> !-- Clients --> div> div classcontent-lg container> !-- Swiper Clients --> div classswiper-slider swiper-clients> !-- Swiper Wrapper --> div classswiper-wrapper> div classswiper-slide> img classswiper-clients-img srcimg/clients/01.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/02.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/03.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/04.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/05.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/06.png altClients Logo> /div> /div> !-- End Swiper Wrapper --> /div> !-- End Swiper Clients --> /div> /div> !-- End Clients --> !-- END PAGE LAYOUT --> !-- FOOTER --> footer classfooter> div classcontent-sm container> !-- Copyright --> div classrow> div classcol-xs-12 col-sm-6> img classfooter-logo srcimg/logo.png altSonoklip Logo> /div> div classcol-xs-12 col-sm-6 text-right> p classmargin-b-0 copyright> strong classcontact-phone>438.825.8702/strong>br> a hrefmailto:eric.imedia@gmail.com classcontact-email>eric.imedia@gmail.com/a>br>br> a classcolor-base fweight-700 hrefhttp://keenthemes.com/preview/asentus/>Asentus/a> propulsé par: a classcolor-base fweight-700 mb-4 hrefhttps://sonoklip.com/>sonoklip.com/a> p classcontact-droits>Tous droits réservés span classcontact-copy>©/span> span idyear>/span>/p> /p> /div> /div> !-- End Copyright --> /div> /footer> !-- END FOOTER --> !-- Back To Top --> a hrefjavascript:void(0); classjs-back-to-top back-to-top>img src/img/top.png classarrow-top altHaut>/a> !-- JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) --> !-- CORE PLUGINS --> script srcvendor/jquery.min.js typetext/javascript>/script> script srcvendor/jquery-migrate.min.js typetext/javascript>/script> script srcvendor/bootstrap/js/bootstrap.min.js typetext/javascript>/script> !-- script srcvendor/jquery.player.js typetext/javascript>/script> --> script src/js/pv-player-loader.js>/script> !-- PAGE LEVEL PLUGINS --> script srcvendor/jquery.easing.js typetext/javascript>/script> script srcvendor/jquery.back-to-top.js typetext/javascript>/script> script srcvendor/jquery.smooth-scroll.js typetext/javascript>/script> script srcvendor/jquery.wow.min.js typetext/javascript>/script> script srcvendor/swiper/js/swiper.jquery.min.js typetext/javascript>/script> script srcvendor/masonry/jquery.masonry.pkgd.min.js typetext/javascript>/script> script srcvendor/masonry/imagesloaded.pkgd.min.js typetext/javascript>/script> !-- PAGE LEVEL SCRIPTS --> script srcjs/layout.min.js typetext/javascript>/script> script srcjs/components/wow.min.js typetext/javascript>/script> script srcjs/components/swiper.min.js typetext/javascript>/script> script srcjs/components/masonry.min.js typetext/javascript>/script> /body> !-- END BODY -->script> // Insère lannée actuelle dans #year document.getElementById(year).textContent new Date().getFullYear();/script>script> (function () { // $js doit contenir du JSON valide (array dobjets {src,title,type?} ou array de strings) // On normalise pour toujours obtenir un tableau propre dans window.PV_PLAYER_PLAYLIST var raw ; // garde ton echo PHP function normOne(t) { if (!t) return null; if (typeof t string) return { title: t.split(/).pop().replace(/\.^.+$/, ).replace(/_-+/g, ), src: t, type: }; if (typeof t object && t.src) return { title: (t.title && String(t.title)) || (String(t.src).split(/).pop() || ).replace(/\.^.+$/, ).replace(/_-+/g, ), src: String(t.src), type: String(t.type || ) }; return null; } try { if (typeof raw string) raw JSON.parse(raw); } catch (e) { raw ; } var pl Array.isArray(raw) ? raw.map(normOne).filter(Boolean) : ; // Expose window.PV_PLAYER_PLAYLIST pl; // Back-compat: si PlayerPlaylist n’existe pas, on la fournit ; sinon on la laisse en place if (!Array.isArray(window.PlayerPlaylist) || !window.PlayerPlaylist.length) { window.PlayerPlaylist pl.slice(); } })();/script>script>document.addEventListener(DOMContentLoaded, () > { const audio document.getElementById(pvAudio); // Si la barre “music-player-bar” gère déjà #pvAudio, on s’abstient if (!audio || audio.closest(#music-player-bar)) return; const pl Array.isArray(window.PV_PLAYER_PLAYLIST) ? window.PV_PLAYER_PLAYLIST : ; if (!pl.length) return; audio.src pl0.src || ; audio.autoplay true; audio.preload auto; audio.playsInline true; audio.muted false; audio.load(); audio.play().catch(err > { console.warn(Autoplay bloqué, (err && err.name) || err); }); document.addEventListener(visibilitychange, () > { if (!document.hidden && audio.paused) audio.play().catch(() > {}); });});/script>script>/* BARRE HORIZONTALE #music-player-bar — autoplay sonore, sans UI conflictuelle */(function(){ use strict; function esc(t){return (t||).replace(/&>/g,s>({&:&,:<,>:>,:",:'}s));} function niceFromSrc(src){try{var p(src||).split(?)0,bp.split(/).pop()||;return b.replace(/\.A-Za-z0-9+$/,).replace(/_-+/g, ).trim()||Sans titre;}catch(e){return Sans titre;}} function normTrack(t){ if(!t) return null; if(typeof tstring) return {title:niceFromSrc(t),src:t,type:}; if(t.src && typeof t.srcstring) return {title:t.title||niceFromSrc(t.src),src:t.src,type:t.type||}; if(t.src && t.src.src) return {title:t.title||niceFromSrc(t.src.src),src:t.src.src,type:t.src.type||t.type||}; return null; } document.addEventListener(DOMContentLoaded, function(){ var bar document.getElementById(music-player-bar); if(!bar) return; var audio bar.querySelector(#pvAudio); var titleEl bar.querySelector(#pvTrackTitle); var progress bar.querySelector(#pvProgress); var seek bar.querySelector(#pvSeekBar); var vol bar.querySelector(#pvVolume); var btnPlay bar.querySelector(#pvPlayPauseBtn); var btnNext bar.querySelector(#pvNextBtn); var btnToggle bar.querySelector(#pvPlaylistToggle); var panel bar.querySelector(#pvPlaylistPanel); var list bar.querySelector(#pvPlaylist); if(!audio||!titleEl||!progress||!seek||!vol||!btnPlay||!btnNext||!btnToggle||!panel||!list){ console.warn(BAR DOM manquant.); return; } if(audio._barInit) return; audio._barInit true; btnPlay.type button; // Préférences audio.autoplay true; audio.preload auto; audio.playsInline true; audio.muted false; // Playlist source (priorité à PlayerPlaylist si fournie) var playlist ; if(Array.isArray(window.PlayerPlaylist) && window.PlayerPlaylist.length){ playlist window.PlayerPlaylist.map(normTrack).filter(Boolean); }else if(Array.isArray(window.PV_PLAYER_PLAYLIST) && window.PV_PLAYER_PLAYLIST.length){ playlist window.PV_PLAYER_PLAYLIST.map(normTrack).filter(Boolean); } if(!playlist.length){ console.warn(BAR Aucune piste.); return; } function sumFirstNHeights(ul,n){ var itemsul?ul.children:,total0; for(var i0;iMath.min(n,items.length);i++){ var liitemsi,rli.getBoundingClientRect(),csgetComputedStyle(li); total+r.height+(parseFloat(cs.marginTop)||0)+(parseFloat(cs.marginBottom)||0); } var csulgetComputedStyle(ul); total+(parseFloat(csul.paddingTop)||0)+(parseFloat(csul.paddingBottom)||0) +(parseFloat(csul.borderTopWidth)||0)+(parseFloat(csul.borderBottomWidth)||0); return total||48*4; } function ensureViewport4(){ if(list.children.length4){ list.classList.remove(pl-scroll); list.style.maxHeight; list.style.overflowY; return; } var hsumFirstNHeights(list,4); list.classList.add(pl-scroll); list.style.maxHeighth+px; list.style.overflowYauto; } function pinActiveAtTop(idx){ var lilist.querySelector(lidata-index+idx+); if(!li) return; var prevlist.style.scrollBehavior; list.style.scrollBehaviorauto; var dli.getBoundingClientRect().top-list.getBoundingClientRect().top; list.scrollTop+d; list.scrollTopMath.max(0, Math.min(list.scrollTop, list.scrollHeight-list.clientHeight)); list.style.scrollBehaviorprev||; } function bringActiveFirst(idx){ var li list.querySelector(.pv-audio__itemdata-index+idx+); if (!li) return; if (list.firstElementChild ! li) list.insertBefore(li, list.firstElementChild); list.style.scrollBehavior auto; list.scrollTop 0; } function highlightCurrent(idx){ list.querySelectorAll(.pv-audio__item).forEach(function(li){ var on String(li.dataset.index)String(idx); li.classList.toggle(is-current, on); li.classList.toggle(is-active, on); // compat li.setAttribute(aria-selected, on?true:false); }); } var index0, _srcSet ; function setAudioSource(tr){ var next tr && tr.src ? String(tr.src) : ; if (!next || _srcSet next) return; _srcSet next; audio.src next; } function highlightCurrent(idx){ list.querySelectorAll(.pv-audio__item).forEach(function(li){ var on String(li.dataset.index)String(idx); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on?true:false); }); } function play(){ if (!audio.src && playlist.length) setAudioSource(playlistindex); audio.muted false; return audio.play().then(function(){ bar.classList.add(is-playing); btnPlay.setAttribute(aria-pressed,true); }).catch(function(err){ console.warn(Autoplay refusé, (err && err.name)||err); }); } function pause(){ audio.pause(); bar.classList.remove(is-playing); btnPlay.setAttribute(aria-pressed,false); } function load(i,autoplay){ if(!playlist.length) return; index((i%playlist.length)+playlist.length)%playlist.length; var trplaylistindex; setAudioSource(tr); titleEl.textContenttr.title||niceFromSrc(tr.src); highlightCurrent(index); ensureViewport4(); bringActiveFirst(index); if(autoplay) play(); else pause(); } function buildList(){ list.innerHTML; for(var i0;iplaylist.length;i++){ (function(i){ var trplaylisti, lidocument.createElement(li); li.classNamepv-audio__item; li.setAttribute(role,option); li.dataset.indexString(i); li.innerHTMLbutton classpv-audio__play typebutton data-index+i+>▶/button> span classpv-audio__t>+esc(tr.title||niceFromSrc(tr.src))+/span>; li.addEventListener(click,function(){ load(i,true); }); li.addEventListener(keydown,function(e){ if(e.keyEnter||e.key ){ e.preventDefault(); load(i,true);} }); list.appendChild(li); })(i); } ensureViewport4(); requestAnimationFrame(ensureViewport4); } // Contrôles btnPlay.addEventListener(click, function(e){ e.preventDefault(); if(audio.paused) play(); else pause(); }); btnNext.addEventListener(click, function(e){ e.preventDefault(); load(index+1,true); }); function setOpen(open){ bar.classList.toggle(is-open, !!open); btnToggle.setAttribute(aria-expanded, open?true:false); panel.hidden !open; } btnToggle.addEventListener(click, function(e){ e.preventDefault(); var open btnToggle.getAttribute(aria-expanded)!true; setOpen(open); if(open){ ensureViewport4(); requestAnimationFrame(function(){ ensureViewport4(); pinActiveAtTop(index); }); setTimeout(function(){ ensureViewport4(); pinActiveAtTop(index); },120); } }); document.addEventListener(click, function(e){ if (bar.classList.contains(is-open) && !bar.contains(e.target)) setOpen(false); }); document.addEventListener(keydown, function(e){ if(e.keyEscape) setOpen(false); }); // Progress + seek function updateProgress(){ var p(audio.currentTime/(audio.duration||1))*100; progress.style.widthp+%; seek.setAttribute(aria-valuenow, String(Math.round(p||0))); } audio.addEventListener(timeupdate,updateProgress); audio.addEventListener(loadedmetadata,updateProgress); seek.addEventListener(click, function(e){ var rseek.getBoundingClientRect(), ratio(e.clientX-r.left)/r.width; if(audio.duration) audio.currentTimeMath.max(0,Math.min(audio.duration, ratio*audio.duration)); }); seek.addEventListener(keydown, function(e){ if(ArrowLeft,ArrowRight,Home,End.indexOf(e.key)>-1) e.preventDefault(); if(e.keyArrowLeft) audio.currentTimeMath.max(0,(audio.currentTime||0)-5); if(e.keyArrowRight) audio.currentTimeMath.min((audio.duration||0),(audio.currentTime||0)+5); if(e.keyHome) audio.currentTime0; if(e.keyEnd) audio.currentTimeaudio.duration||0; }); // Volume vol.addEventListener(input, function(){ audio.volumeMath.max(0,Math.min(1,parseFloat(vol.value||0))); }); audio.volumeMath.max(0,Math.min(1,parseFloat(vol.value||0.9))); // Auto-next audio.addEventListener(ended, function(){ load(index+1,true); }); // Init buildList(); index0; setAudioSource(playlistindex); titleEl.textContentplaylistindex.title||niceFromSrc(playlistindex.src); highlightCurrent(index); ensureViewport4(); pinActiveAtTop(index); // Autoplay play(); document.addEventListener(visibilitychange, function(){ if (!document.hidden && audio.paused) play(); }); });})();/script>script>/* Flèches d’onglets robustes : ne plante pas si #prodTabs absent */jQuery(function($) { var $tabs $(#prodTabs); var $left $(#tabsArrowLeft); var $right $(#tabsArrowRight); function updateArrows() { if (!$tabs.length || !$tabs0) { $left.hide(); $right.hide(); return; } var el $tabs0; var scrollLeft el.scrollLeft || 0; var maxScroll Math.max(0, (el.scrollWidth || 0) - $tabs.outerWidth()); if (maxScroll 0) { $left.hide(); $right.hide(); return; } $left.toggle(scrollLeft > 0); $right.toggle(scrollLeft maxScroll - 5); } if ($left.length) $left.on(click, function() { if (!$tabs.length) return; $tabs.animate({ scrollLeft: Math.max(0, $tabs.scrollLeft() - 160) }, 180, updateArrows); }); if ($right.length) $right.on(click, function() { if (!$tabs.length) return; $tabs.animate({ scrollLeft: $tabs.scrollLeft() + 160 }, 180, updateArrows); }); if ($tabs.length) { $tabs.on(scroll, updateArrows); $(window).on(resize, updateArrows); // multiples tentatives pour cas display:none au load updateArrows(); setTimeout(updateArrows, 120); setTimeout(updateArrows, 400); }});/script>script>(function(){ var root document.getElementById(music-player-bar) || document.querySelector(.pv-audio); var toggle document.getElementById(pvPlaylistToggle); var panel document.getElementById(pvPlaylistPanel); if(!root || !toggle || !panel) return; function setOpen(open){ root.classList.toggle(is-open, !!open); toggle.setAttribute(aria-expanded, open ? true : false); panel.hidden !open; } setOpen(false); toggle.addEventListener(click, function(e){ e.preventDefault(); setOpen(toggle.getAttribute(aria-expanded) ! true); }, true); document.addEventListener(keydown, function(e){ if(e.key Escape) setOpen(false); }, false);})();/script>script>(function(){ function getActiveRoot(){ return document.querySelector(#prodTabsContent .tab-pane.active .product-player) || document.querySelector(.product-player); } function getRefs(){ var root getActiveRoot(); if(!root) return {}; return { root: root, list: root.querySelector(#pvPlaylist), audio: root.querySelector(#pvAudio), titleEl: root.querySelector(#pvTrackTitle), ppBtn: root.querySelector(#pvPlayPauseBtn), nextBtn: root.querySelector(#pvNextBtn), volIn: root.querySelector(#pvVolume), seekBar: root.querySelector(#pvSeekBar), progress: root.querySelector(#pvProgress) }; } function esc(t){ return (t||).replace(/&>/g, s>({ &:&,:<,>:>,:",:' }s)); } function niceFromSrc(src){ try{ var s(src||).split(?)0, bs.split(/).pop()||; return b.replace(/\.A-Za-z0-9+$/,).replace(/_-+/g, ).trim()||Sans titre; }catch(e){ return Sans titre; } } var refs getRefs(); if(!refs.audio) return; var pl Array.isArray(window.PV_PLAYER_PLAYLIST) ? window.PV_PLAYER_PLAYLIST.slice() : ; pl pl.filter(function(t){ return t && t.src; }); var cur 0; function labelOf(tr){ var t(tr&&tr.title||).trim(); return t || niceFromSrc(tr&&tr.src); } function setAudioSource(src,type){ var s refs.audio.querySelector(source); if(!s){ sdocument.createElement(source); refs.audio.appendChild(s); } s.src src; s.type type||; refs.audio.load(); } function rebuildList(){ if(!refs.list) return; refs.list.innerHTML; pl.forEach(function(tr,i){ var lidocument.createElement(li); li.classNamepv-audio__item; li.setAttribute(role,option); li.dataset.indexi; li.innerHTMLbutton typebutton classpv-audio__play data-index+i+ aria-labelLire +esc(labelOf(tr))+>▶/button> span classpv-audio__t>+esc(labelOf(tr))+/span>; refs.list.appendChild(li); }); } function highlightCurrent(){ if(!refs.list) return; .forEach.call(refs.list.querySelectorAll(.pv-audio__item), function(li){ li.classList.toggle(is-current, String(li.dataset.index)String(cur)); }); } function pinActiveAtTop(){ if(!refs.list) return; var li refs.list.querySelector(.pv-audio__itemdata-index+cur+); if(!li) return; var prev refs.list.style.scrollBehavior; refs.list.style.scrollBehaviorauto; var d li.getBoundingClientRect().top - refs.list.getBoundingClientRect().top; refs.list.scrollTop Math.max(0, Math.min(refs.list.scrollTop + d, refs.list.scrollHeight - refs.list.clientHeight)); refs.list.style.scrollBehavior prev || ; } function playIndex(i){ var trpli; if(!tr) return; curi; setAudioSource(tr.src, tr.type); if(refs.titleEl) refs.titleEl.textContent labelOf(tr); highlightCurrent(); pinActiveAtTop(); refs.audio.play().catch(()>{}); } // Build + wire rebuildList(); highlightCurrent(); pinActiveAtTop(); if(refs.list){ refs.list.addEventListener(click, function(e){ var be.target.closest(data-index); if(!b) return; playIndex(parseInt(b.dataset.index,10)||0); }, true); } if(refs.ppBtn) refs.ppBtn.addEventListener(click, function(e){ e.preventDefault(); if((!refs.audio.currentSrc||refs.audio.currentSrc) && pl.length){ return playIndex(cur); } if(refs.audio.paused) refs.audio.play().catch(()>{}); else refs.audio.pause(); }, true); if(refs.nextBtn) refs.nextBtn.addEventListener(click, function(e){ e.preventDefault(); if(!pl.length) return; playIndex((cur+1)%pl.length); }, true); // Progress if(refs.progress || refs.seekBar){ function updateProgress(){ if(!refs.progress || !refs.audio.duration) return; var p(refs.audio.currentTime/refs.audio.duration)*100; refs.progress.style.width(isFinite(p)?Math.max(0,Math.min(100,p)):0)+%; if(refs.seekBar){ refs.seekBar.setAttribute(aria-valuemin,0); refs.seekBar.setAttribute(aria-valuemax,100); refs.seekBar.setAttribute(aria-valuenow, String(Math.round(p||0))); } } refs.audio.addEventListener(timeupdate, updateProgress, false); refs.audio.addEventListener(loadedmetadata, updateProgress, false); if(refs.seekBar){ refs.seekBar.addEventListener(click, function(e){ var rrefs.seekBar.getBoundingClientRect(); var xMath.max(0, Math.min(r.width, e.clientX - r.left)); var ratio r.width ? (x / r.width) : 0; if(refs.audio.duration) refs.audio.currentTime ratio * refs.audio.duration; }, false); } } refs.audio.addEventListener(ended, function(){ if(pl.length) playIndex((cur+1)%pl.length); }, false); // Changement d’onglet Bootstrap → re-scope et re-pin if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ refs getRefs(); if (!refs.audio) return; rebuildList(); highlightCurrent(); pinActiveAtTop(); }); }})();/script>script>document.addEventListener(DOMContentLoaded, function(){ document.querySelectorAll(#pvPlaylist .list-group-item, #pvPlaylist .pv-audio__item) .forEach(li > { li.style.cursor pointer; });});/script>script>/* Single Active Player — pause tous les autres médias quand un démarre */(function () { // Si tu préfères ne pas scanner tout le DOM à chaque fois, // tu peux activer le mode dernier actif en décommentant __PV_ACTIVE_MEDIA. let lastActive null; document.addEventListener(play, function (e) { const el e.target; if (!(el instanceof HTMLMediaElement)) return; // Variante A : pause tout ce qui joue (fiable si plein déléments dynamiques) //document.querySelectorAll(audio, video).forEach(m > { // if (m ! el && !m.paused && !m.ended) { // try { // m.pause(); // // Event custom pratique si tu veux resynchroniser un bouton Play/Pause // m.dispatchEvent(new CustomEvent(pv:paused-by-other, { bubbles: false })); // } catch (_) {} // } //}); // Variante B (plus perf) : n’arrête que le précédent actif if (lastActive && lastActive ! el && !lastActive.paused) { try { lastActive.pause(); lastActive.dispatchEvent(new CustomEvent(pv:paused-by-other, { bubbles: false })); } catch (_){} } lastActive el; }, true); // capture true pour attraper play (qui ne bubble pas)})();/script>script>/* Deep-link des onglets #pane-XX + scroll vers la section #products */(function($){ if (window.__PV_TAB_DEEPLINK__) return; window.__PV_TAB_DEEPLINK__ true; $(function(){ // Empêche le saut auto du navigateur vers l’ancre au chargement if (scrollRestoration in history) history.scrollRestoration manual; if (location.hash && /^#pane-\d+/.test(location.hash)) window.scrollTo(0, 0); function openByHash(hash){ if (!hash || !/^#pane-\d+/.test(hash)) return; var $link $(#prodTabs ahref+hash+); if (!$link.length) return; // Active l’onglet ciblé $link.tab(show); // Puis scroll doux vers la section produits var $section $(#products); if ($section.length){ var y Math.max(0, $section.offset().top - 10); $(html, body).stop(true).animate({ scrollTop: y }, 250); } } // Ouvre l’onglet demandé à l’arrivée sur la page (ex: /#pane-15) openByHash(location.hash); // Support navigation arrière/avant du navigateur $(window).on(hashchange, function(){ openByHash(location.hash); }); // Quand on change d’onglet manuellement, met à jour l’URL sans casser le scroll $(#prodTabs adata-toggletab).on(shown.bs.tab, function(e){ var target e.target.hash; // ex: #pane-15 if (target && /^#pane-\d+/.test(target)) { if (history.replaceState) { history.replaceState(null, null, target); } else { var y window.pageYOffset || document.documentElement.scrollTop; window.location.hash target; window.scrollTo(0, y); } } }); });})(jQuery);/script>script>jQuery(function($){ // Stop/Reset on tab change (Bootstrap 3) $(#prodTabs adata-toggletab).on(show.bs.tab, function () { // 1) Pause + remet à 0 tous les audios (bar + players d’onglets) document.querySelectorAll(audio).forEach(function(a){ try { a.pause(); a.currentTime 0; } catch(_){} }); // 2) Sync visuel de la barre horizontale (#music-player-bar) var bar document.getElementById(music-player-bar); if (bar) { bar.classList.remove(is-playing); var btn bar.querySelector(#pvPlayPauseBtn); if (btn) btn.setAttribute(aria-pressed,false); } });});/script>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 12 Feb 2026 01:02:07 GMTServer: Apache/2.4.65 (Unix) OpenSSL/1.1.1kX-Powered-By: PHP/8.1.33Vary: Accept-Encoding,User-AgentTransfer-Encoding: chunkedContent-Type: text/html; charsetUTF-8 !DOCTYPE html>!-- Project: Metronic Asentus Frontend Freebie - Responsive HTML Template Based On Twitter Bootstrap 3.3.4 Version: 1.0 Author: KeenThemes Primary use: Corporate, Business Themes. Email: support@keenthemes.com Follow: http://www.twitter.com/keenthemes Like: http://www.facebook.com/keenthemes Website: http://www.keenthemes.com Premium: Premium Metronic Admin Theme: http://themeforest.net/item/metronic-responsive-admin-dashboard-template/4021469?refkeenthemes -->html langfr classno-js> !-- BEGIN HEAD --> head> meta charsetutf-8/> title>SONOKILP - Édition, Production et Réalisation/title> meta http-equivX-UA-Compatible contentIEedge> meta contentwidthdevice-width, initial-scale1 nameviewport/> !-- SEO Meta Tags --> meta namedescription contentAvec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique> meta namekeywords contentSONOKLIP, édition, production, réalisation, audio, voix, musique, identité sonore, production sonore, composition, mixage, mastering, sound design, Montréal, Rive-Sud> meta nameauthor contentSONOKLIP> !-- Open Graph / Facebook --> meta propertyog:title contentSONOKLIP> meta propertyog:description contentAvec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique> meta propertyog:image contenthttps://www.sonoklip.com/img/logo-dark.png> meta propertyog:url contenthttps://www.sonoklip.com> meta propertyog:type contentwebsite> meta propertyog:locale contentfr_CA> !-- GLOBAL MANDATORY STYLES --> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyHind:wght@300;400;500;600;700&displayswap relstylesheet> link hrefvendor/simple-line-icons/simple-line-icons.min.css relstylesheet typetext/css/> link hrefvendor/bootstrap/css/bootstrap.min.css relstylesheet typetext/css/> !-- PAGE LEVEL PLUGIN STYLES --> link hrefcss/animate.css relstylesheet> link hrefvendor/swiper/css/swiper.min.css relstylesheet typetext/css/> !-- THEME STYLES --> link hrefcss/layout.min.css relstylesheet typetext/css/> link hrefcss/player.css relstylesheet typetext/css/> link hrefcss/produits.css relstylesheet typetext/css/> !-- Favicon --> link relicon hreffavicon.ico/> /head> !-- END HEAD --> !-- BODY --> body> !-- HEADER --> header classheader navbar-fixed-top> !-- Navbar --> nav classnavbar rolenavigation> div classcontainer> !-- Brand and toggle get grouped for better mobile display --> div classmenu-container> button typebutton classnavbar-toggle data-togglecollapse data-target.nav-collapse> span classsr-only>Toggle navigation/span> span classtoggle-icon>/span> /button> !-- Logo --> div classlogo> a classlogo-wrap href/> img classlogo-img logo-img-main srcimg/logo.png altSonoklip Logo> img classlogo-img logo-img-active srcimg/logo-dark.png altSonoklip Logo> /a> /div> !-- End Logo --> /div> !-- Collect the nav links, forms, and other content for toggling --> div classcollapse navbar-collapse nav-collapse> div classmenu-container> ul classnavbar-nav navbar-nav-right> li classnav-item>a classnav-item-child nav-item-hover active href/>Accueil/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefapropos>À propos/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefproduits>Produits/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefforfaits>Forfaits/a>/li> li classnav-item>a classnav-item-child nav-item-hover hrefcontact>Contact/a>/li> /ul> /div> /div> !-- End Navbar Collapse --> /div> /nav> !-- Navbar --> /header> !-- END HEADER --> !-- SLIDER --> div idcarousel-example-generic classcarousel slide data-ridecarousel> div classcontainer> !-- Indicators --> ol classcarousel-indicators> li data-target#carousel-example-generic data-slide-to0 classactive>/li> li data-target#carousel-example-generic data-slide-to1>/li> li data-target#carousel-example-generic data-slide-to2>/li> /ol> /div> !-- Wrapper for slides --> div classcarousel-inner rolelistbox> div classitem active> img classimg-responsive srcimg/1920x1080/01.jpg altSlider Image> div classcontainer> div classcarousel-centered> div classmargin-b-40> h1 classcarousel-title>Édition/h1> p>Avec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique/p> /div> a href/contact classbtn-theme btn-theme-sm btn-default-bg-apropos text-uppercase>Pour une évaluation de projet/a> /div> /div> /div> div classitem> img classimg-responsive srcimg/1920x1080/02.jpg altSlider Image> div classcontainer> div classcarousel-centered> div classmargin-b-40> h2 classcarousel-title>Production/h2> p>Avec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique/p> /div> a href/contact classbtn-theme btn-theme-sm btn-default-bg-apropos text-uppercase>Pour une évaluation de projet/a> /div> /div> /div> div classitem> img classimg-responsive srcimg/1920x1080/03.jpg altSlider Image> div classcontainer> div classcarousel-centered> div classmargin-b-40> h2 classcarousel-title>Réalisation/h2> p>Avec SONOKLIP chaque projet se transforme en une expérience sonore et visuelle unique/p> /div> a href/contact classbtn-theme btn-theme-sm btn-default-bg-apropos text-uppercase>Pour une évaluation de projet/a> /div> /div> /div> /div> /div> !-- SLIDER --> !-- PLAYER HORIZONTAL --> !-- PLAYER HORIZONTAL --> !-- PAGE LAYOUT --> !-- Service div classbg-color-sky-light data-auto-heighttrue> div classcontent-lg container> div classrow row-space-1 margin-b-2> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.3s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-chemistry>/i> /div> div classservice-info> h3>Art Of Coding/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.2s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-screen-tablet>/i> /div> div classservice-info> h3>Responsive Design/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.1s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-badge>/i> /div> div classservice-info> h3>Feature Reach/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> /div> --> !--// end row --> !--div classrow row-space-1> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.4s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-notebook>/i> /div> div classservice-info> h3>Useful Documentation/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4 sm-margin-b-2> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.5s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-speedometer>/i> /div> div classservice-info> h3>Fast Delivery/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> div classcol-sm-4> div classwow fadeInLeft data-wow-duration.3 data-wow-delay.6s> div classservice data-heightheight> div classservice-element> i classservice-icon icon-badge>/i> /div> div classservice-info> h3>Free Plugins/h3> p classmargin-b-5>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> a href# classcontent-wrapper-link>/a> /div> /div> /div> /div> --> !--// end row --> /div> /div> !-- End Service --> div classbg-color-sky-light overflow-h> div classcontent container> div classrow> div classcol-sm-9> p> span classfs-2 styledisplay:inline-block;font-weight:700;font-size:clamp(20px,1.2vw,26px);line-height:1.15;> h2> img srcimg/icones/icone-essentiel.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Avec SONOspan classsonoklip-text>KLIP/span>/h2> blockquote classblockquote>Chaque projet se transforme en une expérience sonore et visuelle unique/blockquote> /span> p>Nous créons des bandes sonores sur mesure ou issues de notre catalogue, produisons des livres audio immersifs pour tous types de contenus, et réalisons des créations multimédias complètes alliant graphisme, vidéo, podcast, site web ou événementiel/p> /p> /div> /div> /div> /div> !-- Latest Products --> div classcontent-sm container> div classrow margin-b-40> div classcol-sm-6 mt-3> h2> img srcimg/icones/icone-produits.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Produits et Services /h2> /div> /div> !--// end row --> div classrow> !-- Latest Products --> div classcol-sm-4 sm-margin-b-50> !--div classmargin-b-20> div classwow zoomIn data-wow-duration.3 data-wow-delay.1s> img classimg-responsive srcimg/970x647/01.jpg altLatest Products Image> /div> /div>--> h4>a href#>Bande sonore/a> !--span classtext-uppercase margin-l-20>Management/span>-->/h4> p>Nous composons des bandes sonores sur mesure qui renforcent lémotion, soutiennent le récit et marquent les esprits pour vos projets, b>ainsi que via notre catalogue/b> de créations originales/p> !--a classlink hreftrame.html>Read More/a>--> /div> !-- End Latest Products --> !-- Latest Products --> div classcol-sm-4 sm-margin-b-50> !--div classmargin-b-20> div classwow zoomIn data-wow-duration.3 data-wow-delay.1s> img classimg-responsive srcimg/970x647/02.jpg altLatest Products Image> /div> /div>--> h4>a href#>Livre audio/a> !--span classtext-uppercase margin-l-20>Development/span>-->/h4> p>Nous mettons à disposition nos voix, notre sens du rythme et notre oreille musicale pour donner vie à vos textes, quil sagisse de b>romans, ouvrages destinés à lapprentissage ou contenus narratifs/b>/p> !--a classlink hreflivre.html>Read More/a>--> /div> !-- End Latest Products --> !-- Latest Products --> div classcol-sm-4 sm-margin-b-50> !--div classmargin-b-20> div classwow zoomIn data-wow-duration.3 data-wow-delay.1s> img classimg-responsive srcimg/970x647/03.jpg altLatest Products Image> /div> /div>--> h4>a href#>Multimédia/a> !--span classtext-uppercase margin-l-20>Design/span>-->/h4> p>Nous concevons et réalisons des projets multimédias clairs, rythmés et engageants, alliant exigence sonore et visuelle : b>événementielle, graphisme, site Web, podcast, vidéo, chaîne YouTube, etc/b>/p> !--a classlink hrefformation.html>Read More/a>--> /div> !-- End Latest Products --> /div> !--// end row --> /div> !-- End Latest Products --> !-- Playlists Section --> section idproducts classpromo-section overflow-h> div classcontent-xs container> div classrow> div classcol-xs-12> div classsection-header stylemargin-bottom:15px;> h2 stylemargin:0 0 5px;> img srcimg/icones/icone-portfolio.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Portfolio audio/h2> p classtext-muted stylemargin:0;>Chaque produit inclut son image et sa playlist./p> /div> !-- Onglets Bootstrap 3 --> div classtabs-wrapper> div classtabs-arrows> button classtabs-arrow left idtabsArrowLeft aria-labelVoir précédents>←/button> button classtabs-arrow right idtabsArrowRight aria-labelVoir suivants>→/button> /div> ul classnav nav-tabs idprodTabs> li classactive> a href#pane-16 data-toggletab> SONOKLIP /a> /li> li class> a href#pane-15 data-toggletab> Bande sonore /a> /li> li class> a href#pane-14 data-toggletab> Livre audio /a> /li> li class> a href#pane-18 data-toggletab> Multimédia /a> /li> /ul> /div> div classtab-content idprodTabsContent stylemargin-top:15px;> div classtab-pane fade in active idpane-16> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251027_003118_a89bc070.jpg altSONOKLIP classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>SONOKLIP/h3> p>Nous accompagnons producteurs, réalisateurs, artistes indépendants, agences créatives et marques dans la création de contenus audio et visuels à forte valeur ajoutée, alliant expertise technique, sensibilité artistique et compréhension des besoins narratifs. Notre objectif : offrir une signature sonore et visuelle unique à chaque projet/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl18_d6e0d2_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl18_d6e0d2_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl18_d6e0d2_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : SONOKLIP/div> /div> audio idpl18_d6e0d2_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl18_d6e0d2_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl18_d6e0d2_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251109_005943_d71c0e4d.wav data-mimeaudio/wav data-index0> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_020221_efebbb91.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_020342_2ed7e004.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl18_d6e0d2_audio); const list document.getElementById(pl18_d6e0d2_list); const playBtn document.getElementById(pl18_d6e0d2_play); const prevBtn document.getElementById(pl18_d6e0d2_prev); const nextBtn document.getElementById(pl18_d6e0d2_next); const panel document.getElementById(pl18_d6e0d2_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> div classtab-pane fade idpane-15> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251027_000213_8407fb91.jpg altBande sonore classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>Bande sonore/h3> p>Nous composons des bandes sonores sur mesure qui renforcent l'émotion, soutiennent le récit et marquent les esprits pour vos projets, ainsi que via notre catalogue de créations originales/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl16_5e6244_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl16_5e6244_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl16_5e6244_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : Bande sonore/div> /div> audio idpl16_5e6244_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl16_5e6244_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl16_5e6244_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251027_001058_8c556c93.wav data-mimeaudio/wav data-index0> span classtrack-title text-truncate stylemax-width:85%;>1 - Bande sonore - tutita tatitu mix 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_001152_a9a1bb8b.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>2 - TAGUEDUL HGAAAA 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_001904_cf87c373.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>3 - piano reverse mix 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_002112_ca59db39.mp3 data-mimeaudio/mpeg data-index3> span classtrack-title text-truncate stylemax-width:85%;>4 - Action Film/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221222_5534edb9.mp3 data-mimeaudio/mpeg data-index4> span classtrack-title text-truncate stylemax-width:85%;>5 - Film 1 lounge/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221328_fddfaf96.wav data-mimeaudio/wav data-index5> span classtrack-title text-truncate stylemax-width:85%;>6 - Beat 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221522_c8a78510.mp3 data-mimeaudio/mpeg data-index6> span classtrack-title text-truncate stylemax-width:85%;>7 - ERIK - That's right/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_221911_144a7bbd.mp3 data-mimeaudio/mpeg data-index7> span classtrack-title text-truncate stylemax-width:85%;>8 - ERIK - Song 1 Galaxy 4/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_222005_803ff5f8.mp3 data-mimeaudio/mpeg data-index8> span classtrack-title text-truncate stylemax-width:85%;>9 - ERIK - Lounge P1A/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_223648_7a50ef8a.mp3 data-mimeaudio/mpeg data-index9> span classtrack-title text-truncate stylemax-width:85%;>10 - ERIK - Piste 22/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_225920_4fb97c65.wav data-mimeaudio/wav data-index10> span classtrack-title text-truncate stylemax-width:85%;>11 - GROOVY 3 - Yé 11111/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_230040_b39bf5a1.wav data-mimeaudio/wav data-index11> span classtrack-title text-truncate stylemax-width:85%;>12 - GROOVY 3 - Life12345/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_230633_358a454a.wav data-mimeaudio/wav data-index12> span classtrack-title text-truncate stylemax-width:85%;>13 - GROOVY 3 - Piano - Opus 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_230841_3b42546e.wav data-mimeaudio/wav data-index13> span classtrack-title text-truncate stylemax-width:85%;>14 - GROOVY 3 - 11W - piano 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231006_f896c062.wav data-mimeaudio/wav data-index14> span classtrack-title text-truncate stylemax-width:85%;>15 - GROOVY 3 - Jazzy Lounge/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231110_85550c30.wav data-mimeaudio/wav data-index15> span classtrack-title text-truncate stylemax-width:85%;>16 - GROOVY 3 - Jazzy Intro/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231253_ad2c0d92.wav data-mimeaudio/wav data-index16> span classtrack-title text-truncate stylemax-width:85%;>17 - GROOVY 3 - Free Time/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231422_9c14a10d.wav data-mimeaudio/wav data-index17> span classtrack-title text-truncate stylemax-width:85%;>18 - GROOVY 3 - Trippy Folk/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231605_a55fdc65.wav data-mimeaudio/wav data-index18> span classtrack-title text-truncate stylemax-width:85%;>19 - GROOVY 3 - Blues style 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_231813_e11e9583.wav data-mimeaudio/wav data-index19> span classtrack-title text-truncate stylemax-width:85%;>20 - GROOVY 3 - Good Time/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_232109_b9525f43.wav data-mimeaudio/wav data-index20> span classtrack-title text-truncate stylemax-width:85%;>21 - GROOVY 3 - Le nouveau monde/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_211308_91f8eada.wav data-mimeaudio/wav data-index21> span classtrack-title text-truncate stylemax-width:85%;>22 - free song SAXOPHONE/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_211427_7c347525.wav data-mimeaudio/wav data-index22> span classtrack-title text-truncate stylemax-width:85%;>23 - free song sax Mix/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_212156_4cd0c332.wav data-mimeaudio/wav data-index23> span classtrack-title text-truncate stylemax-width:85%;>24 - Film_free song mix 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_211618_2e1fa105.wav data-mimeaudio/wav data-index24> span classtrack-title text-truncate stylemax-width:85%;>25 - Intro_Film_yin song 1 MIX/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_212615_3a2897a8.wav data-mimeaudio/wav data-index25> span classtrack-title text-truncate stylemax-width:85%;>26 - Film - style country/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_212752_d064921f.wav data-mimeaudio/wav data-index26> span classtrack-title text-truncate stylemax-width:85%;>27 - kick song 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_213357_151cb40e.wav data-mimeaudio/wav data-index27> span classtrack-title text-truncate stylemax-width:85%;>28 - Film_loop_Wolf MIX/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_213506_7cdca874.wav data-mimeaudio/wav data-index28> span classtrack-title text-truncate stylemax-width:85%;>29 - Film_Piano - MIX1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_213613_dc9e707e.wav data-mimeaudio/wav data-index29> span classtrack-title text-truncate stylemax-width:85%;>30 - Film_Piano Wow/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_225753_2c443a1d.wav data-mimeaudio/wav data-index30> span classtrack-title text-truncate stylemax-width:85%;>31 - Klip Lounge - 01 Spirale/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_230028_9cec74b3.wav data-mimeaudio/wav data-index31> span classtrack-title text-truncate stylemax-width:85%;>32 Klip Lounge - Feel Free/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_230240_b4fcd7ab.wav data-mimeaudio/wav data-index32> span classtrack-title text-truncate stylemax-width:85%;>33 - Klip Lounge - Zoom/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_230916_b0987db4.wav data-mimeaudio/wav data-index33> span classtrack-title text-truncate stylemax-width:85%;>34 - Klip Lounge - Prélude 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_231653_ea922bda.wav data-mimeaudio/wav data-index34> span classtrack-title text-truncate stylemax-width:85%;>35 - Klip Lounge - Zoom mix/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_233653_9bcfd7f0.wav data-mimeaudio/wav data-index35> span classtrack-title text-truncate stylemax-width:85%;>36 - Klip Lounge - Guitare - piano/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_234037_7c1484ba.wav data-mimeaudio/wav data-index36> span classtrack-title text-truncate stylemax-width:85%;>37 - Al - 01 Argentina/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_234208_8cf2c8dd.wav data-mimeaudio/wav data-index37> span classtrack-title text-truncate stylemax-width:85%;>38 - Al - 05 Argentina II/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_234417_48f677a2.wav data-mimeaudio/wav data-index38> span classtrack-title text-truncate stylemax-width:85%;>49 - Al - 06 Funk Blues 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_190446_261ccb8f.wav data-mimeaudio/wav data-index39> span classtrack-title text-truncate stylemax-width:85%;>40 - Al - Temps Libre/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_190618_37537953.wav data-mimeaudio/wav data-index40> span classtrack-title text-truncate stylemax-width:85%;>41- Al - F1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_190746_9ddae23a.wav data-mimeaudio/wav data-index41> span classtrack-title text-truncate stylemax-width:85%;>42 Al - Jazzy Intro 1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_191031_7a558220.wav data-mimeaudio/wav data-index42> span classtrack-title text-truncate stylemax-width:85%;>43 - Al - UP W/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_191138_103cc2d1.wav data-mimeaudio/wav data-index43> span classtrack-title text-truncate stylemax-width:85%;>44 - Al - beat 1 piano/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_191248_5c4a92d7.wav data-mimeaudio/wav data-index44> span classtrack-title text-truncate stylemax-width:85%;>45 - Al - Universal Planet/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_212733_ddb71c6c.wav data-mimeaudio/wav data-index45> span classtrack-title text-truncate stylemax-width:85%;>46 - Al - Irish Mix (remix)/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_213059_5f77394e.wav data-mimeaudio/wav data-index46> span classtrack-title text-truncate stylemax-width:85%;>47 - Al - Kafé/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_213226_36cd61fd.wav data-mimeaudio/wav data-index47> span classtrack-title text-truncate stylemax-width:85%;>48 - Al - Une Hirondelle/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251107_213434_6fa29f36.wav data-mimeaudio/wav data-index48> span classtrack-title text-truncate stylemax-width:85%;>49 - Al - Lune W1/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_233722_c0078785.wav data-mimeaudio/wav data-index49> span classtrack-title text-truncate stylemax-width:85%;>50 - GROOVY 3 - Groovy 11111/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251115_042210_8bdc30be.wav data-mimeaudio/wav data-index50> span classtrack-title text-truncate stylemax-width:85%;>51 - T1W/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl16_5e6244_audio); const list document.getElementById(pl16_5e6244_list); const playBtn document.getElementById(pl16_5e6244_play); const prevBtn document.getElementById(pl16_5e6244_prev); const nextBtn document.getElementById(pl16_5e6244_next); const panel document.getElementById(pl16_5e6244_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> div classtab-pane fade idpane-14> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251026_233406_440cecbe.jpg altLivre audio classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>Livre audio/h3> p>Nous mettons à disposition nos voix, notre sens du rythme et notre oreille musicale pour donner vie à vos textes, qu'il s'agisse de romans, ouvrages destinés à l'apprentissage ou contenus narratifs/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl17_799dc0_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl17_799dc0_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl17_799dc0_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : Livre audio/div> /div> audio idpl17_799dc0_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl17_799dc0_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl17_799dc0_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251109_223635_af0a084b.mp3 data-mimeaudio/mpeg data-index0> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Bottes/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_025238_1701f100.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Monsieur Alphonse Tremblay/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251111_020524_4938484c.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Monsieur Wilfrid - Lac St-Jean/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251112_022223_833dd6dc.mp3 data-mimeaudio/mpeg data-index3> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Le Lynx - chapitre 1/span> span classbadge bg-secondary>MP3/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251028_031802_1f2af728.wav data-mimeaudio/wav data-index4> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Beach Bum/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251103_195235_47aa8667.wav data-mimeaudio/wav data-index5> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Korto/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_013520_96c8092f.wav data-mimeaudio/wav data-index6> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Hot Tropique - Pierre Brume/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_224055_d80d83a6.wav data-mimeaudio/wav data-index7> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Jeanne Barret/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_224207_2fa5a38a.wav data-mimeaudio/wav data-index8> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Technologie USB/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251027_005717_a3942567.wav data-mimeaudio/wav data-index9> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Johny Cash/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251026_233307_1d081cbe.wav data-mimeaudio/wav data-index10> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Aznavour/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251026_234728_6f26ead6.wav data-mimeaudio/wav data-index11> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrai - Led Zeppelin/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251026_235025_a55d8919.wav data-mimeaudio/wav data-index12> span classtrack-title text-truncate stylemax-width:85%;>Livre audio - Extrait - Jon Anderson - version anglaise/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl17_799dc0_audio); const list document.getElementById(pl17_799dc0_list); const playBtn document.getElementById(pl17_799dc0_play); const prevBtn document.getElementById(pl17_799dc0_prev); const nextBtn document.getElementById(pl17_799dc0_next); const panel document.getElementById(pl17_799dc0_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> div classtab-pane fade idpane-18> div classrow> div classcol-sm-6> img src/sonokool/uploads/products/prod_20251028_014544_7f7c1d82.png altMultimédia classimg-responsive img-rounded product-img-full> /div> div classcol-sm-6> h3 classh4 stylemargin-top:0;>Multimédia/h3> p>Nous concevons et réalisons des projets multimédias clairs, rythmés et engageants, alliant exigence sonore et visuelle : événementielle, graphisme, site Web, podcast, vidéo, chaîne YouTube/p> !-- Player / Playlist liée --> div classproduct-player> div classcard shadow-sm> div classcard-body> div classd-flex align-items-center gap-2 mb-3> button idpl20_012f00_prev typebutton classbtn btn-outline-secondary btn-sm precedente aria-labelPiste précédente>⏮/button> button idpl20_012f00_play typebutton classbtn btn-primary btn-sm aria-labelLecture/Pause>▶️/button> button idpl20_012f00_next typebutton classbtn btn-outline-secondary btn-sm suivante aria-labelPiste suivante>⏭/button> div classms-2 small text-muted>Playlist : Multimédia/div> /div> audio idpl20_012f00_audio preloadmetadata stylewidth:100%; controls> Votre navigateur ne supporte pas laudio HTML5. /audio> !-- Conteneur SCROLL (c’est LUI qui scrolle) --> div idpl20_012f00_panel classmt-3 stylemax-height:320px; overflow-y:auto; overflow-x:hidden;> ul idpl20_012f00_list classlist-group stylemargin:0;> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center active data-src/sonokool/uploads/audio/track_20251030_060017_3a50dad8.wav data-mimeaudio/wav data-index0> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP - Vidéo/Reportage/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_231431_cb3de879.wav data-mimeaudio/wav data-index1> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP - Multimédia/span> span classbadge bg-secondary>WAV/span> /li> li classlist-group-item list-group-item-action d-flex justify-content-between align-items-center data-src/sonokool/uploads/audio/track_20251109_231452_8e6342f3.wav data-mimeaudio/wav data-index2> span classtrack-title text-truncate stylemax-width:85%;>SONOKLIP - Multimédia 1/span> span classbadge bg-secondary>WAV/span> /li> /ul> /div> /div>/div>script>(() > { const audio document.getElementById(pl20_012f00_audio); const list document.getElementById(pl20_012f00_list); const playBtn document.getElementById(pl20_012f00_play); const prevBtn document.getElementById(pl20_012f00_prev); const nextBtn document.getElementById(pl20_012f00_next); const panel document.getElementById(pl20_012f00_panel); if (!audio || !list || !panel) return; /* ------ UI Play/Pause ------ */ function showPlay(){ if (!playBtn) return; playBtn.textContent ▶️; playBtn.setAttribute(aria-label,Lecture); } function showPause(){ if (!playBtn) return; playBtn.textContent ⏸; playBtn.setAttribute(aria-label,Pause); } function pickScroller(){ const cs getComputedStyle(list); return /(auto|scroll)/.test(cs.overflowY) ? list : panel; } let SCROLLER pickScroller(); function ensureViewportClamp(){ panel.style.maxHeight 320px; panel.style.overflowY auto; panel.style.overflowX hidden; SCROLLER pickScroller(); } function highlight(idx){ list.querySelectorAll(li.list-group-item).forEach(li>{ const on String(li.dataset.index) String(idx); li.classList.toggle(active, on); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on ? true:false); }); list.setAttribute(aria-activedescendant,pvTrack_+idx); } function scrollActiveToTop(idx){ const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const liCS getComputedStyle(li); const top li.offsetTop - (parseFloat(liCS.marginTop)||0) - (parseFloat(getComputedStyle(SCROLLER).paddingTop)||0); const prev SCROLLER.style.scrollBehavior; SCROLLER.style.scrollBehavior auto; SCROLLER.scrollTop Math.max(0, Math.min(top, SCROLLER.scrollHeight - SCROLLER.clientHeight)); SCROLLER.style.scrollBehavior prev || ; } const size list.querySelectorAll(li.list-group-item).length; let idx 0; function setActive(newIndex, autoplay true){ if (!size) return; idx ((newIndex % size) + size) % size; const li list.querySelector(li.list-group-itemdata-index+idx+); if (!li) return; const src li.getAttribute(data-src) || ; audio.src src; highlight(idx); scrollActiveToTop(idx); if (autoplay) { audio.play().then(() > { // l’event play/playing mettra l’icône ⏸ }).catch(() > { // autoplay bloqué → rester en play showPlay(); }); } else { showPlay(); } } // Click items list.addEventListener(click, function(ev){ const b ev.target.closest(li.list-group-itemdata-index); if (!b) return; setActive(parseInt(b.dataset.index,10)||0, true); }, true); // Boutons if (playBtn) playBtn.addEventListener(click, function(e){ e.preventDefault(); if (!audio.currentSrc) return setActive(idx, true); if (audio.paused) audio.play().catch(()>{ showPlay(); }); else audio.pause(); }, true); if (nextBtn) nextBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx+1, true); }, true); if (prevBtn) prevBtn.addEventListener(click, function(e){ e.preventDefault(); setActive(idx-1, true); }, true); // Auto-next audio.addEventListener(ended, function(){ setActive(idx+1, true); }, false); // Sync bouton avec l’état réel du média (peu importe l’origine) audio.addEventListener(play, showPause, false); audio.addEventListener(playing, showPause, false); audio.addEventListener(pause, showPlay, false); audio.addEventListener(emptied, showPlay, false); audio.addEventListener(abort, showPlay, false); audio.addEventListener(stalled, () > {/* ne change rien */}, false); // Si un autre player l’a mis en pause (script Single Active Player) audio.addEventListener(pv:paused-by-other, showPlay, false); function reflow(){ ensureViewportClamp(); scrollActiveToTop(idx); } window.addEventListener(resize, reflow); if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ requestAnimationFrame(reflow); setTimeout(reflow, 120); }); } ensureViewportClamp(); setActive(idx, false); // init (ne lance pas la lecture → bouton ▶️)})();/script> /div> /div> /div> /div> /div> /div> /div> /div> /section> !-- End Playlists Section --> !-- Testimonials --> div classcontent-lg container> div classrow> div classcol-sm-9> h2> img srcimg/icones/icone-avis.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Expériences clients/h2> !-- Swiper Testimonials --> div classswiper-slider swiper-testimonials> !-- Swiper Wrapper --> div classswiper-wrapper> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Excellente collaboration ! La trame sonore créée a parfaitement sublimé notre vidéo. Équipe très professionnelle et à lécoute. /div> p>span classfweight-700 color-link>Sophie L./span>, Réalisatrice/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Les formations audio sont claires et engageantes. Mes étudiants apprennent beaucoup plus facilement grâce à ce format. /div> p>span classfweight-700 color-link>Marc D./span>, Formateur/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Une qualité sonore exceptionnelle et un vrai sens artistique. Je recommande vivement pour tout projet créatif ! /div> p>span classfweight-700 color-link>Clara M./span>, Chorégraphe/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Très satisfait du rendu pour notre podcast dentreprise. Le son est net, dynamique, et fidèle à notre image de marque. /div> p>span classfweight-700 color-link>Julien P./span>, Responsable communication/p> /blockquote> /div> div classswiper-slide> blockquote classblockquote> div classmargin-b-20> Rapidité, professionnalisme et créativité. Une équipe qui sait vraiment comment donner vie à vos idées avec le son. /div> p>span classfweight-700 color-link>Élodie R./span>, Éditrice/p> /blockquote> /div> /div> !-- End Swiper Wrapper --> !-- Pagination --> div classswiper-testimonials-pagination>/div> /div> !-- End Swiper Testimonials --> /div> /div> !--// end row --> /div> !-- End Testimonials --> !-- Pricing --> !--div classbg-color-sky-light> div classcontent-lg container> div classrow row-space-1> div classcol-sm-4 sm-margin-b-2> --> !-- Pricing --> !--div classpricing> div classmargin-b-30> i classpricing-icon icon-chemistry>/i> h3>Starter Kit span> - $/span> 49/h3> p>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> ul classlist-unstyled pricing-list margin-b-50> li classpricing-list-item>Basic Features/li> li classpricing-list-item>Up to 5 products/li> li classpricing-list-item>50 Users Panels/li> /ul> a hrefpricing.html classbtn-theme btn-theme-sm btn-default-bg text-uppercase>Choose/a> /div> --> !-- End Pricing --> !--/div> div classcol-sm-4 sm-margin-b-2> --> !-- Pricing --> !--div classpricing pricing-active> div classmargin-b-30> i classpricing-icon icon-badge>/i> h3>Professional span> - $/span> 149/h3> p>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> ul classlist-unstyled pricing-list margin-b-50> li classpricing-list-item>Basic Features/li> li classpricing-list-item>Up to 100 products/li> li classpricing-list-item>100 Users Panels/li> /ul> a hrefpricing.html classbtn-theme btn-theme-sm btn-default-bg text-uppercase>Choose/a> /div> --> !-- End Pricing --> !--/div> --> !--div classcol-sm-4> --> !-- Pricing --> !--div classpricing> div classmargin-b-30> i classpricing-icon icon-shield>/i> h3>Advanced span> - $/span> 249/h3> p>Lorem ipsum dolor amet consectetur ut consequat siad esqudiat dolor/p> /div> ul classlist-unstyled pricing-list margin-b-50> li classpricing-list-item>Extended Features/li> li classpricing-list-item>Unlimited products/li> li classpricing-list-item>Unlimited Users Panels/li> /ul> a hrefpricing.html classbtn-theme btn-theme-sm btn-default-bg text-uppercase>Choose/a> /div> --> !-- End Pricing --> !--/div> /div> --> !--// end row --> !--/div> /div> --> !-- End Pricing --> !-- Work --> div classbg-color-sky-light overflow-h> div classcontent-lg container> div classrow margin-b-40> div classcol-sm-6> h2> img srcimg/icones/icone-boofer.png alt styleheight:40px; vertical-align:middle; margin-right:0;> Passionné de laudio !/h2> p>Nous accompagnons les producteurs, réalisateurs, les artistes indépendants, les agences créatives et les marques dans la création de contenu sonore de qualité professionnelle, avec une signature musicale forte et actuelle./p> /div> /div> !--// end row --> !-- Masonry Grid --> div classmasonry-grid> div classmasonry-grid-sizer col-xs-6 col-sm-6 col-md-1>/div> div classmasonry-grid-item col-xs-12 col-sm-6 col-md-8> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.1s> div classwork-overlay> img classfull-width img-responsive srcimg/800x400/01.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.2s> div classwork-overlay> img classfull-width img-responsive srcimg/397x400/01.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.3s> div classwork-overlay> img classfull-width img-responsive srcimg/397x300/01.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.4s> div classwork-overlay> img classfull-width img-responsive srcimg/397x300/02.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> div classmasonry-grid-item col-xs-6 col-sm-6 col-md-4> !-- Work --> div classwork wow fadeInUp data-wow-duration.3 data-wow-delay.5s> div classwork-overlay> img classfull-width img-responsive srcimg/397x300/03.jpg altPortfolio Image> /div> div classwork-content> h3 classcolor-white margin-b-5>SONOKLIP/h3> p classcolor-white margin-b-0>Édition - Production - Réalisation/p> /div> /div> !-- End Work --> /div> /div> !-- End Masonry Grid --> /div> /div> !-- End Work --> !-- Clients --> div> div classcontent-lg container> !-- Swiper Clients --> div classswiper-slider swiper-clients> !-- Swiper Wrapper --> div classswiper-wrapper> div classswiper-slide> img classswiper-clients-img srcimg/clients/01.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/02.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/03.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/04.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/05.png altClients Logo> /div> div classswiper-slide> img classswiper-clients-img srcimg/clients/06.png altClients Logo> /div> /div> !-- End Swiper Wrapper --> /div> !-- End Swiper Clients --> /div> /div> !-- End Clients --> !-- END PAGE LAYOUT --> !-- FOOTER --> footer classfooter> div classcontent-sm container> !-- Copyright --> div classrow> div classcol-xs-12 col-sm-6> img classfooter-logo srcimg/logo.png altSonoklip Logo> /div> div classcol-xs-12 col-sm-6 text-right> p classmargin-b-0 copyright> strong classcontact-phone>438.825.8702/strong>br> a hrefmailto:eric.imedia@gmail.com classcontact-email>eric.imedia@gmail.com/a>br>br> a classcolor-base fweight-700 hrefhttp://keenthemes.com/preview/asentus/>Asentus/a> propulsé par: a classcolor-base fweight-700 mb-4 hrefhttps://sonoklip.com/>sonoklip.com/a> p classcontact-droits>Tous droits réservés span classcontact-copy>©/span> span idyear>/span>/p> /p> /div> /div> !-- End Copyright --> /div> /footer> !-- END FOOTER --> !-- Back To Top --> a hrefjavascript:void(0); classjs-back-to-top back-to-top>img src/img/top.png classarrow-top altHaut>/a> !-- JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) --> !-- CORE PLUGINS --> script srcvendor/jquery.min.js typetext/javascript>/script> script srcvendor/jquery-migrate.min.js typetext/javascript>/script> script srcvendor/bootstrap/js/bootstrap.min.js typetext/javascript>/script> !-- script srcvendor/jquery.player.js typetext/javascript>/script> --> script src/js/pv-player-loader.js>/script> !-- PAGE LEVEL PLUGINS --> script srcvendor/jquery.easing.js typetext/javascript>/script> script srcvendor/jquery.back-to-top.js typetext/javascript>/script> script srcvendor/jquery.smooth-scroll.js typetext/javascript>/script> script srcvendor/jquery.wow.min.js typetext/javascript>/script> script srcvendor/swiper/js/swiper.jquery.min.js typetext/javascript>/script> script srcvendor/masonry/jquery.masonry.pkgd.min.js typetext/javascript>/script> script srcvendor/masonry/imagesloaded.pkgd.min.js typetext/javascript>/script> !-- PAGE LEVEL SCRIPTS --> script srcjs/layout.min.js typetext/javascript>/script> script srcjs/components/wow.min.js typetext/javascript>/script> script srcjs/components/swiper.min.js typetext/javascript>/script> script srcjs/components/masonry.min.js typetext/javascript>/script> /body> !-- END BODY -->script> // Insère lannée actuelle dans #year document.getElementById(year).textContent new Date().getFullYear();/script>script> (function () { // $js doit contenir du JSON valide (array dobjets {src,title,type?} ou array de strings) // On normalise pour toujours obtenir un tableau propre dans window.PV_PLAYER_PLAYLIST var raw ; // garde ton echo PHP function normOne(t) { if (!t) return null; if (typeof t string) return { title: t.split(/).pop().replace(/\.^.+$/, ).replace(/_-+/g, ), src: t, type: }; if (typeof t object && t.src) return { title: (t.title && String(t.title)) || (String(t.src).split(/).pop() || ).replace(/\.^.+$/, ).replace(/_-+/g, ), src: String(t.src), type: String(t.type || ) }; return null; } try { if (typeof raw string) raw JSON.parse(raw); } catch (e) { raw ; } var pl Array.isArray(raw) ? raw.map(normOne).filter(Boolean) : ; // Expose window.PV_PLAYER_PLAYLIST pl; // Back-compat: si PlayerPlaylist n’existe pas, on la fournit ; sinon on la laisse en place if (!Array.isArray(window.PlayerPlaylist) || !window.PlayerPlaylist.length) { window.PlayerPlaylist pl.slice(); } })();/script>script>document.addEventListener(DOMContentLoaded, () > { const audio document.getElementById(pvAudio); // Si la barre “music-player-bar” gère déjà #pvAudio, on s’abstient if (!audio || audio.closest(#music-player-bar)) return; const pl Array.isArray(window.PV_PLAYER_PLAYLIST) ? window.PV_PLAYER_PLAYLIST : ; if (!pl.length) return; audio.src pl0.src || ; audio.autoplay true; audio.preload auto; audio.playsInline true; audio.muted false; audio.load(); audio.play().catch(err > { console.warn(Autoplay bloqué, (err && err.name) || err); }); document.addEventListener(visibilitychange, () > { if (!document.hidden && audio.paused) audio.play().catch(() > {}); });});/script>script>/* BARRE HORIZONTALE #music-player-bar — autoplay sonore, sans UI conflictuelle */(function(){ use strict; function esc(t){return (t||).replace(/&>/g,s>({&:&,:<,>:>,:",:'}s));} function niceFromSrc(src){try{var p(src||).split(?)0,bp.split(/).pop()||;return b.replace(/\.A-Za-z0-9+$/,).replace(/_-+/g, ).trim()||Sans titre;}catch(e){return Sans titre;}} function normTrack(t){ if(!t) return null; if(typeof tstring) return {title:niceFromSrc(t),src:t,type:}; if(t.src && typeof t.srcstring) return {title:t.title||niceFromSrc(t.src),src:t.src,type:t.type||}; if(t.src && t.src.src) return {title:t.title||niceFromSrc(t.src.src),src:t.src.src,type:t.src.type||t.type||}; return null; } document.addEventListener(DOMContentLoaded, function(){ var bar document.getElementById(music-player-bar); if(!bar) return; var audio bar.querySelector(#pvAudio); var titleEl bar.querySelector(#pvTrackTitle); var progress bar.querySelector(#pvProgress); var seek bar.querySelector(#pvSeekBar); var vol bar.querySelector(#pvVolume); var btnPlay bar.querySelector(#pvPlayPauseBtn); var btnNext bar.querySelector(#pvNextBtn); var btnToggle bar.querySelector(#pvPlaylistToggle); var panel bar.querySelector(#pvPlaylistPanel); var list bar.querySelector(#pvPlaylist); if(!audio||!titleEl||!progress||!seek||!vol||!btnPlay||!btnNext||!btnToggle||!panel||!list){ console.warn(BAR DOM manquant.); return; } if(audio._barInit) return; audio._barInit true; btnPlay.type button; // Préférences audio.autoplay true; audio.preload auto; audio.playsInline true; audio.muted false; // Playlist source (priorité à PlayerPlaylist si fournie) var playlist ; if(Array.isArray(window.PlayerPlaylist) && window.PlayerPlaylist.length){ playlist window.PlayerPlaylist.map(normTrack).filter(Boolean); }else if(Array.isArray(window.PV_PLAYER_PLAYLIST) && window.PV_PLAYER_PLAYLIST.length){ playlist window.PV_PLAYER_PLAYLIST.map(normTrack).filter(Boolean); } if(!playlist.length){ console.warn(BAR Aucune piste.); return; } function sumFirstNHeights(ul,n){ var itemsul?ul.children:,total0; for(var i0;iMath.min(n,items.length);i++){ var liitemsi,rli.getBoundingClientRect(),csgetComputedStyle(li); total+r.height+(parseFloat(cs.marginTop)||0)+(parseFloat(cs.marginBottom)||0); } var csulgetComputedStyle(ul); total+(parseFloat(csul.paddingTop)||0)+(parseFloat(csul.paddingBottom)||0) +(parseFloat(csul.borderTopWidth)||0)+(parseFloat(csul.borderBottomWidth)||0); return total||48*4; } function ensureViewport4(){ if(list.children.length4){ list.classList.remove(pl-scroll); list.style.maxHeight; list.style.overflowY; return; } var hsumFirstNHeights(list,4); list.classList.add(pl-scroll); list.style.maxHeighth+px; list.style.overflowYauto; } function pinActiveAtTop(idx){ var lilist.querySelector(lidata-index+idx+); if(!li) return; var prevlist.style.scrollBehavior; list.style.scrollBehaviorauto; var dli.getBoundingClientRect().top-list.getBoundingClientRect().top; list.scrollTop+d; list.scrollTopMath.max(0, Math.min(list.scrollTop, list.scrollHeight-list.clientHeight)); list.style.scrollBehaviorprev||; } function bringActiveFirst(idx){ var li list.querySelector(.pv-audio__itemdata-index+idx+); if (!li) return; if (list.firstElementChild ! li) list.insertBefore(li, list.firstElementChild); list.style.scrollBehavior auto; list.scrollTop 0; } function highlightCurrent(idx){ list.querySelectorAll(.pv-audio__item).forEach(function(li){ var on String(li.dataset.index)String(idx); li.classList.toggle(is-current, on); li.classList.toggle(is-active, on); // compat li.setAttribute(aria-selected, on?true:false); }); } var index0, _srcSet ; function setAudioSource(tr){ var next tr && tr.src ? String(tr.src) : ; if (!next || _srcSet next) return; _srcSet next; audio.src next; } function highlightCurrent(idx){ list.querySelectorAll(.pv-audio__item).forEach(function(li){ var on String(li.dataset.index)String(idx); li.classList.toggle(is-current, on); li.setAttribute(aria-selected, on?true:false); }); } function play(){ if (!audio.src && playlist.length) setAudioSource(playlistindex); audio.muted false; return audio.play().then(function(){ bar.classList.add(is-playing); btnPlay.setAttribute(aria-pressed,true); }).catch(function(err){ console.warn(Autoplay refusé, (err && err.name)||err); }); } function pause(){ audio.pause(); bar.classList.remove(is-playing); btnPlay.setAttribute(aria-pressed,false); } function load(i,autoplay){ if(!playlist.length) return; index((i%playlist.length)+playlist.length)%playlist.length; var trplaylistindex; setAudioSource(tr); titleEl.textContenttr.title||niceFromSrc(tr.src); highlightCurrent(index); ensureViewport4(); bringActiveFirst(index); if(autoplay) play(); else pause(); } function buildList(){ list.innerHTML; for(var i0;iplaylist.length;i++){ (function(i){ var trplaylisti, lidocument.createElement(li); li.classNamepv-audio__item; li.setAttribute(role,option); li.dataset.indexString(i); li.innerHTMLbutton classpv-audio__play typebutton data-index+i+>▶/button> span classpv-audio__t>+esc(tr.title||niceFromSrc(tr.src))+/span>; li.addEventListener(click,function(){ load(i,true); }); li.addEventListener(keydown,function(e){ if(e.keyEnter||e.key ){ e.preventDefault(); load(i,true);} }); list.appendChild(li); })(i); } ensureViewport4(); requestAnimationFrame(ensureViewport4); } // Contrôles btnPlay.addEventListener(click, function(e){ e.preventDefault(); if(audio.paused) play(); else pause(); }); btnNext.addEventListener(click, function(e){ e.preventDefault(); load(index+1,true); }); function setOpen(open){ bar.classList.toggle(is-open, !!open); btnToggle.setAttribute(aria-expanded, open?true:false); panel.hidden !open; } btnToggle.addEventListener(click, function(e){ e.preventDefault(); var open btnToggle.getAttribute(aria-expanded)!true; setOpen(open); if(open){ ensureViewport4(); requestAnimationFrame(function(){ ensureViewport4(); pinActiveAtTop(index); }); setTimeout(function(){ ensureViewport4(); pinActiveAtTop(index); },120); } }); document.addEventListener(click, function(e){ if (bar.classList.contains(is-open) && !bar.contains(e.target)) setOpen(false); }); document.addEventListener(keydown, function(e){ if(e.keyEscape) setOpen(false); }); // Progress + seek function updateProgress(){ var p(audio.currentTime/(audio.duration||1))*100; progress.style.widthp+%; seek.setAttribute(aria-valuenow, String(Math.round(p||0))); } audio.addEventListener(timeupdate,updateProgress); audio.addEventListener(loadedmetadata,updateProgress); seek.addEventListener(click, function(e){ var rseek.getBoundingClientRect(), ratio(e.clientX-r.left)/r.width; if(audio.duration) audio.currentTimeMath.max(0,Math.min(audio.duration, ratio*audio.duration)); }); seek.addEventListener(keydown, function(e){ if(ArrowLeft,ArrowRight,Home,End.indexOf(e.key)>-1) e.preventDefault(); if(e.keyArrowLeft) audio.currentTimeMath.max(0,(audio.currentTime||0)-5); if(e.keyArrowRight) audio.currentTimeMath.min((audio.duration||0),(audio.currentTime||0)+5); if(e.keyHome) audio.currentTime0; if(e.keyEnd) audio.currentTimeaudio.duration||0; }); // Volume vol.addEventListener(input, function(){ audio.volumeMath.max(0,Math.min(1,parseFloat(vol.value||0))); }); audio.volumeMath.max(0,Math.min(1,parseFloat(vol.value||0.9))); // Auto-next audio.addEventListener(ended, function(){ load(index+1,true); }); // Init buildList(); index0; setAudioSource(playlistindex); titleEl.textContentplaylistindex.title||niceFromSrc(playlistindex.src); highlightCurrent(index); ensureViewport4(); pinActiveAtTop(index); // Autoplay play(); document.addEventListener(visibilitychange, function(){ if (!document.hidden && audio.paused) play(); }); });})();/script>script>/* Flèches d’onglets robustes : ne plante pas si #prodTabs absent */jQuery(function($) { var $tabs $(#prodTabs); var $left $(#tabsArrowLeft); var $right $(#tabsArrowRight); function updateArrows() { if (!$tabs.length || !$tabs0) { $left.hide(); $right.hide(); return; } var el $tabs0; var scrollLeft el.scrollLeft || 0; var maxScroll Math.max(0, (el.scrollWidth || 0) - $tabs.outerWidth()); if (maxScroll 0) { $left.hide(); $right.hide(); return; } $left.toggle(scrollLeft > 0); $right.toggle(scrollLeft maxScroll - 5); } if ($left.length) $left.on(click, function() { if (!$tabs.length) return; $tabs.animate({ scrollLeft: Math.max(0, $tabs.scrollLeft() - 160) }, 180, updateArrows); }); if ($right.length) $right.on(click, function() { if (!$tabs.length) return; $tabs.animate({ scrollLeft: $tabs.scrollLeft() + 160 }, 180, updateArrows); }); if ($tabs.length) { $tabs.on(scroll, updateArrows); $(window).on(resize, updateArrows); // multiples tentatives pour cas display:none au load updateArrows(); setTimeout(updateArrows, 120); setTimeout(updateArrows, 400); }});/script>script>(function(){ var root document.getElementById(music-player-bar) || document.querySelector(.pv-audio); var toggle document.getElementById(pvPlaylistToggle); var panel document.getElementById(pvPlaylistPanel); if(!root || !toggle || !panel) return; function setOpen(open){ root.classList.toggle(is-open, !!open); toggle.setAttribute(aria-expanded, open ? true : false); panel.hidden !open; } setOpen(false); toggle.addEventListener(click, function(e){ e.preventDefault(); setOpen(toggle.getAttribute(aria-expanded) ! true); }, true); document.addEventListener(keydown, function(e){ if(e.key Escape) setOpen(false); }, false);})();/script>script>(function(){ function getActiveRoot(){ return document.querySelector(#prodTabsContent .tab-pane.active .product-player) || document.querySelector(.product-player); } function getRefs(){ var root getActiveRoot(); if(!root) return {}; return { root: root, list: root.querySelector(#pvPlaylist), audio: root.querySelector(#pvAudio), titleEl: root.querySelector(#pvTrackTitle), ppBtn: root.querySelector(#pvPlayPauseBtn), nextBtn: root.querySelector(#pvNextBtn), volIn: root.querySelector(#pvVolume), seekBar: root.querySelector(#pvSeekBar), progress: root.querySelector(#pvProgress) }; } function esc(t){ return (t||).replace(/&>/g, s>({ &:&,:<,>:>,:",:' }s)); } function niceFromSrc(src){ try{ var s(src||).split(?)0, bs.split(/).pop()||; return b.replace(/\.A-Za-z0-9+$/,).replace(/_-+/g, ).trim()||Sans titre; }catch(e){ return Sans titre; } } var refs getRefs(); if(!refs.audio) return; var pl Array.isArray(window.PV_PLAYER_PLAYLIST) ? window.PV_PLAYER_PLAYLIST.slice() : ; pl pl.filter(function(t){ return t && t.src; }); var cur 0; function labelOf(tr){ var t(tr&&tr.title||).trim(); return t || niceFromSrc(tr&&tr.src); } function setAudioSource(src,type){ var s refs.audio.querySelector(source); if(!s){ sdocument.createElement(source); refs.audio.appendChild(s); } s.src src; s.type type||; refs.audio.load(); } function rebuildList(){ if(!refs.list) return; refs.list.innerHTML; pl.forEach(function(tr,i){ var lidocument.createElement(li); li.classNamepv-audio__item; li.setAttribute(role,option); li.dataset.indexi; li.innerHTMLbutton typebutton classpv-audio__play data-index+i+ aria-labelLire +esc(labelOf(tr))+>▶/button> span classpv-audio__t>+esc(labelOf(tr))+/span>; refs.list.appendChild(li); }); } function highlightCurrent(){ if(!refs.list) return; .forEach.call(refs.list.querySelectorAll(.pv-audio__item), function(li){ li.classList.toggle(is-current, String(li.dataset.index)String(cur)); }); } function pinActiveAtTop(){ if(!refs.list) return; var li refs.list.querySelector(.pv-audio__itemdata-index+cur+); if(!li) return; var prev refs.list.style.scrollBehavior; refs.list.style.scrollBehaviorauto; var d li.getBoundingClientRect().top - refs.list.getBoundingClientRect().top; refs.list.scrollTop Math.max(0, Math.min(refs.list.scrollTop + d, refs.list.scrollHeight - refs.list.clientHeight)); refs.list.style.scrollBehavior prev || ; } function playIndex(i){ var trpli; if(!tr) return; curi; setAudioSource(tr.src, tr.type); if(refs.titleEl) refs.titleEl.textContent labelOf(tr); highlightCurrent(); pinActiveAtTop(); refs.audio.play().catch(()>{}); } // Build + wire rebuildList(); highlightCurrent(); pinActiveAtTop(); if(refs.list){ refs.list.addEventListener(click, function(e){ var be.target.closest(data-index); if(!b) return; playIndex(parseInt(b.dataset.index,10)||0); }, true); } if(refs.ppBtn) refs.ppBtn.addEventListener(click, function(e){ e.preventDefault(); if((!refs.audio.currentSrc||refs.audio.currentSrc) && pl.length){ return playIndex(cur); } if(refs.audio.paused) refs.audio.play().catch(()>{}); else refs.audio.pause(); }, true); if(refs.nextBtn) refs.nextBtn.addEventListener(click, function(e){ e.preventDefault(); if(!pl.length) return; playIndex((cur+1)%pl.length); }, true); // Progress if(refs.progress || refs.seekBar){ function updateProgress(){ if(!refs.progress || !refs.audio.duration) return; var p(refs.audio.currentTime/refs.audio.duration)*100; refs.progress.style.width(isFinite(p)?Math.max(0,Math.min(100,p)):0)+%; if(refs.seekBar){ refs.seekBar.setAttribute(aria-valuemin,0); refs.seekBar.setAttribute(aria-valuemax,100); refs.seekBar.setAttribute(aria-valuenow, String(Math.round(p||0))); } } refs.audio.addEventListener(timeupdate, updateProgress, false); refs.audio.addEventListener(loadedmetadata, updateProgress, false); if(refs.seekBar){ refs.seekBar.addEventListener(click, function(e){ var rrefs.seekBar.getBoundingClientRect(); var xMath.max(0, Math.min(r.width, e.clientX - r.left)); var ratio r.width ? (x / r.width) : 0; if(refs.audio.duration) refs.audio.currentTime ratio * refs.audio.duration; }, false); } } refs.audio.addEventListener(ended, function(){ if(pl.length) playIndex((cur+1)%pl.length); }, false); // Changement d’onglet Bootstrap → re-scope et re-pin if (window.jQuery){ jQuery(adata-toggletab).on(shown.bs.tab, function(){ refs getRefs(); if (!refs.audio) return; rebuildList(); highlightCurrent(); pinActiveAtTop(); }); }})();/script>script>document.addEventListener(DOMContentLoaded, function(){ document.querySelectorAll(#pvPlaylist .list-group-item, #pvPlaylist .pv-audio__item) .forEach(li > { li.style.cursor pointer; });});/script>script>/* Single Active Player — pause tous les autres médias quand un démarre */(function () { // Si tu préfères ne pas scanner tout le DOM à chaque fois, // tu peux activer le mode dernier actif en décommentant __PV_ACTIVE_MEDIA. let lastActive null; document.addEventListener(play, function (e) { const el e.target; if (!(el instanceof HTMLMediaElement)) return; // Variante A : pause tout ce qui joue (fiable si plein déléments dynamiques) //document.querySelectorAll(audio, video).forEach(m > { // if (m ! el && !m.paused && !m.ended) { // try { // m.pause(); // // Event custom pratique si tu veux resynchroniser un bouton Play/Pause // m.dispatchEvent(new CustomEvent(pv:paused-by-other, { bubbles: false })); // } catch (_) {} // } //}); // Variante B (plus perf) : n’arrête que le précédent actif if (lastActive && lastActive ! el && !lastActive.paused) { try { lastActive.pause(); lastActive.dispatchEvent(new CustomEvent(pv:paused-by-other, { bubbles: false })); } catch (_){} } lastActive el; }, true); // capture true pour attraper play (qui ne bubble pas)})();/script>script>/* Deep-link des onglets #pane-XX + scroll vers la section #products */(function($){ if (window.__PV_TAB_DEEPLINK__) return; window.__PV_TAB_DEEPLINK__ true; $(function(){ // Empêche le saut auto du navigateur vers l’ancre au chargement if (scrollRestoration in history) history.scrollRestoration manual; if (location.hash && /^#pane-\d+/.test(location.hash)) window.scrollTo(0, 0); function openByHash(hash){ if (!hash || !/^#pane-\d+/.test(hash)) return; var $link $(#prodTabs ahref+hash+); if (!$link.length) return; // Active l’onglet ciblé $link.tab(show); // Puis scroll doux vers la section produits var $section $(#products); if ($section.length){ var y Math.max(0, $section.offset().top - 10); $(html, body).stop(true).animate({ scrollTop: y }, 250); } } // Ouvre l’onglet demandé à l’arrivée sur la page (ex: /#pane-15) openByHash(location.hash); // Support navigation arrière/avant du navigateur $(window).on(hashchange, function(){ openByHash(location.hash); }); // Quand on change d’onglet manuellement, met à jour l’URL sans casser le scroll $(#prodTabs adata-toggletab).on(shown.bs.tab, function(e){ var target e.target.hash; // ex: #pane-15 if (target && /^#pane-\d+/.test(target)) { if (history.replaceState) { history.replaceState(null, null, target); } else { var y window.pageYOffset || document.documentElement.scrollTop; window.location.hash target; window.scrollTo(0, y); } } }); });})(jQuery);/script>script>jQuery(function($){ // Stop/Reset on tab change (Bootstrap 3) $(#prodTabs adata-toggletab).on(show.bs.tab, function () { // 1) Pause + remet à 0 tous les audios (bar + players d’onglets) document.querySelectorAll(audio).forEach(function(a){ try { a.pause(); a.currentTime 0; } catch(_){} }); // 2) Sync visuel de la barre horizontale (#music-player-bar) var bar document.getElementById(music-player-bar); if (bar) { bar.classList.remove(is-playing); var btn bar.querySelector(#pvPlayPauseBtn); if (btn) btn.setAttribute(aria-pressed,false); } });});/script>/html>
Subdomains
Date
Domain
IP
webmail.sonoklip.com
2026-02-11
24.37.85.102
www.sonoklip.com
2026-02-12
24.37.85.102
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]