{"id":178,"date":"2021-09-21T17:33:04","date_gmt":"2021-09-21T17:33:04","guid":{"rendered":"https:\/\/edumusique.ch\/wp\/?page_id=178"},"modified":"2026-05-27T20:42:02","modified_gmt":"2026-05-27T20:42:02","slug":"rythme-9h","status":"publish","type":"page","link":"https:\/\/edumusique.ch\/?page_id=178","title":{"rendered":"Rythme"},"content":{"rendered":"\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/edumusique.ch\/wp-content\/uploads\/2025\/08\/langage-rythmique-tableau.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 langage rythmique tableau.\"><\/object><a id=\"wp-block-file--media-3db14c72-b824-4350-a847-d7898f8d298b\" href=\"https:\/\/edumusique.ch\/wp-content\/uploads\/2025\/08\/langage-rythmique-tableau.pdf\">langage rythmique tableau<\/a><a href=\"https:\/\/edumusique.ch\/wp-content\/uploads\/2025\/08\/langage-rythmique-tableau.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-3db14c72-b824-4350-a847-d7898f8d298b\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reconnaissance rythmique<\/h2>\n\n\n\n<style>\n  #rythm1 * { box-sizing: border-box; }\n  #rythm1 { max-width: 920px; margin: 20px auto; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; background: #ffffff; border: 1px solid #e5e7eb; border-radius: 14px; box-shadow: 0 4px 14px rgba(0,0,0,0.06); color: #1f2937; line-height: 1.5; }\n  #rythm1 h2 { margin: 0 0 6px 0; font-size: 22px; color: #1e3a8a; text-align: center; }\n  #rythm1 .sub { text-align: center; color: #6b7280; margin-bottom: 18px; font-size: 14px; }\n  #rythm1 label.lbl { display: block; font-weight: 600; margin: 12px 0 6px; font-size: 14px; color: #374151; }\n  #rythm1 select, #rythm1 button { font-family: inherit; font-size: 15px; }\n  #rythm1 select { width: 100%; padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; background: #f9fafb; }\n  #rythm1 .row { display: flex; gap: 12px; flex-wrap: wrap; }\n  #rythm1 .row > div { flex: 1; min-width: 220px; }\n  #rythm1 .btn { display: inline-block; padding: 12px 22px; border: none; border-radius: 8px; cursor: pointer; font-weight: 600; background: #1e3a8a; color: #fff; width: 100%; margin-top: 18px; font-size: 16px; }\n  #rythm1 .btn:hover { background: #1e40af; }\n  #rythm1 .progress { display: flex; justify-content: space-between; font-size: 13px; color: #6b7280; margin-bottom: 14px; }\n  #rythm1 .instr { font-weight: 600; color: #111827; margin-bottom: 12px; text-align: center; }\n  #rythm1 .grid { display: flex; flex-direction: column; gap: 24px; align-items: stretch; }\n  #rythm1 .col-t { font-size: 12px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; text-align: center; }\n  #rythm1 .col { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }\n  #rythm1 .card { padding: 10px; border: 2px solid #e5e7eb; border-radius: 10px; background: #f9fafb; cursor: pointer; transition: border-color .15s, background .15s, opacity .3s; }\n  #rythm1 .card:hover:not(.matched) { border-color: #1e3a8a; background: #eff6ff; }\n  #rythm1 .card.selected { border-color: #1e3a8a; background: #dbeafe; }\n  #rythm1 .card.matched { border-color: #16a34a; background: #dcfce7; opacity: 0.7; cursor: default; }\n  #rythm1 .card.wrong { border-color: #dc2626; background: #fee2e2; }\n  #rythm1 .card-lab { font-weight: 700; color: #1e3a8a; font-size: 14px; margin-bottom: 4px; text-align: center; }\n  #rythm1 .card audio { width: 100%; margin-top: 4px; }\n  #rythm1 .card img { width: 100%; height: auto; display: block; border-radius: 4px; }\n  #rythm1 .final { text-align: center; padding: 20px 10px; }\n  #rythm1 .final h3 { color: #1e3a8a; margin: 0 0 10px 0; font-size: 22px; }\n  #rythm1 .score { font-size: 28px; font-weight: 700; color: #1e3a8a; margin: 14px 0; }\n  #rythm1 .mention { font-size: 16px; color: #6b7280; margin-bottom: 18px; }\n  #rythm1 .hi { display: none; }\n<\/style>\n\n<div id=\"rythm1\">\n  <h2>Associer un rythme \u00e0 son audio \u2014 exercice 1<\/h2>\n  <p class=\"sub\">\u00c9coute chaque extrait et associe-le \u00e0 la bonne notation rythmique<\/p>\n\n  <div id=\"rythm1-start\">\n    <div class=\"row\">\n      <div>\n        <label class=\"lbl\" for=\"rythm1-nb\">Nombre de rythmes<\/label>\n        <select id=\"rythm1-nb\">\n          <option value=\"4\">4 rythmes<\/option>\n          <option value=\"6\">6 rythmes<\/option>\n          <option value=\"all\" selected>Les 8 rythmes<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n    <button type=\"button\" class=\"btn\" id=\"rythm1-start-btn\">Commencer<\/button>\n  <\/div>\n\n  <div id=\"rythm1-quiz\" class=\"hi\">\n    <div class=\"progress\">\n      <span id=\"rythm1-prog\">0 \/ 0 trouv\u00e9s<\/span>\n      <span id=\"rythm1-tries\">Essais : 0<\/span>\n    <\/div>\n    <div class=\"instr\">Associe chaque image \u00e0 l&rsquo;extrait audio correspondant<\/div>\n    <div class=\"grid\">\n      <div>\n        <div class=\"col-t\">Notations rythmiques<\/div>\n        <div class=\"col\" id=\"rythm1-col-img\"><\/div>\n      <\/div>\n      <div>\n        <div class=\"col-t\">Extraits audio<\/div>\n        <div class=\"col\" id=\"rythm1-col-aud\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"rythm1-end\" class=\"hi\">\n    <div class=\"final\">\n      <h3>Bravo, tout est associ\u00e9 !<\/h3>\n      <div class=\"score\" id=\"rythm1-final\"><\/div>\n      <div class=\"mention\" id=\"rythm1-mention\"><\/div>\n      <button type=\"button\" class=\"btn\" id=\"rythm1-restart\">Recommencer<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  var BASE = \"https:\/\/edumusique.ch\/wp-content\/uploads\/2026\/05\/\";\n  var PREFIX = \"1\";  \/\/ \"1\" pour cet exercice\n  var LETTRES = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\"];\n\n  var EXTRAITS = LETTRES.map(function(L){\n    return { id:L, audio: BASE + encodeURIComponent(PREFIX + L) + \".mp3\", image: BASE + encodeURIComponent(PREFIX + L) + \".jpg\" };\n  });\n\n  function shuffle(a){ var arr=a.slice(); for(var i=arr.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=arr[i];arr[i]=arr[j];arr[j]=t;} return arr; }\n\n  var pairs=[], selectedAudio=null, selectedImg=null, tries=0, found=0;\n  var $ = function(id){ return document.getElementById(id); };\n  var startScreen=$(\"rythm1-start\"), quizScreen=$(\"rythm1-quiz\"), endScreen=$(\"rythm1-end\");\n  var colAud=$(\"rythm1-col-aud\"), colImg=$(\"rythm1-col-img\");\n\n  $(\"rythm1-start-btn\").addEventListener(\"click\", start);\n  $(\"rythm1-restart\").addEventListener(\"click\", function(){ endScreen.classList.add(\"hi\"); startScreen.classList.remove(\"hi\"); });\n\n  function start(){\n    var nb=$(\"rythm1-nb\").value;\n    var n = (nb===\"all\") ? EXTRAITS.length : Math.min(parseInt(nb,10), EXTRAITS.length);\n    pairs = shuffle(EXTRAITS).slice(0,n);\n    selectedAudio=null; selectedImg=null; tries=0; found=0;\n    startScreen.classList.add(\"hi\"); endScreen.classList.add(\"hi\"); quizScreen.classList.remove(\"hi\");\n    render();\n  }\n  function render(){\n    updateProg();\n    var idx = pairs.map(function(_,i){return i;});\n    var audOrder=shuffle(idx), imgOrder=shuffle(idx);\n    colAud.innerHTML=\"\"; colImg.innerHTML=\"\";\n    audOrder.forEach(function(i, displayIdx){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var lab=document.createElement(\"div\"); lab.className=\"card-lab\"; lab.textContent=\"Extrait \"+(displayIdx+1);\n      var audio=document.createElement(\"audio\"); audio.controls=true; audio.preload=\"none\"; audio.src=pairs[i].audio;\n      card.appendChild(lab); card.appendChild(audio);\n      card.addEventListener(\"click\", function(e){ if(e.target.closest(\"audio\")) return; onClick(\"aud\",i,card); });\n      colAud.appendChild(card);\n    });\n    imgOrder.forEach(function(i){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var img=document.createElement(\"img\"); img.src=pairs[i].image; img.alt=\"rythme\";\n      card.appendChild(img);\n      card.addEventListener(\"click\", function(){ onClick(\"img\",i,card); });\n      colImg.appendChild(card);\n    });\n  }\n  function updateProg(){\n    $(\"rythm1-prog\").textContent = found+\" \/ \"+pairs.length+\" trouv\u00e9s\";\n    $(\"rythm1-tries\").textContent = \"Essais : \"+tries;\n  }\n  function onClick(col, id, el){\n    if (el.classList.contains(\"matched\")) return;\n    var other = (col===\"aud\") ? selectedImg : selectedAudio;\n    var prev  = (col===\"aud\") ? selectedAudio : selectedImg;\n    if (prev && prev.el!==el) prev.el.classList.remove(\"selected\");\n    if (col===\"aud\") selectedAudio={id:id,el:el}; else selectedImg={id:id,el:el};\n    el.classList.add(\"selected\");\n    if (other){\n      tries++;\n      var a=(col===\"aud\")?selectedAudio:other, t=(col===\"aud\")?other:selectedImg;\n      if (a.id===t.id){\n        a.el.classList.remove(\"selected\"); a.el.classList.add(\"matched\");\n        t.el.classList.remove(\"selected\"); t.el.classList.add(\"matched\");\n        found++; selectedAudio=null; selectedImg=null; updateProg();\n        if (found===pairs.length) setTimeout(finish, 600);\n      } else {\n        a.el.classList.add(\"wrong\"); t.el.classList.add(\"wrong\");\n        var aEl=a.el, tEl=t.el; selectedAudio=null; selectedImg=null; updateProg();\n        setTimeout(function(){ aEl.classList.remove(\"wrong\",\"selected\"); tEl.classList.remove(\"wrong\",\"selected\"); }, 700);\n      }\n    }\n  }\n  function finish(){\n    quizScreen.classList.add(\"hi\"); endScreen.classList.remove(\"hi\");\n    $(\"rythm1-final\").textContent = pairs.length+\" rythmes en \"+tries+\" essais\";\n    var acc=Math.round((pairs.length\/tries)*100), m=\"\";\n    if (tries===pairs.length) m=\"Parfait, aucun essai rat\u00e9 !\";\n    else if (acc>=80) m=\"Excellent ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=60) m=\"Bien jou\u00e9 ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=40) m=\"Pas mal ! \"+acc+\"% de r\u00e9ussite.\";\n    else m=\"Continue \u00e0 t'entra\u00eener ! \"+acc+\"% de r\u00e9ussite.\";\n    $(\"rythm1-mention\").textContent = m;\n  }\n})();\n<\/script>\n\n\n\n<style>\n  #rythm2 * { box-sizing: border-box; }\n  #rythm2 { max-width: 920px; margin: 20px auto; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; background: #ffffff; border: 1px solid #e5e7eb; border-radius: 14px; box-shadow: 0 4px 14px rgba(0,0,0,0.06); color: #1f2937; line-height: 1.5; }\n  #rythm2 h2 { margin: 0 0 6px 0; font-size: 22px; color: #1e3a8a; text-align: center; }\n  #rythm2 .sub { text-align: center; color: #6b7280; margin-bottom: 18px; font-size: 14px; }\n  #rythm2 label.lbl { display: block; font-weight: 600; margin: 12px 0 6px; font-size: 14px; color: #374151; }\n  #rythm2 select, #rythm2 button { font-family: inherit; font-size: 15px; }\n  #rythm2 select { width: 100%; padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; background: #f9fafb; }\n  #rythm2 .row { display: flex; gap: 12px; flex-wrap: wrap; }\n  #rythm2 .row > div { flex: 1; min-width: 220px; }\n  #rythm2 .btn { display: inline-block; padding: 12px 22px; border: none; border-radius: 8px; cursor: pointer; font-weight: 600; background: #1e3a8a; color: #fff; width: 100%; margin-top: 18px; font-size: 16px; }\n  #rythm2 .btn:hover { background: #1e40af; }\n  #rythm2 .progress { display: flex; justify-content: space-between; font-size: 13px; color: #6b7280; margin-bottom: 14px; }\n  #rythm2 .instr { font-weight: 600; color: #111827; margin-bottom: 12px; text-align: center; }\n  #rythm2 .grid { display: flex; flex-direction: column; gap: 24px; align-items: stretch; }\n  #rythm2 .col-t { font-size: 12px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; text-align: center; }\n  #rythm2 .col { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }\n  #rythm2 .card { padding: 10px; border: 2px solid #e5e7eb; border-radius: 10px; background: #f9fafb; cursor: pointer; transition: border-color .15s, background .15s, opacity .3s; }\n  #rythm2 .card:hover:not(.matched) { border-color: #1e3a8a; background: #eff6ff; }\n  #rythm2 .card.selected { border-color: #1e3a8a; background: #dbeafe; }\n  #rythm2 .card.matched { border-color: #16a34a; background: #dcfce7; opacity: 0.7; cursor: default; }\n  #rythm2 .card.wrong { border-color: #dc2626; background: #fee2e2; }\n  #rythm2 .card-lab { font-weight: 700; color: #1e3a8a; font-size: 14px; margin-bottom: 4px; text-align: center; }\n  #rythm2 .card audio { width: 100%; margin-top: 4px; }\n  #rythm2 .card img { width: 100%; height: auto; display: block; border-radius: 4px; }\n  #rythm2 .final { text-align: center; padding: 20px 10px; }\n  #rythm2 .final h3 { color: #1e3a8a; margin: 0 0 10px 0; font-size: 22px; }\n  #rythm2 .score { font-size: 28px; font-weight: 700; color: #1e3a8a; margin: 14px 0; }\n  #rythm2 .mention { font-size: 16px; color: #6b7280; margin-bottom: 18px; }\n  #rythm2 .hi { display: none; }\n<\/style>\n\n<div id=\"rythm2\">\n  <h2>Associer un rythme \u00e0 son audio \u2014 exercice 2<\/h2>\n  <p class=\"sub\">\u00c9coute chaque extrait et associe-le \u00e0 la bonne notation rythmique<\/p>\n\n  <div id=\"rythm2-start\">\n    <div class=\"row\">\n      <div>\n        <label class=\"lbl\" for=\"rythm2-nb\">Nombre de rythmes<\/label>\n        <select id=\"rythm2-nb\">\n          <option value=\"4\">4 rythmes<\/option>\n          <option value=\"6\">6 rythmes<\/option>\n          <option value=\"all\" selected>Les 8 rythmes<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n    <button type=\"button\" class=\"btn\" id=\"rythm2-start-btn\">Commencer<\/button>\n  <\/div>\n\n  <div id=\"rythm2-quiz\" class=\"hi\">\n    <div class=\"progress\">\n      <span id=\"rythm2-prog\">0 \/ 0 trouv\u00e9s<\/span>\n      <span id=\"rythm2-tries\">Essais : 0<\/span>\n    <\/div>\n    <div class=\"instr\">Associe chaque image \u00e0 l&rsquo;extrait audio correspondant<\/div>\n    <div class=\"grid\">\n      <div>\n        <div class=\"col-t\">Notations rythmiques<\/div>\n        <div class=\"col\" id=\"rythm2-col-img\"><\/div>\n      <\/div>\n      <div>\n        <div class=\"col-t\">Extraits audio<\/div>\n        <div class=\"col\" id=\"rythm2-col-aud\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"rythm2-end\" class=\"hi\">\n    <div class=\"final\">\n      <h3>Bravo, tout est associ\u00e9 !<\/h3>\n      <div class=\"score\" id=\"rythm2-final\"><\/div>\n      <div class=\"mention\" id=\"rythm2-mention\"><\/div>\n      <button type=\"button\" class=\"btn\" id=\"rythm2-restart\">Recommencer<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  var BASE = \"https:\/\/edumusique.ch\/wp-content\/uploads\/2026\/05\/\";\n  var PREFIX = \"2\";\n  var LETTRES = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\"];\n\n  var EXTRAITS = LETTRES.map(function(L){\n    return { id:L, audio: BASE + encodeURIComponent(PREFIX + L) + \".mp3\", image: BASE + encodeURIComponent(PREFIX + L) + \".jpg\" };\n  });\n\n  function shuffle(a){ var arr=a.slice(); for(var i=arr.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=arr[i];arr[i]=arr[j];arr[j]=t;} return arr; }\n\n  var pairs=[], selectedAudio=null, selectedImg=null, tries=0, found=0;\n  var $ = function(id){ return document.getElementById(id); };\n  var startScreen=$(\"rythm2-start\"), quizScreen=$(\"rythm2-quiz\"), endScreen=$(\"rythm2-end\");\n  var colAud=$(\"rythm2-col-aud\"), colImg=$(\"rythm2-col-img\");\n\n  $(\"rythm2-start-btn\").addEventListener(\"click\", start);\n  $(\"rythm2-restart\").addEventListener(\"click\", function(){ endScreen.classList.add(\"hi\"); startScreen.classList.remove(\"hi\"); });\n\n  function start(){\n    var nb=$(\"rythm2-nb\").value;\n    var n = (nb===\"all\") ? EXTRAITS.length : Math.min(parseInt(nb,10), EXTRAITS.length);\n    pairs = shuffle(EXTRAITS).slice(0,n);\n    selectedAudio=null; selectedImg=null; tries=0; found=0;\n    startScreen.classList.add(\"hi\"); endScreen.classList.add(\"hi\"); quizScreen.classList.remove(\"hi\");\n    render();\n  }\n  function render(){\n    updateProg();\n    var idx = pairs.map(function(_,i){return i;});\n    var audOrder=shuffle(idx), imgOrder=shuffle(idx);\n    colAud.innerHTML=\"\"; colImg.innerHTML=\"\";\n    audOrder.forEach(function(i, displayIdx){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var lab=document.createElement(\"div\"); lab.className=\"card-lab\"; lab.textContent=\"Extrait \"+(displayIdx+1);\n      var audio=document.createElement(\"audio\"); audio.controls=true; audio.preload=\"none\"; audio.src=pairs[i].audio;\n      card.appendChild(lab); card.appendChild(audio);\n      card.addEventListener(\"click\", function(e){ if(e.target.closest(\"audio\")) return; onClick(\"aud\",i,card); });\n      colAud.appendChild(card);\n    });\n    imgOrder.forEach(function(i){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var img=document.createElement(\"img\"); img.src=pairs[i].image; img.alt=\"rythme\";\n      card.appendChild(img);\n      card.addEventListener(\"click\", function(){ onClick(\"img\",i,card); });\n      colImg.appendChild(card);\n    });\n  }\n  function updateProg(){\n    $(\"rythm2-prog\").textContent = found+\" \/ \"+pairs.length+\" trouv\u00e9s\";\n    $(\"rythm2-tries\").textContent = \"Essais : \"+tries;\n  }\n  function onClick(col, id, el){\n    if (el.classList.contains(\"matched\")) return;\n    var other = (col===\"aud\") ? selectedImg : selectedAudio;\n    var prev  = (col===\"aud\") ? selectedAudio : selectedImg;\n    if (prev && prev.el!==el) prev.el.classList.remove(\"selected\");\n    if (col===\"aud\") selectedAudio={id:id,el:el}; else selectedImg={id:id,el:el};\n    el.classList.add(\"selected\");\n    if (other){\n      tries++;\n      var a=(col===\"aud\")?selectedAudio:other, t=(col===\"aud\")?other:selectedImg;\n      if (a.id===t.id){\n        a.el.classList.remove(\"selected\"); a.el.classList.add(\"matched\");\n        t.el.classList.remove(\"selected\"); t.el.classList.add(\"matched\");\n        found++; selectedAudio=null; selectedImg=null; updateProg();\n        if (found===pairs.length) setTimeout(finish, 600);\n      } else {\n        a.el.classList.add(\"wrong\"); t.el.classList.add(\"wrong\");\n        var aEl=a.el, tEl=t.el; selectedAudio=null; selectedImg=null; updateProg();\n        setTimeout(function(){ aEl.classList.remove(\"wrong\",\"selected\"); tEl.classList.remove(\"wrong\",\"selected\"); }, 700);\n      }\n    }\n  }\n  function finish(){\n    quizScreen.classList.add(\"hi\"); endScreen.classList.remove(\"hi\");\n    $(\"rythm2-final\").textContent = pairs.length+\" rythmes en \"+tries+\" essais\";\n    var acc=Math.round((pairs.length\/tries)*100), m=\"\";\n    if (tries===pairs.length) m=\"Parfait, aucun essai rat\u00e9 !\";\n    else if (acc>=80) m=\"Excellent ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=60) m=\"Bien jou\u00e9 ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=40) m=\"Pas mal ! \"+acc+\"% de r\u00e9ussite.\";\n    else m=\"Continue \u00e0 t'entra\u00eener ! \"+acc+\"% de r\u00e9ussite.\";\n    $(\"rythm2-mention\").textContent = m;\n  }\n})();\n<\/script>\n\n\n\n<style>\n  #rythm3 * { box-sizing: border-box; }\n  #rythm3 { max-width: 920px; margin: 20px auto; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; background: #ffffff; border: 1px solid #e5e7eb; border-radius: 14px; box-shadow: 0 4px 14px rgba(0,0,0,0.06); color: #1f2937; line-height: 1.5; }\n  #rythm3 h2 { margin: 0 0 6px 0; font-size: 22px; color: #1e3a8a; text-align: center; }\n  #rythm3 .sub { text-align: center; color: #6b7280; margin-bottom: 18px; font-size: 14px; }\n  #rythm3 label.lbl { display: block; font-weight: 600; margin: 12px 0 6px; font-size: 14px; color: #374151; }\n  #rythm3 select, #rythm3 button { font-family: inherit; font-size: 15px; }\n  #rythm3 select { width: 100%; padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; background: #f9fafb; }\n  #rythm3 .row { display: flex; gap: 12px; flex-wrap: wrap; }\n  #rythm3 .row > div { flex: 1; min-width: 220px; }\n  #rythm3 .btn { display: inline-block; padding: 12px 22px; border: none; border-radius: 8px; cursor: pointer; font-weight: 600; background: #1e3a8a; color: #fff; width: 100%; margin-top: 18px; font-size: 16px; }\n  #rythm3 .btn:hover { background: #1e40af; }\n  #rythm3 .progress { display: flex; justify-content: space-between; font-size: 13px; color: #6b7280; margin-bottom: 14px; }\n  #rythm3 .instr { font-weight: 600; color: #111827; margin-bottom: 12px; text-align: center; }\n  #rythm3 .grid { display: flex; flex-direction: column; gap: 24px; align-items: stretch; }\n  #rythm3 .col-t { font-size: 12px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; text-align: center; }\n  #rythm3 .col { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }\n  #rythm3 .card { padding: 10px; border: 2px solid #e5e7eb; border-radius: 10px; background: #f9fafb; cursor: pointer; transition: border-color .15s, background .15s, opacity .3s; }\n  #rythm3 .card:hover:not(.matched) { border-color: #1e3a8a; background: #eff6ff; }\n  #rythm3 .card.selected { border-color: #1e3a8a; background: #dbeafe; }\n  #rythm3 .card.matched { border-color: #16a34a; background: #dcfce7; opacity: 0.7; cursor: default; }\n  #rythm3 .card.wrong { border-color: #dc2626; background: #fee2e2; }\n  #rythm3 .card-lab { font-weight: 700; color: #1e3a8a; font-size: 14px; margin-bottom: 4px; text-align: center; }\n  #rythm3 .card audio { width: 100%; margin-top: 4px; }\n  #rythm3 .card img { width: 100%; height: auto; display: block; border-radius: 4px; }\n  #rythm3 .final { text-align: center; padding: 20px 10px; }\n  #rythm3 .final h3 { color: #1e3a8a; margin: 0 0 10px 0; font-size: 22px; }\n  #rythm3 .score { font-size: 28px; font-weight: 700; color: #1e3a8a; margin: 14px 0; }\n  #rythm3 .mention { font-size: 16px; color: #6b7280; margin-bottom: 18px; }\n  #rythm3 .hi { display: none; }\n<\/style>\n\n<div id=\"rythm3\">\n  <h2>Associer un rythme \u00e0 son audio \u2014 exercice 3<\/h2>\n  <p class=\"sub\">\u00c9coute chaque extrait et associe-le \u00e0 la bonne notation rythmique<\/p>\n\n  <div id=\"rythm3-start\">\n    <div class=\"row\">\n      <div>\n        <label class=\"lbl\" for=\"rythm3-nb\">Nombre de rythmes<\/label>\n        <select id=\"rythm3-nb\">\n          <option value=\"4\">4 rythmes<\/option>\n          <option value=\"6\">6 rythmes<\/option>\n          <option value=\"all\" selected>Les 8 rythmes<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n    <button type=\"button\" class=\"btn\" id=\"rythm3-start-btn\">Commencer<\/button>\n  <\/div>\n\n  <div id=\"rythm3-quiz\" class=\"hi\">\n    <div class=\"progress\">\n      <span id=\"rythm3-prog\">0 \/ 0 trouv\u00e9s<\/span>\n      <span id=\"rythm3-tries\">Essais : 0<\/span>\n    <\/div>\n    <div class=\"instr\">Associe chaque image \u00e0 l&rsquo;extrait audio correspondant<\/div>\n    <div class=\"grid\">\n      <div>\n        <div class=\"col-t\">Notations rythmiques<\/div>\n        <div class=\"col\" id=\"rythm3-col-img\"><\/div>\n      <\/div>\n      <div>\n        <div class=\"col-t\">Extraits audio<\/div>\n        <div class=\"col\" id=\"rythm3-col-aud\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"rythm3-end\" class=\"hi\">\n    <div class=\"final\">\n      <h3>Bravo, tout est associ\u00e9 !<\/h3>\n      <div class=\"score\" id=\"rythm3-final\"><\/div>\n      <div class=\"mention\" id=\"rythm3-mention\"><\/div>\n      <button type=\"button\" class=\"btn\" id=\"rythm3-restart\">Recommencer<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  var BASE = \"https:\/\/edumusique.ch\/wp-content\/uploads\/2026\/05\/\";\n  var PREFIX = \"3\";\n  var LETTRES = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\"];\n\n  var EXTRAITS = LETTRES.map(function(L){\n    return { id:L, audio: BASE + encodeURIComponent(PREFIX + L) + \".mp3\", image: BASE + encodeURIComponent(PREFIX + L) + \".jpg\" };\n  });\n\n  function shuffle(a){ var arr=a.slice(); for(var i=arr.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=arr[i];arr[i]=arr[j];arr[j]=t;} return arr; }\n\n  var pairs=[], selectedAudio=null, selectedImg=null, tries=0, found=0;\n  var $ = function(id){ return document.getElementById(id); };\n  var startScreen=$(\"rythm3-start\"), quizScreen=$(\"rythm3-quiz\"), endScreen=$(\"rythm3-end\");\n  var colAud=$(\"rythm3-col-aud\"), colImg=$(\"rythm3-col-img\");\n\n  $(\"rythm3-start-btn\").addEventListener(\"click\", start);\n  $(\"rythm3-restart\").addEventListener(\"click\", function(){ endScreen.classList.add(\"hi\"); startScreen.classList.remove(\"hi\"); });\n\n  function start(){\n    var nb=$(\"rythm3-nb\").value;\n    var n = (nb===\"all\") ? EXTRAITS.length : Math.min(parseInt(nb,10), EXTRAITS.length);\n    pairs = shuffle(EXTRAITS).slice(0,n);\n    selectedAudio=null; selectedImg=null; tries=0; found=0;\n    startScreen.classList.add(\"hi\"); endScreen.classList.add(\"hi\"); quizScreen.classList.remove(\"hi\");\n    render();\n  }\n  function render(){\n    updateProg();\n    var idx = pairs.map(function(_,i){return i;});\n    var audOrder=shuffle(idx), imgOrder=shuffle(idx);\n    colAud.innerHTML=\"\"; colImg.innerHTML=\"\";\n    audOrder.forEach(function(i, displayIdx){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var lab=document.createElement(\"div\"); lab.className=\"card-lab\"; lab.textContent=\"Extrait \"+(displayIdx+1);\n      var audio=document.createElement(\"audio\"); audio.controls=true; audio.preload=\"none\"; audio.src=pairs[i].audio;\n      card.appendChild(lab); card.appendChild(audio);\n      card.addEventListener(\"click\", function(e){ if(e.target.closest(\"audio\")) return; onClick(\"aud\",i,card); });\n      colAud.appendChild(card);\n    });\n    imgOrder.forEach(function(i){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var img=document.createElement(\"img\"); img.src=pairs[i].image; img.alt=\"rythme\";\n      card.appendChild(img);\n      card.addEventListener(\"click\", function(){ onClick(\"img\",i,card); });\n      colImg.appendChild(card);\n    });\n  }\n  function updateProg(){\n    $(\"rythm3-prog\").textContent = found+\" \/ \"+pairs.length+\" trouv\u00e9s\";\n    $(\"rythm3-tries\").textContent = \"Essais : \"+tries;\n  }\n  function onClick(col, id, el){\n    if (el.classList.contains(\"matched\")) return;\n    var other = (col===\"aud\") ? selectedImg : selectedAudio;\n    var prev  = (col===\"aud\") ? selectedAudio : selectedImg;\n    if (prev && prev.el!==el) prev.el.classList.remove(\"selected\");\n    if (col===\"aud\") selectedAudio={id:id,el:el}; else selectedImg={id:id,el:el};\n    el.classList.add(\"selected\");\n    if (other){\n      tries++;\n      var a=(col===\"aud\")?selectedAudio:other, t=(col===\"aud\")?other:selectedImg;\n      if (a.id===t.id){\n        a.el.classList.remove(\"selected\"); a.el.classList.add(\"matched\");\n        t.el.classList.remove(\"selected\"); t.el.classList.add(\"matched\");\n        found++; selectedAudio=null; selectedImg=null; updateProg();\n        if (found===pairs.length) setTimeout(finish, 600);\n      } else {\n        a.el.classList.add(\"wrong\"); t.el.classList.add(\"wrong\");\n        var aEl=a.el, tEl=t.el; selectedAudio=null; selectedImg=null; updateProg();\n        setTimeout(function(){ aEl.classList.remove(\"wrong\",\"selected\"); tEl.classList.remove(\"wrong\",\"selected\"); }, 700);\n      }\n    }\n  }\n  function finish(){\n    quizScreen.classList.add(\"hi\"); endScreen.classList.remove(\"hi\");\n    $(\"rythm3-final\").textContent = pairs.length+\" rythmes en \"+tries+\" essais\";\n    var acc=Math.round((pairs.length\/tries)*100), m=\"\";\n    if (tries===pairs.length) m=\"Parfait, aucun essai rat\u00e9 !\";\n    else if (acc>=80) m=\"Excellent ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=60) m=\"Bien jou\u00e9 ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=40) m=\"Pas mal ! \"+acc+\"% de r\u00e9ussite.\";\n    else m=\"Continue \u00e0 t'entra\u00eener ! \"+acc+\"% de r\u00e9ussite.\";\n    $(\"rythm3-mention\").textContent = m;\n  }\n})();\n<\/script>\n\n\n\n<style>\n  #rythm4 * { box-sizing: border-box; }\n  #rythm4 { max-width: 920px; margin: 20px auto; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; background: #ffffff; border: 1px solid #e5e7eb; border-radius: 14px; box-shadow: 0 4px 14px rgba(0,0,0,0.06); color: #1f2937; line-height: 1.5; }\n  #rythm4 h2 { margin: 0 0 6px 0; font-size: 22px; color: #1e3a8a; text-align: center; }\n  #rythm4 .sub { text-align: center; color: #6b7280; margin-bottom: 18px; font-size: 14px; }\n  #rythm4 label.lbl { display: block; font-weight: 600; margin: 12px 0 6px; font-size: 14px; color: #374151; }\n  #rythm4 select, #rythm4 button { font-family: inherit; font-size: 15px; }\n  #rythm4 select { width: 100%; padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; background: #f9fafb; }\n  #rythm4 .row { display: flex; gap: 12px; flex-wrap: wrap; }\n  #rythm4 .row > div { flex: 1; min-width: 220px; }\n  #rythm4 .btn { display: inline-block; padding: 12px 22px; border: none; border-radius: 8px; cursor: pointer; font-weight: 600; background: #1e3a8a; color: #fff; width: 100%; margin-top: 18px; font-size: 16px; }\n  #rythm4 .btn:hover { background: #1e40af; }\n  #rythm4 .progress { display: flex; justify-content: space-between; font-size: 13px; color: #6b7280; margin-bottom: 14px; }\n  #rythm4 .instr { font-weight: 600; color: #111827; margin-bottom: 12px; text-align: center; }\n  #rythm4 .grid { display: flex; flex-direction: column; gap: 24px; align-items: stretch; }\n  #rythm4 .col-t { font-size: 12px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; text-align: center; }\n  #rythm4 .col { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }\n  #rythm4 .card { padding: 10px; border: 2px solid #e5e7eb; border-radius: 10px; background: #f9fafb; cursor: pointer; transition: border-color .15s, background .15s, opacity .3s; }\n  #rythm4 .card:hover:not(.matched) { border-color: #1e3a8a; background: #eff6ff; }\n  #rythm4 .card.selected { border-color: #1e3a8a; background: #dbeafe; }\n  #rythm4 .card.matched { border-color: #16a34a; background: #dcfce7; opacity: 0.7; cursor: default; }\n  #rythm4 .card.wrong { border-color: #dc2626; background: #fee2e2; }\n  #rythm4 .card-lab { font-weight: 700; color: #1e3a8a; font-size: 14px; margin-bottom: 4px; text-align: center; }\n  #rythm4 .card audio { width: 100%; margin-top: 4px; }\n  #rythm4 .card img { width: 100%; height: auto; display: block; border-radius: 4px; }\n  #rythm4 .final { text-align: center; padding: 20px 10px; }\n  #rythm4 .final h3 { color: #1e3a8a; margin: 0 0 10px 0; font-size: 22px; }\n  #rythm4 .score { font-size: 28px; font-weight: 700; color: #1e3a8a; margin: 14px 0; }\n  #rythm4 .mention { font-size: 16px; color: #6b7280; margin-bottom: 18px; }\n  #rythm4 .hi { display: none; }\n<\/style>\n\n<div id=\"rythm4\">\n  <h2>Associer un rythme \u00e0 son audio \u2014 exercice 4<\/h2>\n  <p class=\"sub\">\u00c9coute chaque extrait et associe-le \u00e0 la bonne notation rythmique<\/p>\n\n  <div id=\"rythm4-start\">\n    <div class=\"row\">\n      <div>\n        <label class=\"lbl\" for=\"rythm4-nb\">Nombre de rythmes<\/label>\n        <select id=\"rythm4-nb\">\n          <option value=\"4\">4 rythmes<\/option>\n          <option value=\"6\">6 rythmes<\/option>\n          <option value=\"all\" selected>Les 8 rythmes<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n    <button type=\"button\" class=\"btn\" id=\"rythm4-start-btn\">Commencer<\/button>\n  <\/div>\n\n  <div id=\"rythm4-quiz\" class=\"hi\">\n    <div class=\"progress\">\n      <span id=\"rythm4-prog\">0 \/ 0 trouv\u00e9s<\/span>\n      <span id=\"rythm4-tries\">Essais : 0<\/span>\n    <\/div>\n    <div class=\"instr\">Associe chaque image \u00e0 l&rsquo;extrait audio correspondant<\/div>\n    <div class=\"grid\">\n      <div>\n        <div class=\"col-t\">Notations rythmiques<\/div>\n        <div class=\"col\" id=\"rythm4-col-img\"><\/div>\n      <\/div>\n      <div>\n        <div class=\"col-t\">Extraits audio<\/div>\n        <div class=\"col\" id=\"rythm4-col-aud\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"rythm4-end\" class=\"hi\">\n    <div class=\"final\">\n      <h3>Bravo, tout est associ\u00e9 !<\/h3>\n      <div class=\"score\" id=\"rythm4-final\"><\/div>\n      <div class=\"mention\" id=\"rythm4-mention\"><\/div>\n      <button type=\"button\" class=\"btn\" id=\"rythm4-restart\">Recommencer<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  var BASE = \"https:\/\/edumusique.ch\/wp-content\/uploads\/2026\/05\/\";\n  var PREFIX = \"4\";\n  var LETTRES = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\"];\n\n  var EXTRAITS = LETTRES.map(function(L){\n    return { id:L, audio: BASE + encodeURIComponent(PREFIX + L) + \".mp3\", image: BASE + encodeURIComponent(PREFIX + L) + \".jpg\" };\n  });\n\n  function shuffle(a){ var arr=a.slice(); for(var i=arr.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=arr[i];arr[i]=arr[j];arr[j]=t;} return arr; }\n\n  var pairs=[], selectedAudio=null, selectedImg=null, tries=0, found=0;\n  var $ = function(id){ return document.getElementById(id); };\n  var startScreen=$(\"rythm4-start\"), quizScreen=$(\"rythm4-quiz\"), endScreen=$(\"rythm4-end\");\n  var colAud=$(\"rythm4-col-aud\"), colImg=$(\"rythm4-col-img\");\n\n  $(\"rythm4-start-btn\").addEventListener(\"click\", start);\n  $(\"rythm4-restart\").addEventListener(\"click\", function(){ endScreen.classList.add(\"hi\"); startScreen.classList.remove(\"hi\"); });\n\n  function start(){\n    var nb=$(\"rythm4-nb\").value;\n    var n = (nb===\"all\") ? EXTRAITS.length : Math.min(parseInt(nb,10), EXTRAITS.length);\n    pairs = shuffle(EXTRAITS).slice(0,n);\n    selectedAudio=null; selectedImg=null; tries=0; found=0;\n    startScreen.classList.add(\"hi\"); endScreen.classList.add(\"hi\"); quizScreen.classList.remove(\"hi\");\n    render();\n  }\n  function render(){\n    updateProg();\n    var idx = pairs.map(function(_,i){return i;});\n    var audOrder=shuffle(idx), imgOrder=shuffle(idx);\n    colAud.innerHTML=\"\"; colImg.innerHTML=\"\";\n    audOrder.forEach(function(i, displayIdx){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var lab=document.createElement(\"div\"); lab.className=\"card-lab\"; lab.textContent=\"Extrait \"+(displayIdx+1);\n      var audio=document.createElement(\"audio\"); audio.controls=true; audio.preload=\"none\"; audio.src=pairs[i].audio;\n      card.appendChild(lab); card.appendChild(audio);\n      card.addEventListener(\"click\", function(e){ if(e.target.closest(\"audio\")) return; onClick(\"aud\",i,card); });\n      colAud.appendChild(card);\n    });\n    imgOrder.forEach(function(i){\n      var card=document.createElement(\"div\"); card.className=\"card\";\n      var img=document.createElement(\"img\"); img.src=pairs[i].image; img.alt=\"rythme\";\n      card.appendChild(img);\n      card.addEventListener(\"click\", function(){ onClick(\"img\",i,card); });\n      colImg.appendChild(card);\n    });\n  }\n  function updateProg(){\n    $(\"rythm4-prog\").textContent = found+\" \/ \"+pairs.length+\" trouv\u00e9s\";\n    $(\"rythm4-tries\").textContent = \"Essais : \"+tries;\n  }\n  function onClick(col, id, el){\n    if (el.classList.contains(\"matched\")) return;\n    var other = (col===\"aud\") ? selectedImg : selectedAudio;\n    var prev  = (col===\"aud\") ? selectedAudio : selectedImg;\n    if (prev && prev.el!==el) prev.el.classList.remove(\"selected\");\n    if (col===\"aud\") selectedAudio={id:id,el:el}; else selectedImg={id:id,el:el};\n    el.classList.add(\"selected\");\n    if (other){\n      tries++;\n      var a=(col===\"aud\")?selectedAudio:other, t=(col===\"aud\")?other:selectedImg;\n      if (a.id===t.id){\n        a.el.classList.remove(\"selected\"); a.el.classList.add(\"matched\");\n        t.el.classList.remove(\"selected\"); t.el.classList.add(\"matched\");\n        found++; selectedAudio=null; selectedImg=null; updateProg();\n        if (found===pairs.length) setTimeout(finish, 600);\n      } else {\n        a.el.classList.add(\"wrong\"); t.el.classList.add(\"wrong\");\n        var aEl=a.el, tEl=t.el; selectedAudio=null; selectedImg=null; updateProg();\n        setTimeout(function(){ aEl.classList.remove(\"wrong\",\"selected\"); tEl.classList.remove(\"wrong\",\"selected\"); }, 700);\n      }\n    }\n  }\n  function finish(){\n    quizScreen.classList.add(\"hi\"); endScreen.classList.remove(\"hi\");\n    $(\"rythm4-final\").textContent = pairs.length+\" rythmes en \"+tries+\" essais\";\n    var acc=Math.round((pairs.length\/tries)*100), m=\"\";\n    if (tries===pairs.length) m=\"Parfait, aucun essai rat\u00e9 !\";\n    else if (acc>=80) m=\"Excellent ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=60) m=\"Bien jou\u00e9 ! \"+acc+\"% de r\u00e9ussite.\";\n    else if (acc>=40) m=\"Pas mal ! \"+acc+\"% de r\u00e9ussite.\";\n    else m=\"Continue \u00e0 t'entra\u00eener ! \"+acc+\"% de r\u00e9ussite.\";\n    $(\"rythm4-mention\").textContent = m;\n  }\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 5<\/h5>\n\n\n\n<iframe src=\"\/\/LearningApps.org\/watch?app=3605903\" style=\"border:0px;width:100%;height:500px\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 6<\/h5>\n\n\n\n<iframe src=\"\/\/LearningApps.org\/watch?app=3740493\" style=\"border:0px;width:100%;height:500px\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 7<\/h5>\n\n\n\n<iframe src=\"https:\/\/learningapps.org\/watch?app=3740526\" style=\"border:0px;width:100%;height:500px\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 8<\/h5>\n\n\n\n<iframe src=\"https:\/\/learningapps.org\/watch?app=3741414\" style=\"border:0px;width:100%;height:500px\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 9<\/h5>\n\n\n\n<iframe src=\"https:\/\/learningapps.org\/watch?v=p0pdm386a21\" style=\"border:0px;width:100%;height:500px\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 10<\/h5>\n\n\n\n<iframe src=\"\/\/LearningApps.org\/watch?app=3745961\" style=\"border:0px;width:100%;height:500px\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h5 class=\"wp-block-heading\">Exercice 11<\/h5>\n\n\n\n<iframe src=\"\/\/LearningApps.org\/watch?app=3745961\" style=\"border:0px;width:100%;height:500px\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\"><\/iframe>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/www.musicca.com\/fr\/boite-a-rythmes?data=90-n-44-a--1dh3iklmop4j5abcefg6m7k-\">Bo\u00eete \u00e0 rythme<\/a><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Reconnaissance rythmique Associer un rythme \u00e0 son audio \u2014 exercice 1 \u00c9coute chaque extrait et associe-le \u00e0 la bonne notation<\/p>\n<p><a href=\"https:\/\/edumusique.ch\/?page_id=178\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">Rythme<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-178","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/edumusique.ch\/index.php?rest_route=\/wp\/v2\/pages\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edumusique.ch\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/edumusique.ch\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/edumusique.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/edumusique.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=178"}],"version-history":[{"count":44,"href":"https:\/\/edumusique.ch\/index.php?rest_route=\/wp\/v2\/pages\/178\/revisions"}],"predecessor-version":[{"id":7004,"href":"https:\/\/edumusique.ch\/index.php?rest_route=\/wp\/v2\/pages\/178\/revisions\/7004"}],"wp:attachment":[{"href":"https:\/\/edumusique.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}