1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2496],{2496:(e,t,r)=>{function n(e){try{let t,r,n,l;if("undefined"==typeof DOMParser)return console.warn("DOMParser not available, returning empty steps array"),o();if(!e||"string"!=typeof e)return console.error("Invalid XML content:",e),o();let u=new DOMParser().parseFromString(e,"text/xml"),i=u.querySelector("parsererror");if(i)return console.error("XML parsing error:",i.textContent),o();let a=u.querySelectorAll("part");if(0===a.length)return console.warn("No parts found in MusicXML"),o();let s=a[0].querySelectorAll("measure").length;if(0===s)return console.warn("No measures found in MusicXML"),o();if((t=0,r=0,n=0,l=0,a.forEach(e=>{let o=e.querySelectorAll("measure");n+=o.length,o.forEach(e=>{let n=e.querySelectorAll("note");t+=n.length;let o=0,u=0,i=0;for(let e=0;e<n.length;e++)null!==n[e].querySelector("chord")?u++:(u>0&&(i=Math.max(i,u)),o++,u=1);u>0&&(i=Math.max(i,u)),r+=o,l=Math.max(l,i)})}),{totalNotes:t,totalChords:r,totalMeasures:n,maxVoicesInChord:l,chordsPerMeasure:r/Math.max(1,n),notesPerChord:t/Math.max(1,r)}).chordsPerMeasure>4)return function(e,t,r){let n=[],l=[];for(let r=0;r<t;r++){let t=new Set,n=new Map,o=new Map;e.forEach((e,l)=>{let u=e.querySelectorAll("measure");if(r>=u.length)return;let i=u[r],a=function(e,t){let r=e.querySelector("attributes");if(r){let e=r.querySelector("divisions");if(e&&e.textContent)return parseInt(e.textContent)}let n=t.querySelectorAll("measure");for(let t=0;t<n.length;t++){let r=n[t];if(r===e)break;let o=r.querySelector("attributes");if(o){let e=o.querySelector("divisions");if(e&&e.textContent)return parseInt(e.textContent)}}return 1}(i,e),s=function(e,t){var r,n,o,l;let u=e.querySelector("attributes");if(u){let e=u.querySelector("time");if(e){let t=null===(r=e.querySelector("beats"))||void 0===r?void 0:r.textContent,o=null===(n=e.querySelector("beat-type"))||void 0===n?void 0:n.textContent;if(t&&o)return{beats:parseInt(t),beatType:parseInt(o)}}}let i=t.querySelectorAll("measure");for(let t=0;t<i.length;t++){let r=i[t];if(r===e)break;let n=r.querySelector("attributes");if(n){let e=n.querySelector("time");if(e){let t=null===(o=e.querySelector("beats"))||void 0===o?void 0:o.textContent,r=null===(l=e.querySelector("beat-type"))||void 0===l?void 0:l.textContent;if(t&&r)return{beats:parseInt(t),beatType:parseInt(r)}}}}return{beats:4,beatType:4}}(i,e),c=a/2;s.beats,s.beatType;let d=i.querySelectorAll("note");if(0===d.length)return;let f={};d.forEach(e=>{var r,n;if(e.querySelector("rest"))return;let o=(null===(r=e.querySelector("voice"))||void 0===r?void 0:r.textContent)||"1";f[o]||(f[o]=0);let l=f[o],u=parseInt((null===(n=e.querySelector("duration"))||void 0===n?void 0:n.textContent)||"0");if(!(null!==e.querySelector("chord"))){let e=Math.round(l/c)*c;t.add(e),f[o]+=u}}),f={},d.forEach(e=>{var t,r,l,u,i,a,s,d,y;if(e.querySelector("rest")){let n=parseInt((null===(t=e.querySelector("duration"))||void 0===t?void 0:t.textContent)||"0"),o=(null===(r=e.querySelector("voice"))||void 0===r?void 0:r.textContent)||"1";f[o]||(f[o]=0),e.querySelector("chord")||(f[o]+=n);return}let h=e.querySelector("pitch");if(!h)return;let p=(null===(l=h.querySelector("step"))||void 0===l?void 0:l.textContent)||"",v=(null===(u=h.querySelector("octave"))||void 0===u?void 0:u.textContent)||"",S=null===(i=h.querySelector("alter"))||void 0===i?void 0:i.textContent,q=(null===(a=e.querySelector("voice"))||void 0===a?void 0:a.textContent)||"1";f[q]||(f[q]=0);let x=f[q],M=parseInt((null===(s=e.querySelector("duration"))||void 0===s?void 0:s.textContent)||"0"),b="";S&&(b=1===parseInt(S)?"#":-1===parseInt(S)?"b":"");let g="".concat(p).concat(b).concat(v);if(null!==e.querySelector("chord")){let e=Math.round((x-M)/c)*c;n.has(e)&&(null===(y=n.get(e))||void 0===y||y.push(g))}else{let e=Math.round(x/c)*c;n.has(e)?null===(d=n.get(e))||void 0===d||d.push(g):n.set(e,[g]),o.set(e,M),f[q]+=M}})}),Array.from(t).sort((e,t)=>e-t).forEach(e=>{let t=n.get(e)||[],u=o.get(e)||1;if(t.length>0){let n=[...new Set(t)];l.push({measureIndex:r,beatPosition:e,notes:n,duration:u})}})}return(l.sort((e,t)=>
1e.measureIndex!==t.measureIndex?e.measureIndex-t.measureIndex:e.beatPosition-t.beatPosition),l.forEach((e,t)=>{n.push({id:"step-".concat(n.length+1),notes:e.notes,durationMs:250*e.duration})}),0===n.length)?o():n}(a,s,0);return function(e,t){let r=[];for(let n=0;n<t;n++){let t=[],o=0;e.forEach((e,r)=>{let l=e.querySelectorAll("measure");if(n>=l.length)return;let u=l[n].querySelectorAll("note");if(0===u.length)return;let i=[],a=0;u.forEach((e,t)=>{var r,n,o,l;if(e.querySelector("rest"))return;let u=e.querySelector("pitch");if(!u)return;let s=(null===(r=u.querySelector("step"))||void 0===r?void 0:r.textContent)||"",c=(null===(n=u.querySelector("octave"))||void 0===n?void 0:n.textContent)||"",d=null===(o=u.querySelector("alter"))||void 0===o?void 0:o.textContent,f=parseInt((null===(l=e.querySelector("duration"))||void 0===l?void 0:l.textContent)||"0");f>a&&(a=f);let y="";d&&(y=1===parseInt(d)?"#":-1===parseInt(d)?"b":"");let h="".concat(s).concat(y).concat(c);i.includes(h)||i.push(h)}),t.push(...i),a>o&&(o=a)});let l=[...new Set(t)];l.length>0&&r.push({id:"step-".concat(r.length+1),notes:l,durationMs:250*o})}return 0===r.length?o():r}(a,s)}catch(e){return console.error("Error parsing MusicXML:",e),o()}}function o(){return[{id:"step-1",notes:["C4","E4","G4"],durationMs:1e3},{id:"step-2",notes:["D4","F4","A4"],durationMs:1e3},{id:"step-3",notes:["E4","G4","B4"],durationMs:1e3}]}r.d(t,{q6:()=>n})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.