1"use strict";(self.webpackChunkultimate_jekyll=self.webpackChunkultimate_jekyll||[]).push([[550,9206],{3551(n,e,t){t.d(e,{Hf:()=>p,Kc:()=>u,U8:()=>b,_e:()=>y,aQ:()=>g,fx:()=>d,kx:()=>h,n3:()=>r,on:()=>j,vX:()=>f});const i=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],o={ionian:[0,2,4,5,7,9,11],dorian:[0,2,3,5,7,9,10],phrygian:[0,1,3,5,7,8,10],lydian:[0,2,4,6,7,9,11],mixolydian:[0,2,4,5,7,9,10],aeolian:[0,2,3,5,7,8,10],locrian:[0,1,3,5,6,8,10]},a={maj:[0,4,7],min:[0,3,7],dim:[0,3,6],aug:[0,4,8],sus2:[0,2,7],sus4:[0,5,7],maj7:[0,4,7,11],min7:[0,3,7,10],dom7:[0,4,7,10],dim7:[0,3,6,9],m7b5:[0,3,6,10]},s={maj:"",min:"m",dim:"dim",aug:"aug",sus2:"sus2",sus4:"sus4",maj7:"maj7",min7:"m7",dom7:"7",dim7:"dim7",m7b5:"m7b5"},m={ionian:{simple:["maj","min","min","maj","maj","min","dim"],advanced:["maj","min","min","maj","maj","min","dim","sus2","sus4"],seventh:["maj7","min7","min7","maj7","dom7","min7","m7b5"]},dorian:{simple:["min","min","maj","maj","min","dim","maj"],advanced:["min","min","maj","maj","min","dim","maj","sus2","sus4"],seventh:["min7","min7","maj7","dom7","min7","m7b5","maj7"]},phrygian:{simple:["min","maj","maj","min","dim","maj","min"],advanced:["min","maj","maj","min","dim","maj","min","sus2","sus4"],seventh:["min7","maj7","dom7","min7","m7b5","maj7","min7"]},lydian:{simple:["maj","maj","min","dim","maj","min","min"],advanced:["maj","maj","min","dim","maj","min","min","sus2","sus4"],seventh:["maj7","dom7","min7","m7b5","maj7","min7","min7"]},mixolydian:{simple:["maj","min","dim","maj","min","maj","min"],advanced:["maj","min","dim","maj","min","maj","min","sus2","sus4"],seventh:["dom7","min7","m7b5","maj7","min7","min7","maj7"]},aeolian:{simple:["min","dim","maj","min","min","maj","maj"],advanced:["min","dim","maj","min","min","maj","maj","sus2","sus4"],seventh:["min7","m7b5","maj7","min7","min7","maj7","dom7"]},locrian:{simple:["dim","maj","min","min","maj","maj","min"],advanced:["dim","maj","min","min","maj","maj","min","sus2","sus4"],seventh:["m7b5","maj7","min7","min7","maj7","dom7","min7"]}},c={1:"b2",2:"2",3:"m3",4:"M3",5:"P4",6:"b5",7:"P5",8:"m6",9:"M6",10:"m7",11:"M7"};function d(n,e){const t=i.indexOf(n);return-1===t?-1:12*(e+1)+t}function l(n){const e=Math.floor(n/12)-1;return{name:i[n%12],octave:e}}function r(n){const e=n.match(/^([A-G]#?)(\d+)$/);return e?d(e[1],parseInt(e[2])):-1}function u(n){const{name:e,octave:t}=l(n);return`${e}${t}`}function f(n){return 440*Math.pow(2,(n-69)/12)}function h(n){const e=function(n){return 69+12*Math.log2(n/440)}(n),t=Math.round(e),i=Math.round(100*(e-t)),{name:o,octave:a}=l(t);return{name:o,octave:a,midi:t,cents:i}}function j(n,e,t=3){const i=d(n,t);return(a[e]||a.maj).map(n=>i+n)}function g(n,e){return`${n}${s[e]||""}`}function b(n,e,t="simple"){const a=m[e]||m.ionian,s=a[t]||a.simple,c=o[e]||o.ionian,d=i.indexOf(n),l=[];for(let n=0;n<7;n++){const e=(d+c[n])%12,t=i[e],o=s[n];l.push({root:t,quality:o,name:g(t,o),notes:j(t,o,3),degree:n+1})}if("advanced"===t)for(const e of["sus2","sus4"])l.push({root:n,quality:e,name:g(n,e),notes:j(n,e,3),degree:0});return l}function p(n,e,t,s){const m=o[s]||o.ionian,c=i.indexOf(t),d=new Set(m.map(n=>(c+n)%12)),l=a[e]||a.maj,r=i.indexOf(n);return l.every(n=>d.has((r+n)%12))}function y(n){const e=[...new Set(n.map(n=>n%12))].sort((n,e)=>n-e),t=e.length;if(0===t)return"";if(1===t)return i[e[0]];if(2===t)return function(n){const e=i[n[0]],t=(n[1]-n[0]+12)%12;return`${e} ${c[t]||""}`}(e);const o=function(n){let e=null,t=0;for(let o=0;o<12;o++){const m=n.map(n=>(n-o+12)%12).sort((n,e)=>n-e),c=new Set(m);for(const[m,d]of Object.entries(a)){const a=d.filter(n=>c.has(n)).length;if(a<d.length)continue;const l=a/Math.max(n.length,d.length);if(l>t){t=l;const a=i[o],c=s[m]||m,d=n[0];e=d!==o?`${a}${c}/${i[d]}`:`${a}${c}`}}}return e}(e);return o||e.map(n=>i[n]).join(" ")}t.d(e,["ED",0,o,"fz",0,a])},9206(n,e,t){t.r(e);var i=t(550),o=t(3551);let a;function s(){const n=new Set(i.default.liveNotes);if(i.default.playback.isPlaying){const e=i.default.playback.currentBeat;for(const t of i.default.chords)if(!i.default.mutes.chords&&e>=t.start&&e<t.start+t.duration)for(const e of t.notes)n.add(e);for(const t of i.default.melody)!i.default.mutes.melody&&e>=t.start&&e<t.start+t.duration&&n.add(t.note);for(const t of i.default.bassline)!i.default.mutes.bassline&&e>=t.start&&e<t.start+t.duration&&n.add(t.note)}if(0===n.size)return a.textContent="â",void a.classList.remove("mc-chord-badge--active");const e=(0,o._e)([...n]);a.textContent=e,a.classList.add("mc-chord-badge--active")}const m={init:function(){a=document.getElementById("mc-chord-badge"),a&&((0,i.on)("change:playback",s),(0,i.on)("change:liveNotes",s))}};t.d(e,["default",0,m])},550(n,e,t){t.r(e),t.d(e,{addLiveNote:()=>B,clearLiveNotes:()=>S,default:()=>P,emit:()=>m,getTotalBeats:()=>d,off:()=>s,on:()=>a,removeBassNote:()=>v,removeChord:()=>p,removeLiveNote:()=>O,removeMelodyNote:()=>y,set:()=>l,setBassline:()=>h,setChords:()=>u,setMelody:()=>f,setNested:()=>r,setPlayback:()=>$,snapToBeat:()=>
1L,snapToGrid:()=>w,toggleChordLock:()=>k,toggleEnabled:()=>x,toggleMute:()=>M,toggleSectionLock:()=>N,toggleSettingLock:()=>C,uid:()=>o,updateBassNote:()=>b,updateChord:()=>j,updateMelodyNote:()=>g});let i=0;function o(n=""){return`${n}${++i}`}const{on:a,off:s,emit:m}=function(){const n={};function e(e,t){n[e]&&(n[e]=n[e].filter(n=>n!==t))}return{on:function(t,i){return n[t]||(n[t]=[]),n[t].push(i),()=>e(t,i)},off:e,emit:function(e,t){if(n[e])for(const i of n[e])i(t)}}}(),c={key:"C",scale:"ionian",bpm:120,barCount:4,chordComplexity:"simple",rhythmVariation:.5,gridSnap:.25,pendingFile:null,sounds:{chords:"piano",melody:"synth-lead",bassline:"sub-bass"},locks:{settings:{key:!1,bpm:!1,chordComplexity:!1,rhythmVariation:!1},sections:{chords:!1,melody:!1,bassline:!1},chordClips:{}},mutes:{chords:!1,melody:!1,bassline:!1},enabled:{chords:!0,melody:!1,bassline:!1},chords:[],melody:[],bassline:[],liveNotes:new Set,playback:{isPlaying:!1,currentBeat:0}};function d(){return 4*c.barCount}function l(n,e){c[n]!==e&&(c[n]=e,m(`change:${n}`,e),m("change",{key:n,value:e}))}function r(n,e,t){c[n]&&c[n][e]!==t&&(c[n][e]=t,m(`change:${n}`,c[n]),m(`change:${n}.${e}`,t),m("change",{key:`${n}.${e}`,value:t}))}function u(n){c.chords=n,m("change:chords",n)}function f(n){c.melody=n,m("change:melody",n)}function h(n){c.bassline=n,m("change:bassline",n)}function j(n,e){const t=c.chords.find(e=>e.id===n);t&&(Object.assign(t,e),m("change:chords",c.chords))}function g(n,e){const t=c.melody.find(e=>e.id===n);t&&(Object.assign(t,e),m("change:melody",c.melody))}function b(n,e){const t=c.bassline.find(e=>e.id===n);t&&(Object.assign(t,e),m("change:bassline",c.bassline))}function p(n){c.chords=c.chords.filter(e=>e.id!==n),delete c.locks.chordClips[n],m("change:chords",c.chords)}function y(n){c.melody=c.melody.filter(e=>e.id!==n),m("change:melody",c.melody)}function v(n){c.bassline=c.bassline.filter(e=>e.id!==n),m("change:bassline",c.bassline)}function k(n){c.locks.chordClips[n]=!c.locks.chordClips[n];const e=c.chords.find(e=>e.id===n);e&&(e.locked=!!c.locks.chordClips[n]),m("change:locks",c.locks),m("change:chords",c.chords)}function C(n){c.locks.settings[n]=!c.locks.settings[n],m("change:locks",c.locks)}function N(n){c.locks.sections[n]=!c.locks.sections[n],m("change:locks",c.locks)}function $(n){Object.assign(c.playback,n),m("change:playback",c.playback)}function M(n){c.mutes[n]=!c.mutes[n],m("change:mutes",c.mutes)}function x(n){c.enabled[n]=!c.enabled[n],m("change:enabled",c.enabled)}function B(n){c.liveNotes.add(n),m("change:liveNotes",c.liveNotes)}function O(n){c.liveNotes.delete(n),m("change:liveNotes",c.liveNotes)}function S(){c.liveNotes.clear(),m("change:liveNotes",c.liveNotes)}function w(n){const e=c.gridSnap;return Math.round(n/e)*e}function L(n){return Math.round(n)}const P=c}}]);
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.