PageSourceSearch

https://soundgrail.com/assets/js/202.chunk.448d43ce8df6b1769018.js

js soundgrail.com collected 2026-09-28 06:48:39 UTC 15,323 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkultimate_jekyll=self.webpackChunkultimate_jekyll||[]).push([[202],{3345(t,e,o){o.d(e,{g:()=>c});var n=o(8129);function c(t,e){const o=document.querySelector(`#prerendered-icons [data-icon="${t}"]`);return o?e?o.innerHTML.replace('class="fa"',`class="fa ${n.A.utilities().escapeHTML(e)}"`):o.innerHTML:""}},1268(t,e,o){o.d(e,{I:()=>a});var n=o(3551);const c={KeyA:0,KeyW:1,KeyS:2,KeyE:3,KeyD:4,KeyF:5,KeyT:6,KeyG:7,KeyY:8,KeyH:9,KeyU:10,KeyJ:11,KeyK:12,KeyO:13,KeyL:14,KeyP:15};function a({minNote:t=28,maxNote:e=79,defaultOctave:o=3,onNoteOn:a,onNoteOff:l}){let d=o;const s=new Set;function i(o){const l=o.target.tagName;if("TEXTAREA"===l||"INPUT"===l||"SELECT"===l)return;if("KeyZ"===o.code)return o.preventDefault(),void(d=Math.max(1,d-1));if("KeyX"===o.code)return o.preventDefault(),void(d=Math.min(7,d+1));const i=c[o.code];if(null==i)return;if(o.preventDefault(),s.has(o.code))return;s.add(o.code);const r=(0,n.fx)("C",d)+i;r<t||r>e||a&&a(r)}function r(t){const e=c[t.code];if(null==e)return;if(!s.has(t.code))return;s.delete(t.code);const o=(0,n.fx)("C",d)+e;l&&l(o)}function u(){for(const t of s){const e=c[t];null!=e&&l&&l((0,n.fx)("C",d)+e)}s.clear()}return{init(){document.addEventListener("keydown",i),document.addEventListener("keyup",r),window.addEventListener("blur",u)},destroy(){document.removeEventListener("keydown",i),document.removeEventListener("keyup",r),window.removeEventListener("blur",u),u()},get octave(){return d},set octave(t){d=Math.max(1,Math.min(7,t))},releaseAll:u}}},8164(t,e,o){function n({onNoteOn:t,onNoteOff:e}){let o=null;function n(o){const[n,c,a]=o.data,l=240&n;144===l&&a>0?t&&t(c,a):(128===l||144===l&&0===a)&&e&&e(c)}function c(){for(const t of o.inputs.values())t.onmidimessage=n}return{init(){navigator.requestMIDIAccess&&navigator.requestMIDIAccess().then(t=>{o=t,c(),o.onstatechange=c},()=>{})},destroy(){if(o){for(const t of o.inputs.values())t.onmidimessage=null;o=null}}}}o.d(e,{Q:()=>n})},1632(t,e,o){o.r(e);var n=o(550),c=o(9959),a=o(1147);let l;const d={init:function(){const t=document.getElementById("mc-bass-track");l=(0,c.createPianoRoll)({$track:t,stateKey:"bassline",minNote:a.BASS_MIN_NOTE,maxNote:a.BASS_MAX_NOTE,noteClass:"mc-note--bass",updateNote:(t,e)=>(0,n.updateBassNote)(t,e),removeNote:t=>(0,n.removeBassNote)(t)}),(0,n.on)("change:bassline",()=>l.render()),(0,n.on)("change:playback",t=>l.updatePlayingState(t)),l.render()}};o.d(e,["default",0,d])},9206(t,e,o){o.r(e);var n=o(550),c=o(3551);let a;function l(){const t=new Set(n.default.liveNotes);if(n.default.playback.isPlaying){const e=n.default.playback.currentBeat;for(const o of n.default.chords)if(!n.default.mutes.chords&&e>=o.start&&e<o.start+o.duration)for(const e of o.notes)t.add(e);for(const o of n.default.melody)!n.default.mutes.melody&&e>=o.start&&e<o.start+o.duration&&t.add(o.note);for(const o of n.default.bassline)!n.default.mutes.bassline&&e>=o.start&&e<o.start+o.duration&&t.add(o.note)}if(0===t.size)return a.textContent="—",void a.classList.remove("mc-chord-badge--active");const e=(0,c._e)([...t]);a.textContent=e,a.classList.add("mc-chord-badge--active")}const d={init:function(){a=document.getElementById("mc-chord-badge"),a&&((0,n.on)("change:playback",l),(0,n.on)("change:liveNotes",l))}};o.d(e,["default",0,d])},202(t,e,o){o.r(e);var n=o(6527),c=o(3815),a=o(5695),l=o(1632),d=o(5725),s=o(1147),i=o(4689),r=o(6585),u=o(1883),m=o(2744),f=o(9009),y=o(1268),p=o(8164),h=o(9206),g=o(6950),v=o(4134),b=o(8129);const k=()=>new Promise(async t=>(await b.A.dom().ready(),n.default.init(),c.default.init(),a.default.init(),l.default.init(),d.default.init(),i.default.init(),r.default.init(),u.default.init(),m.default.init(),f.default.init(),(0,y.I)({minNote:s.KEYBOARD_MIN_NOTE,maxNote:s.KEYBOARD_MAX_NOTE,onNoteOn:d.liveNoteOn,onNoteOff:d.liveNoteOff}).init(),(0,p.Q)({onNoteOn:d.liveNoteOn,onNoteOff:d.liveNoteOff}).init(),h.default.init(),g.default.init(),v.default.init(),console.log("MIDI Copilot initialized"),t()));o.dn(k),o.d(e,["default",0,k])},5695(t,e,o){o.r(e);var n=o(550),c=o(9959),a=o(1147);let l;const d={init:function(){const t=document.getElementById("mc-melody-track");l=(0,c.createPianoRoll)({$track:t,stateKey:"melody",minNote:a.MELODY_MIN_NOTE,maxNote:a.MELODY_MAX_NOTE,noteClass:"mc-note--melody",updateNote:(t,e)=>(0,n.updateMelodyNote)(t,e),removeNote:t=>(0,n.removeMelodyNote)(t)}),(0,n.on)("change:melody",()=>l.render()),(0,n.on)("change:playback",t=>l.updatePlayingState(t)),l.render()}};o.d(e,["default",0,d])},2744(t,e,o){o.r(e),o.d(e,{exportMidi:()=>s});var n=o(550),c=o(3551),a=o(6950),l=o(8129);let d=null;async function s(){if(!function(){const t=l.A.auth();if(!t.user)return!1;const e=t.account;return!!e&&"basic"!==t.resolveSubscription(e).plan}())return void(0,a.showUpgradeModal)("export");await async function(){d||(d=await o.e(951).then(o.t.bind(o,951,23)))}();const{Track:t,NoteEvent:e,Writer:c}=d,s=new c([i(t,e,"Chords",n.default.chords,!0),i(t,e,"Melody",n.default.melody,!1),i(t,e,"Bassline",n.default.bassline,!1)]),r=new Blob([s.buildFile()],{type:"audio/midi"}),u=`midi-copilot-${n.default.key}-${n.default.scale}-${n.default.bpm}bpm.mid`,m=URL.createObjectURL(r),f=document.createElement("a");f.href=m,f.download=u,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(m)}function i(t,e,o,a,l){const d=new t;d.addTrackName(o),d.setTempo(n.default.bpm);const s=[...a].sort((t,e)=>t.start-e.start);let i=0;for(const t of s){const o=t.start-i,n={pitch:l?t.notes.map(t=>(0,c.Kc)(t)):[(0,c.Kc)(t.note)],duration:`T${Math.round(128*t.duration)}`,velocity:Math.round(100*t.velocity)};o>0&&(n.wait=`T${Math.round(128*o)}`),d.addEvent(new e(n)),i=t.start+t.duration}return d}const r={init:function(){document.getElementById("mc-export-btn").addEventListener("click",
1s)}};o.d(e,["default",0,r])},9959(t,e,o){o.r(e),o.d(e,{createPianoRoll:()=>u});var n=o(550),c=o(6527),a=o(6534),l=o(3154),d=o(3551),s=o(1147),i=o(1012),r=o(5725);function u(t){const{$track:e,stateKey:o,minNote:u,maxNote:f,noteClass:y,updateNote:p,removeNote:h}=t,g=f-u+1,v=(0,s.getCSSVar)("--mc-piano-roll-height",s.CSS_FALLBACK_ROLL_HEIGHT)/g,b=new Set;(0,i.registerLane)({$track:e,itemSelector:".mc-note",selectedClass:"mc-note--selected",selectedIds:b}),function(){e.querySelectorAll(".mc-pitch-labels").forEach(t=>t.remove());const t=document.createElement("div");t.className="mc-pitch-labels";for(let e=f;e>=u;e--){const o=(0,d.Kc)(e);if(o.startsWith("C")&&!o.startsWith("C#")){const n=f-e,c=document.createElement("span");c.className="mc-pitch-label",c.textContent=o,c.style.top=n*v+"px",t.appendChild(c)}}e.appendChild(t)}();const k=(0,l.createMarquee)(e,{itemSelector:".mc-note"});function E(){e.querySelectorAll(".mc-note--selected").forEach(t=>{t.dataset.id&&b.add(t.dataset.id)}),e.querySelectorAll(".mc-note").forEach(t=>t.remove());for(const t of n.default[o])N(t)}function N(t){const n=document.createElement("div");n.className=`mc-note ${y}`,n.dataset.id=t.id,b.has(t.id)&&n.classList.add("mc-note--selected");const l=f-t.note;n.style.left=`${(0,c.beatToPixel)(t.start)}px`,n.style.width=`${(0,c.beatToPixel)(t.duration)}px`,n.style.top=l*v+"px",n.style.height=`${Math.max(v-1,s.MIN_NOTE_HEIGHT)}px`,(0,a.makeClipInteractive)(n,{canResize:"right-only",vertical:!0,rowHeight:v,onDragEnd:({beat:e,pitchDelta:o})=>{const n=Math.max(u,Math.min(f,t.note+o));p(t.id,{start:e,note:n})},onResizeEnd:({start:e,duration:o})=>{p(t.id,{start:e,duration:o})},onDown:()=>{m(t.note);const e="melody"===o?"melody":"bass";(0,r.highlightKey)(t.note,e),setTimeout(()=>(0,r.clearKey)(t.note),300)},onClick:e=>{e&&e.shiftKey?b.has(t.id)?(b.delete(t.id),n.classList.remove("mc-note--selected")):(b.add(t.id),n.classList.add("mc-note--selected")):((0,i.clearAll)(),b.add(t.id),n.classList.add("mc-note--selected"))},onRightClick:()=>{h(t.id)}}),e.appendChild(n)}function L(t){if(t.target.closest(".mc-note")||t.target.closest(".mc-pitch-labels"))return;const a=e.getBoundingClientRect(),l=t.clientX-a.left+e.scrollLeft,d=t.clientY-a.top+e.scrollTop,i=(0,n.snapToBeat)((0,c.pixelToBeat)(l)),r=Math.floor(d/v),y=f-r;if(y<u||y>f)return;if(i<0||i>
1=4*n.default.barCount)return;const p=function(t){let e=4*n.default.barCount-t;for(const c of n.default[o])c.start>t&&(e=Math.min(e,c.start-t));return e}(i),h=Math.max(n.default.gridSnap,Math.min(s.DEFAULT_NOTE_DURATION,p)),g={id:(0,n.uid)("melody"===o?"m":"b"),note:y,start:i,duration:h,velocity:.7};n.default[o].push(g),E(),m(y)}return e.addEventListener("dblclick",L),e.addEventListener("contextmenu",t=>t.preventDefault()),{render:E,updatePlayingState:function(t){const c=e.querySelectorAll(".mc-note");for(const t of c)t.classList.remove("mc-note--playing");if(!t.isPlaying)return;const a=t.currentBeat;for(const t of n.default[o])if(a>=t.start&&a<t.start+t.duration){const o=e.querySelector(`[data-id="${t.id}"]`);o&&o.classList.add("mc-note--playing")}},cleanup:function(){k.cleanup(),e.removeEventListener("dblclick",L)}}}async function m(t){try{const{playNote:e}=await o.e(7070).then(o.bind(o,4689));e((0,d.Kc)(t),"8n")}catch{}}},6585(t,e,o){o.r(e);var n=o(550),c=o(3345);function a(){const t=document.querySelectorAll(".mc-lock-btn[data-lock]");for(const e of t){const t=e.dataset.lock,o=n.default.locks.settings[t];e.classList.toggle("mc-lock-btn--locked",o),l(e,o),s(t,o)}const e=document.querySelectorAll(".mc-section-lock[data-lock-section]");for(const t of e){const e=t.dataset.lockSection,o=n.default.locks.sections[e];t.classList.toggle("mc-lock-btn--locked",o),l(t,o)}}function l(t,e){const o=e?"lock":"lock-open",n=(0,c.g)(o,"mc-lock-icon");if(!n)return;const a=t.querySelector(".mc-lock-icon");a&&a.replaceWith(d(n))}function d(t){const e=document.createElement("template");return e.innerHTML=t.trim(),e.content.firstChild}function s(t,e){const o={bpm:["mc-bpm"],key:["mc-key","mc-scale"],chordComplexity:[],rhythmVariation:["mc-rhythm"]}[t]||[];for(const t of o){const o=document.getElementById(t);o&&(o.disabled=e,o.style.opacity=e?"0.5":"1")}if("chordComplexity"===t){const t=document.querySelectorAll("#mc-complexity .mc-btn-option");for(const o of t)o.disabled=e,o.style.opacity=e?"0.5":"1"}}function i(){const t=document.querySelectorAll(".mc-mute-btn[data-mute-section]");for(const e of t){const t=e.dataset.muteSection,o=n.default.mutes[t];e.classList.toggle("mc-mute-btn--muted",o)}}function r(){for(const[t,e]of Object.entries(n.default.enabled)){const o=document.querySelector(`.mc-lane-track[data-lane="${t}"]`);o&&o.classList.toggle("mc-lane--collapsed",!e);const n=document.querySelector(`.mc-lane-label[data-lane-label="${t}"]`);n&&n.classList.toggle("mc-lane-label--collapsed",!e);const a=(n||o)?.querySelector(".mc-lane-toggle");if(a){const t=e?"minus":"plus",o=(0,c.g)(t,"mc-toggle-icon");if(o){const t=a.querySelector(".mc-toggle-icon");t&&t.replaceWith(d(o))}}}}const u={init:function(){!function(){const t=document.querySelectorAll(".mc-bar-btn");for(const e of t)e.addEventListener("click",()=>{const o=parseInt(e.dataset.bars);
1o!==n.default.barCount&&((0,n.set)("barCount",o),t.forEach(t=>t.classList.remove("mc-bar-btn--active")),e.classList.add("mc-bar-btn--active"),(0,n.emit)("change:chords",n.default.chords),(0,n.emit)("change:melody",n.default.melody),(0,n.emit)("change:bassline",n.default.bassline))})}(),function(){const t=document.getElementById("mc-complexity"),e=document.getElementById("mc-chord-complexity"),o=t.querySelectorAll(".mc-btn-option");for(const t of o)t.addEventListener("click",()=>{n.default.locks.settings.chordComplexity||(o.forEach(t=>t.classList.remove("mc-btn-option--active")),t.classList.add("mc-btn-option--active"),e.value=t.dataset.value,e.dispatchEvent(new Event("input",{bubbles:!0})))})}(),function(){const t=document.querySelectorAll(".mc-lock-btn[data-lock]");for(const e of t)e.addEventListener("click",()=>{(0,n.toggleSettingLock)(e.dataset.lock)})}(),function(){const t=document.querySelectorAll(".mc-section-lock[data-lock-section]");for(const e of t)e.addEventListener("click",()=>{(0,n.toggleSectionLock)(e.dataset.lockSection)})}(),function(){const t=document.querySelectorAll(".mc-mute-btn[data-mute-section]");for(const e of t)e.addEventListener("click",()=>{(0,n.toggleMute)(e.dataset.muteSection)})}(),function(){const t=document.getElementById("mc-settings-toggle"),e=document.getElementById("mc-settings-body");t&&e&&t.addEventListener("click",()=>{const o=!e.hidden;e.hidden=o,t.classList.toggle("mc-input-action-btn--active",!o)})}(),function(){const t=document.getElementById("mc-prompt");if(!t)return;t.addEventListener("input",()=>{t.style.height="auto",t.style.height=`${t.scrollHeight}px`});const e=document.getElementById("mc-input-card");e&&e.addEventListener("click",e=>{e.target.closest("button, select, input, a, .mc-settings-panel")||t.focus()})}(),function(){const t=document.querySelectorAll(".mc-lane-toggle[data-toggle-lane]");for(const e of t)e.addEventListener("click",()=>{(0,n.toggleEnabled)(e.dataset.toggleLane)})}(),(0,n.on)("change:locks",a),(0,n.on)("change:mutes",i),(0,n.on)("change:enabled",r)}};o.d(e,["default",0,u])},9009(t,e,o){o.r(e);var n=o(550),c=o(4689),a=o(1147);function l(t){const e=t.target.tagName;if("TEXTAREA"!==e&&"INPUT"!==e&&"SELECT"!==e)return"Space"===t.code?(t.preventDefault(),void(n.default.playback.isPlaying?(0,c.stop)():(0,c.play)())):["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.code)?(t.preventDefault(),void function(t){const e=n.default.gridSnap,o=4*n.default.barC
1ount;for(const c of document.querySelectorAll(".mc-chord-clip--selected")){const a=n.default.chords.find(t=>t.id===c.dataset.id);a&&!a.locked&&("ArrowLeft"===t?(0,n.updateChord)(a.id,{start:Math.max(0,a.start-e)}):"ArrowRight"===t&&(0,n.updateChord)(a.id,{start:Math.min(o-a.duration,a.start+e)}))}for(const c of document.querySelectorAll("#mc-melody-track .mc-note--selected")){const l=n.default.melody.find(t=>t.id===c.dataset.id);l&&("ArrowLeft"===t?(0,n.updateMelodyNote)(l.id,{start:Math.max(0,l.start-e)}):"ArrowRight"===t?(0,n.updateMelodyNote)(l.id,{start:Math.min(o-l.duration,l.start+e)}):"ArrowUp"===t?(0,n.updateMelodyNote)(l.id,{note:Math.min(a.MELODY_MAX_NOTE,l.note+1)}):"ArrowDown"===t&&(0,n.updateMelodyNote)(l.id,{note:Math.max(a.MELODY_MIN_NOTE,l.note-1)}))}for(const c of document.querySelectorAll("#mc-bass-track .mc-note--selected")){const l=n.default.bassline.find(t=>t.id===c.dataset.id);l&&("ArrowLeft"===t?(0,n.updateBassNote)(l.id,{start:Math.max(0,l.start-e)}):"ArrowRight"===t?(0,n.updateBassNote)(l.id,{start:Math.min(o-l.duration,l.start+e)}):"ArrowUp"===t?(0,n.updateBassNote)(l.id,{note:Math.min(a.BASS_MAX_NOTE,l.note+1)}):"ArrowDown"===t&&(0,n.updateBassNote)(l.id,{note:Math.max(a.BASS_MIN_NOTE,l.note-1)}))}}(t.code)):"Delete"===t.code||"Backspace"===t.code?(t.preventDefault(),void function(){for(const t of document.querySelectorAll(".mc-chord-clip--selected")){const e=n.default.chords.find(e=>e.id===t.dataset.id);e&&!e.locked&&(0,n.removeChord)(t.dataset.id)}for(const t of document.querySelectorAll("#mc-melody-track .mc-note--selected"))(0,n.removeMelodyNote)(t.dataset.id);for(const t of document.querySelectorAll("#mc-bass-track .mc-note--selected"))(0,n.removeBassNote)(t.dataset.id)}()):void 0}const d={init:function(){document.addEventListener("keydown",l)}};o.d(e,["default",0,d])}}]);

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.