CINXE.COM
Berklee Onsite - Berklee Online
<!DOCTYPE html> <!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]--> <!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]--> <!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]--> <!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]--> <head> <link href='https://fonts.googleapis.com' rel='preconnect'> <link href='https://assets.online.berklee.edu' rel='preconnect'> <link href='https://www.googletagmanager.com' rel='preconnect'> <link href='https://kit.fontawesome.com' rel='preconnect'> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-WD67JCX'); // swiftype search (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); _st('install','p1vCAcxCzxQgDzni-7Vh','2.0.0'); </script> <meta charset='utf-8'> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"70f3b191a7","applicationID":"17051529","transactionName":"dl5eQUtZWQoHEUoRQ1xcUUdAaVAQBw0REh5cX1RQQQ==","queueTime":0,"applicationTime":86,"agent":""}</script> <script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:[]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"96658315",accountID:"8536",trustKey:"8536",xpid:"XAMEV0VSDwMFVVRQDg==",licenseKey:"70f3b191a7",applicationID:"17051529"};;/*! For license information please see nr-loader-spa-1.285.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(3333);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.285.0",i="PROD",o="CDN",a="^2.0.0-alpha.18"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},3241:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(6154);const i="newrelic";function o(e={}){try{n.gm.dispatchEvent(new CustomEvent(i,{detail:e}))}catch(e){}}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5701:(e,t,r)=>{"use strict";r.d(t,{B:()=>a,t:()=>s});var n=r(7836),i=r(3241);const o=new Set,a={};function s(e,t){const r=n.ee.get(t);a[t]??={},e&&"object"==typeof e&&(o.has(t)||(r.emit("rumresp",[e]),a[t]=e,o.add(t),(0,i.W)({agentIdentifier:t,loaded:!0,type:"lifecycle",name:"load",feature:void 0,data:e})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),c&&h(c.prototype,f),h(a.gm,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9414:(e,t,r)=>{"use strict";r.d(t,{J:()=>c});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get("logger")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],"wrap-logger-",(()=>s.get(f))),u}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Zp:()=>i,kd:()=>c,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3,c=["PageAction","UserAction","BrowserPerformance"],u={MARKS:"experimental.marks",MEASURES:"experimental.measures",RESOURCES:"experimental.resources"}},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,TZ:()=>s,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log",s=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(8154),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},8154:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s,rF:()=>d});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}function d(e,t){try{if("string"==typeof t?.type){if("password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>c,Qu:()=>u,TZ:()=>s,ih:()=>d,pP:()=>a,tC:()=>i});var n=r(860);const i=["click","keydown","submit","popstate"],o="api",a="initialPageLoad",s=n.K7.softNav,c={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},u={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},d={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>T,uP:()=>s,wW:()=>E,xq:()=>a});var n=r(384);const i=r(860).K7.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",l="remaining",f="interaction",h="spaNode",p="jsonpNode",g="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",E="cb"+R,A="jsTime",T="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},8969:(e,t,r)=>{"use strict";r.d(t,{j:()=>I});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(8154),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(9414),x=r(3241),E=r(5701);function A(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const T={};var S=r(9417),N=r(5603);const _=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function I(e,t={},g,I){let{init:P,info:j,loader_config:C,runtime:k={},exposed:L=!0}=t;k.loaderType=g;const H=(0,h.pV)();j||(P=H.init,j=H.info,C=H.loader_config),(0,S.xN)(e.agentIdentifier,P||{}),(0,N.a)(e.agentIdentifier,C||{}),j.jsAttributes??={},d.bv&&(j.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,j);const M=(0,S.D0)(e.agentIdentifier),D=[j.beacon,j.errorBeacon];O||(M.proxy.assets&&(_(M.proxy.assets),D.push(M.proxy.assets)),M.proxy.beacon&&D.push(M.proxy.beacon),A(),(0,h.US)("activatedFeatures",E.B),e.runSoftNavOverSpa&&=!0===M.soft_navigations.enabled&&M.feature_flags.includes("soft_nav")),k.denyList=[...M.ajax.deny_list||[],...M.ajax.block_internal?D:[]],k.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,k),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var A=s.ee.get(e),S=A.get("tracer");T[e]=b.g.OFF,A.on(p.G4.REPLAY_RUNNING,(t=>{T[e]=t}));var N="api-",_=N+"ixn-";function O(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(N,n,!0,o||null===r?"session":void 0)(t,r)}function I(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,A),(0,w.R)(A,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,A),(0,R.J)(A,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=j(N,e,!0,"api")})),g.addPageAction=j(N,"addPageAction",!0,n.K7.genericEvents),g.recordCustomEvent=j(N,"recordCustomEvent",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(N,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return O(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return O("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return O("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,A),A.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,A),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,A)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,A),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,A)},g.interaction=function(e){return(new I).get("object"==typeof e?e:{})};const P=I.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,A),h||(0,a.p)(_+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,A),function(){if(S.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw S.emit("fn-err",[arguments,this,t],r),t}finally{S.emit("fn-end",[(0,v.t)()],r)}}}};function j(t,r,i,o){return function(){return(0,a.p)(f.xV,["API/"+r+"/called"],void 0,n.K7.metrics,A),(0,x.W)({agentIdentifier:e,loaded:!!E.B?.[e],type:"data",name:"api",feature:t+r,data:{notSpa:i,bufferGroup:o}}),o&&(0,a.p)(t+r,[i?(0,v.t)():performance.now(),...arguments],i?null:this,o,A),i?void 0:this}}function C(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),A.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{P[e]=j(_,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?j(_,"routeName",void 0,n.K7.softNav):j(N,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,A),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!T[e]],void 0,n.K7.jserrors,A)},d.RI?(0,u.GG)((()=>C()),!0):C(),g}(e.agentIdentifier,I,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=L),O||(0,x.W)({agentIdentifier:e.agentIdentifier,loaded:!!E.B?.[e.agentIdentifier],type:"lifecycle",name:"initialize",feature:void 0,data:{init:M,info:j,loader_config:C,runtime:k}}),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>d,K7:()=>c,P3:()=>u,XX:()=>i,Yy:()=>s,df:()=>o,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s="browser/logs",c={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},u={[c.pageViewEvent]:1,[c.pageViewTiming]:2,[c.metrics]:3,[c.jserrors]:4,[c.spa]:5,[c.ajax]:6,[c.sessionTrace]:7,[c.softNav]:8,[c.sessionReplay]:9,[c.logging]:10,[c.genericEvents]:11},d={[c.pageViewEvent]:a,[c.pageViewTiming]:n,[c.ajax]:n,[c.spa]:n,[c.softNav]:n,[c.metrics]:i,[c.jserrors]:i,[c.sessionTrace]:o,[c.sessionReplay]:o,[c.logging]:s,[c.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.285.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.285.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-73OmviyU40lnC5NZHvj5egb1Dktz4of17DYc4nbj2RduD/YSRadVPKgqV4pTV++UKRfMh1kiyzvZ3EZ9+nCVRA==",249:"sha512-K0uLsDVOs99bSE/U1/+N3dF9ugBMgNxv9bGCDosl/OYQ9Vbh3OEiiDdoeJ2Jyez+MV++R54r9pGP4l89pkOgrw==",212:"sha512-xpg2N/nVV3R+2dh1bNPkgU4MdEfsSknhvWWYRI9zgj8nuzl1HP8n4T1tr6iNK7k+LC8m/kDrZH58sW6X5daNDQ=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.285.0.PROD"]=self["webpackChunk:NRBA-1.285.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(8969);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),E=i(2843),A=i(3878),T=i(782),S=i(1863);class N extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),p.RI&&((0,E.u)((()=>(0,x.p)("docHidden",[(0,S.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,S.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var _=i(8154);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),p.RI&&document.addEventListener("securitypolicyviolation",(e=>{(0,x.p)(_.xV,["Generic/CSPViolation/Detected"],void 0,this.featureName,this.ee)})),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(H(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return C(e.reason)}const r=C(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class M extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",((e,t)=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var D=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,D.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",J=Y+"body-",X=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,X.forEach((e=>{r(Q[te],e,J),r(ee[te],e,J)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;const he="X-NewRelic-App-Data";class pe extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};ge(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){E(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},ge(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),ge(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):E(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin&&r.getAllResponseHeaders().indexOf(he)>=0){var i=r.getResponseHeader(he);i&&((0,x.p)(_.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function ge(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const me={},ve=["pushState","replaceState"];function be(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||me[t.debugId]++||(me[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,ve,"-")),t}var ye=i(3738);const{He:we,bD:Re,d3:xe,Kp:Ee,TZ:Ae,Lc:Te,uP:Se,Rz:Ne}=ye;class _e extends b{static featureName=Ae;constructor(e,t=!0){super(e,Ae,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;be(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Se,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Te,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Ne+xe,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Ne+Ee,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(we,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:Re,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class Ie extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Pe=i(3962);class je extends b{static featureName=Pe.TZ;constructor(e,t=!0){if(super(e,Pe.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=be(this.ee);Pe.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,S.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,S.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var Ce=i(7378);const ke={},Le=["appendChild","insertBefore","replaceChild"];function He(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||ke[t.debugId])return t;ke[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,Le,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const Me={};function De(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(Me[t.debugId])return t;Me[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})}))}(),t}const Ke={},Ue="setTimeout",Ve="setInterval",Ge="clearTimeout",Fe="-start",Be=[Ue,"setImmediate",Ve,Ge,"clearImmediate"];function We(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(Ke[t.debugId]++)return t;Ke[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Be.slice(0,2),Ue+"-"),r.inPlace(p.gm,Be.slice(2,3),Ve+"-"),r.inPlace(p.gm,Be.slice(3),Ge+"-"),t.on(Ve+Fe,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ue+Fe,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const ze={};function qe(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||ze[t.debugId])return t;ze[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:Ze,d3:Ye,Kp:Je,$p:Xe,wW:$e,e5:Qe,tH:et,uP:tt,rw:rt,Lc:nt}=Ce;class it extends b{static featureName=Ze;constructor(e,t=!0){if(super(e,Ze,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=He(this.ee),a=De(this.ee),s=We(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=be(this.ee),f=qe(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[tt]=(0,S.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,S.t)();this[Qe]=~~this[Qe]+e-this[tt],this[nt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,S.t)()}))}this.ee.on(tt,g),a.on(rt,g),o.on(rt,g),this.ee.on(nt,m),a.on($e,m),o.on($e,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([tt,nt,"xhr-resolved"],this.featureName),u.buffer([tt],this.featureName),s.buffer(["setTimeout"+Je,"clearTimeout"+Ye,tt],this.featureName),c.buffer([tt,"new-xhr","send-xhr"+Ye],this.featureName),d.buffer([et+Ye,et+"-done",et+Xe+Ye,et+Xe+Je],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([tt],this.featureName),a.buffer(["propagate",rt,$e,"executor-err","resolve"+Ye],this.featureName),i.buffer([tt,"no-"+tt],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,et+Ye),v(d,et+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var ot=i(3333);class at extends b{static featureName=ot.TZ;constructor(e,t=!0){super(e,ot.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(p.RI&&(e.init.user_actions.enabled&&(ot.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),ot.qN.forEach((e=>{const t=(0,v.s)((e=>{(0,x.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled&&p.gm.PerformanceObserver?.supportedEntryTypes.includes("resource"))){new PerformanceObserver((e=>{e.getEntries().forEach((e=>{(0,x.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)}))})).observe({type:"resource",buffered:!0})}r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var st=i(993),ct=i(3785),ut=i(9414);class dt extends b{static featureName=st.TZ;constructor(e,t=!0){super(e,st.TZ,t);const r=this.ee;(0,ut.J)(r,p.gm.console,"log",{level:"info"}),(0,ut.J)(r,p.gm.console,"error",{level:"error"}),(0,ut.J)(r,p.gm.console,"warn",{level:"warn"}),(0,ut.J)(r,p.gm.console,"info",{level:"info"}),(0,ut.J)(r,p.gm.console,"debug",{level:"debug"}),(0,ut.J)(r,p.gm.console,"trace",{level:"trace"}),this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,ct.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[pe,w,N,_e,Ie,O,M,at,dt,je,it],loaderType:"spa"})})()})();</script> <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' name='viewport'> <meta content='03F74A8B60154C9A9FBD22440A0F6BB8' name='msvalidate.01'> <meta content='EGK3R_F_3Thqbni0TJnnea-0s0x2qs5e2pWYt4F397Y' name='google-site-verification'> <meta content='2ba55cf44829b06ae2bbfb8d40477867' name='p:domain_verify'> <title>Berklee Onsite - Berklee Online</title> <meta name="description" content="Two days of workshops, panels, performances, and networking events, open to Berklee Online students and the music community at large." /> <meta name="keywords" content="Berklee Onsite, Berklee College of Music Online, Berklee Online, music production, guitar, bass, drums, performance, theory, keyboard, online music instruction, Berklee method, Private lessons, largest online music school, award-winning online music instruction" /> <meta property="og:image" content="https://assets.online.berklee.edu/catalog-site-heroes/BOL-og-image-min.jpg" /> <meta class="swiftype" name="result_facet" data-type="string" content="Events" /> <meta class="swiftype" name="result_title" data-type="string" content="Berklee Onsite" /> <meta class="swiftype" name="result_type" data-type="string" content="Event" /> <meta class="swiftype" name="result_description" data-type="string" content="Two days of workshops, panels, performances, and networking events, open to Berklee Online students and the music community at large." /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="Pyzw/A1lDEDyNXqLUhrkcjoLjKRpFSMGN/cizEJDYH2R8izuAScOZ8QXM3L+JZXSh3BXEknrSTZQKo9zaoGSjw==" /> <link href='//assets.online.berklee.edu/favicon.ico' rel='shortcut icon' type='image/x-icon'> <link href='//assets.online.berklee.edu/apple-touch-icon-57x57.png' rel='apple-touch-icon' sizes='57x57'> <link href='//assets.online.berklee.edu/apple-touch-icon-60x60.png' rel='apple-touch-icon' sizes='60x60'> <link href='//assets.online.berklee.edu/apple-touch-icon-72x72.png' rel='apple-touch-icon' sizes='72x72'> <link href='//assets.online.berklee.edu/apple-touch-icon-76x76.png' rel='apple-touch-icon' sizes='76x76'> <link href='//assets.online.berklee.edu/apple-touch-icon-114x114.png' rel='apple-touch-icon' sizes='114x114'> <link href='//assets.online.berklee.edu/apple-touch-icon-120x120.png' rel='apple-touch-icon' sizes='120x120'> <link href='//assets.online.berklee.edu/apple-touch-icon-144x144.png' rel='apple-touch-icon' sizes='144x144'> <link href='//assets.online.berklee.edu/apple-touch-icon-152x152.png' rel='apple-touch-icon' sizes='152x152'> <link href='//assets.online.berklee.edu/apple-touch-icon-180x180.png' rel='apple-touch-icon' sizes='180x180'> <link href='//assets.online.berklee.edu/favicon-16x16.png' rel='icon' sizes='16x16' type='image/png'> <link href='//assets.online.berklee.edu/favicon-32x32.png' rel='icon' sizes='32x32' type='image/png'> <link href='//assets.online.berklee.edu/favicon-96x96.png' rel='icon' sizes='96x96' type='image/png'> <link href='//assets.online.berklee.edu/android-chrome-192x192.png' rel='icon' sizes='192x192' type='image/png'> <meta content='//assets.online.berklee.edu/smalltile.png' name='msapplication-square70x70logo'> <meta content='//assets.online.berklee.edu/mediumtile.png' name='msapplication-square150x150logo'> <meta content='//assets.online.berklee.edu/largetile.png' name='msapplication-square310x310logo'> <link href='https://online.berklee.edu/berklee-onsite' rel='canonical'> <link rel="stylesheet" media="all" href="https://assets.online.berklee.edu/catalog/assets/4d4a3c43620add7f52f97c02254d2d4f604b5c53/packs/css/application-f9289207.css" /> <link rel="stylesheet" media="all" href="//fonts.googleapis.com/css2?family=Nunito+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&family=Carrois+Gothic&display=swap" /> <style> .sub-nav.admissions .sub-nav-group:nth-child(5) li:nth-child(5) { display: none; } /* used for the coming soon courses' projected enrollment date */ .coming-soon-course-callout { background: #FFF; display: flex; flex-direction: row; align-items: center; margin: 0 0 15px 0; padding: 20px; } .coming-soon-course-callout h4{ padding: 0; margin: 3px 0 0 0; } .coming-soon-course-callout svg { color: #ee243c; font-size: 2.3rem; margin-right: 10px; } .nav-menu li:nth-child(2) .sub-nav-group:nth-child(2) li:nth-child(5) a:after { display: none; } /* tightens up the line-height on the leadership team titles */ .leaders .leadership-team-content h2 span { line-height: 1.5; } .degree-program .degree-curriculum ul li { text-align: left; } .is-known-lead .unknown.h2, .is-known-lead h2.unknown, .logged_in .unknown.h2, .logged_in h2.unknown, .logged_in h2.application-closed, .logged_out.is-known-lead h2.unknown, .logged_out.is-known-lead h2.application-closed, .logged_out .known.h2, .logged_out h2.known, .application_closed.logged_out:not(.is-known-lead) h2.unknown, .application_closed.logged_out:not(.is-known-lead) h2.known, .logged_out:not(.application_closed) h2.application-closed { display: none; } .nav-menu li:nth-child(2) .sub-nav-group:nth-child(1) li:nth-child(13) a:after { content: "New!"; color: #ee243c; font-weight: 800; padding-left: 7px; } .bo-banner-footer, .bo-banner-top { background: #ee243c !important; border: none; } .bo-banner-footer a, .bo-banner-top a { color: white; } .bo-banner-footer .fa-arrow-circle-right, .bo-banner-top .fa-arrow-circle-right { color: white; }.bo-banner-footer a:hover, .bo-banner-top a:hover { color: white; text-decoration: underline; } .key-course-level .key-course-text.graduate-level h4 {display: block;}.key-course-level .key-course-text.graduate-level h4 span {padding-left: 38px;} @media(max-width:550px) { #gdpr-notification {bottom: 73px;}}@media (max-width: 768px) { .degree-info #main-content {padding-top: 0;}}@media(max-width: 550px) {.deals .featured__hero-bg {width: auto;} .carousel-control-prev {left: auto;right: 50px;}}@media (max-width: 768px) {.deals .featured__control {top: 88%; background: #000; height: 40px;border-radius: 20px;width: 40px;border: 1px solid #FFF;}}@media(max-width: 768px) {.bio-block__image-wrap {min-height: auto;}} /* header .nav-menu .nav-item:nth-child(4) .sub-nav .drop-info, header .nav-menu .nav-item:nth-child(3) .sub-nav .drop-info { border: none; padding: 0; } */ .sub-nav .absolute-drop-footer { border-top: none; bottom: 0; left: 0; right: 0; margin-left: auto; margin-right: auto; padding-left: 0; position: absolute; text-align: center; width: 100%; background: #eff1f3; padding: 12px 0; } .product .content-head.overview-video { background-size: auto; background-position-x: right; }@media (min-width: 1900px) { .degrees .content-head .col-xl-5 { flex: 0 0 auto; width: 52%; }} </style> </head> <body class='primary_events catalog_site logged_out '> <noscript> <iframe height='0' src='https://www.googletagmanager.com/ns.html?id=GTM-WD67JCX' style='display:none;visibility:hidden' width='0'></iframe> </noscript> <div class='full-width-overlay'></div> <div class='animate__animated animate__slideInRight animate__faster' id='details_show'> <a class='close-detail-overlay' href='#' rel='nofollow'> Close <i class='far fa-times-circle'></i> </a> <div class='spinner-overlay text-center'> <i class='far fa-circle-notch fa-spin'></i> <p>Getting Details...</p> </div> <div class='details_show_content'></div> </div> <div id='content-container'> <script> //document.body.classList.add("special-notice"); </script> <div id="special-notice" style="display:none;"> <div class="container-fluid"> <div class="col-12 text-center"> <a href="/early-enrollment" id="cta-special-notice-live" target="_blank"> <h5> LAST DAY: Save up to $200 on eligible courses when you enroll by 5:00 PM ET! <span class="btn-live-qa-cta">View Eligible Courses & Certificates</span> </h5> </a> <!--<a href="/music-degrees" id="cta-special-notice-live" target="_blank"> <h5> Degree Applicants: Apply in as little as 15 minutes by March 10 for April 7 semester start. Get a decision within 1 week. <span class="btn-live-qa-cta">View All Degree Programs</span> </h5> </a> --> </div> </div> </div> <style> .home_page .hero-slant h4 a, .hero-slant h4 a:visited { color: #222; } body.scroll .mast-wrap { top: -1px; } .summer_areas .program-feature h1 { font-size: 3rem; line-height: 1.25; max-width: 100%; } .quote-slot .carousel-control-next, .quote-slot .carousel-control-prev { z-index: 100; } @media(max-width: 768px) { .summer_areas .program-feature h1 { font-size: 2.5rem; line-height: 1.15; } } #special-notice { padding-top: 8px; padding-bottom: 8px; } #special-notice a h5 { margin: 0; font-weight: 700; } #special-notice .container-fluid { padding-left: 0 !important; padding-right: 0 !important; max-width: 100%; transition: background ease 0.2s; } #special-notice:hover, #special-notice:focus { background: #E7E7E7; } #special-notice a:hover { text-decoration: none; box-shadow: none; } a#cta-special-notice-live:focus { text-decoration: none; } #special-notice .title-bar__live-indicator { border-right: 1px solid #222; font-weight: 700; margin-right: 20px; padding-left: 20px; padding-right: 20px; position: relative; } #special-notice .title-bar__live-indicator:after { -webkit-animation-delay: 1s; -webkit-animation: ripple 1.2s ease-out infinite; animation-delay: 1s; animation: ripple 1.2s ease-out infinite; background: rgba(255, 255, 255, 0.5); border-radius: 100%; content: ''; height: 16px; left: 43px; mix-blend-mode: screen; opacity: 0; position: absolute; top: 1px; transform-origin: 50% 50%; width: 16px; } #special-notice .btn-live-qa-cta { background: none; color: #222; border-radius: 2px; font-size: 1.2rem; font-weight: 400; display: inline-block; margin-top: -1.5px; margin-left: 10px; padding: 1px 10px; text-decoration: underline; font-weight: 900; } @media (max-width: 991px) { #special-notice a h5 span { display: none; } #special-notice .btn-live-qa-cta { border-radius: 2px; margin-top: 4px; padding: 0 10px; } } @media (max-width: 768px) { .details-container ul { display: none; } } .summer_areas #special-notice { display: none !important; } .curriculum-toggle li span strong { margin: 3px 0 0 5px; font-weight: 400; } .sr-only { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; } .side-nav-main { position: relative; } /* uncomment when a red bar is desired */ #special-notice { background: #ee243c; border-bottom: 1px solid #c00f24; padding-bottom: 6px; } #special-notice:hover { background: #c00f24; } #special-notice a h5 { color: #FFF; } #special-notice .title-bar__live-indicator { border-right: 1px solid #FFF; } @media(max-width: 768px) { #special-notice .title-bar__live-indicator { display: none; } } #special-notice .btn-live-qa-cta { color: #FFF } /* end red bar styles */ </style> <header aria-label='global-header' class='global-header d-none d-lg-block' data-swiftype-index='false'> <div class='row align-items-center'> <div class='col global-header__left'> <div class='dropdown'> <a class="dropdown-toggle global-header__parent-link first" id="campus-switcher" data-bs-toggle="dropdown" rel="nofollow" href="#">Campuses and Schools <i class='fas fa-angle-down arrow'></i> </a><div aria-labelledby='campus-switcher' class='campuses dropdown-menu'> <a class='dropdown-item' href='https://www.berklee.edu'>Berklee.edu Main Site</a> <a class='dropdown-item' href='https://college.berklee.edu'>Berklee College of Music</a> <a class='dropdown-item' href='https://bostonconservatory.berklee.edu'>Boston Conservatory at Berklee</a> <a class='dropdown-item' href='https://valencia.berklee.edu/'>Berklee Valencia</a> <a class='dropdown-item' href='https://nyc.berklee.edu'>Berklee NYC</a> <a class='dropdown-item' href='https://online.berklee.edu'>Berklee Online</a> <a class='dropdown-item' href='https://summer.berklee.edu'>Summer Programs</a> </div> </div> </div> <div class='col global-header__right'> <a class='global-header__parent-link' href='/sample-a-lesson'>Sample a Lesson</a> <div class='dropdown'> <a class="dropdown-toggle global-header__parent-link" id="contact-us" data-bs-toggle="dropdown" rel="nofollow" href="#"><i class='fas fa-phone'></i> Contact Us <i class='fas fa-angle-down arrow'></i> </a><div aria-labelledby='contact-us' class='dropdown-menu drop-contact'> <h3>1-866-BERKLEE</h3> <h5>Int'l +1-617-747-2146</h5> <h5> <a class='' href='mailto:advisors@online.berklee.edu'> advisors@online.berklee.edu </a> </h5> </div> </div> <a class='global-header__parent-link apply' href='/apply' target='_blank'> <i class='fas fa-pencil-alt'></i> Apply </a> <a class='fc-mini-cart global-header__parent-link' data-fc-id='minicart' href='https://checkout.online.berklee.edu/cart?cart=view' style='display: none;'> <i class='far fa-shopping-cart cart'></i> <span class='mini-cart-quantity' data-fc-id='minicart-quantity'>0</span> </a> </div> </div> </header> <div class='mast-wrap' data-swiftype-index='false'> <a class='sr-only sr-only-focusable' data-swiftype-index='false' href='#main-content'>Skip to main content</a> <script> window.foxy_store_hostname = "checkout.online.berklee.edu"; </script> <header id='masthead'> <nav class='navbar navbar-toggleable-lg navbar-light navbar-expand-xl' id='mast-simple'> <button aria-controls='bo-collapse-nav' aria-expanded='false' aria-label='Toggle navigation' class='navbar-toggler navbar-toggler-left' type='button'> <span class='navbar-toggler-icon'></span> </button> <a class='navbar-brand' href='/'> <img alt='Berklee Online logo' class='logo-color img-logo' height='47' loading='eager' src='//assets.online.berklee.edu/berklee-online-logo.svg?v=3' width='220'> </a> <!-- / standard sitewide nav --> <nav class='collapse navbar-collapse' id='navbarSupportedContent' role='navigation'> <ul class='nav-menu navbar-nav center'> <li class='nav-item'> <a href='#' onclick='return false;'> All Programs </a> <div class='sub-nav all-programs'> <ul class='sub-nav-group two-col no-margin'> <li class='header'> <h4> Degrees, Certificates, and Courses by Interest </h4> </li> <li> <a href='/music-production' itemprop='url'>Music Production</a> </li> <li> <a href='/music-business' itemprop='url'>Music Business</a> </li> <li> <a href='/music-theory-harmony-and-ear-training'>Music Theory, Harmony, and Ear Training</a> </li> <li> <a href='/guitar' itemprop='url'>Guitar</a> </li> <li> <a href='/songwriting' itemprop='url'>Songwriting</a> </li> <li> <a href='/music-for-film-tv-and-games' itemprop='url'>Music for Film, TV, and Games</a> </li> <li> <a href='/arranging'>Arranging</a> </li> <li> <a href='/music-history-and-liberal-arts'>Music History and Liberal Arts</a> </li> <li> <a href='/piano-and-keyboard'>Piano and Keyboard</a> </li> <li> <a href='/voice'>Voice</a> </li> <li> <a href='/improvisation'>Improvisation</a> </li> <li> <a href='/dance-music-and-theater'> Dance, Music, and Theater </a> </li> <li> <a href='/orchestration'>Orchestration</a> </li> <li> <a href='/drums'>Drums</a> </li> <li> <a href='/bass'>Bass</a> </li> <li> <a href='/music-therapy-health-and-neuroscience'>Music Therapy, Health, and Neuroscience</a> </li> <li class='footer'> <a href='/about/compare-online-music-education-offerings'> Compare Our Offerings </a> <a href='/sample-a-lesson'> Sample a Lesson / How It Works </a> </li> </ul> <ul class='sub-nav-group'> <li> <div class='drop-info promo'> <span class="new new-corner">New!</span> <a href="https://online.berklee.edu/masterclasses/playing-with-pink-making-it-as-a-touring-musician" style="padding: 0; margin: 0;"> <img src="//assets.online.berklee.edu/catalog-site-heroes/live-workshops/lw-card--playing-with-pink-making-it-as-a-touring-musician-final.jpg" width="353"> </a> <div class="drop-info-content" style="position: relative;"> <!--<h3 style="font-weight:800; color: #FFF; position: absolute; left: 0; right: 0; top: -68px; width: 100%; padding-left: 20px; background: linear-gradient(0deg, rgba(0,0,0,1) -11%, rgba(12,45,72,0) 100%);padding-top: 3rem; padding-bottom: .5rem; z-index: 100;">Manage Your Stress with Music</h3>--> <strong style="text-transform: uppercase; font-size: .95rem; letter-spacing: .5px; font-weight: 900;">MASTERCLASS</strong><br/> <p style="margin-top: -3px; line-height: 1.3;"><strong> Playing with P!NK: Making it as a Touring Musician</strong></p> <p> In this Masterclass, you’ll dive into the suitcase of one of P!NK’s seasoned touring musicians and learn the skills needed to find success. </p> <p><strong style="padding-top: 1rem;">Thurs., June 5, only $99</strong></p> <a class="drop-info-cta" href="https://online.berklee.edu/masterclasses/playing-with-pink-making-it-as-a-touring-musician">Learn More & Enroll</a> </div> </div> </li> </ul> </div> </li> <li class='nav-item'> <a href='#' onclick='return false;'> Degrees </a> <div class='sub-nav absolute-footer'> <ul class='sub-nav-group'> <li> <h4> Undergraduate Degrees </h4> </li> <li><a href="/music-degrees/undergraduate/overview">Overview</a></li><li><a href="/music-degrees/undergraduate/music-production">Music Production</a></li><li><a href="/music-degrees/undergraduate/guitar-performance">Guitar Performance</a></li><li><a href="/music-degrees/undergraduate/music-business">Music Business</a></li><li><a href="/music-degrees/undergraduate/songwriting">Songwriting</a></li><li><a href="/music-degrees/undergraduate/songwriting-and-producing-music">Songwriting and Producing Music</a></li><li><a href="/music-degrees/undergraduate/electronic-music-production-and-sound-design">Electronic Music Production and Sound Design</a></li><li><a href="/music-degrees/undergraduate/music-composition-for-film-tv-and-games">Music Composition for Film, TV, and Games</a></li><li><a href="/music-degrees/undergraduate/piano-performance">Piano Performance</a></li><li><a href="/music-degrees/undergraduate/interdisciplinary-music-studies-create-your-own-major">Interdisciplinary Music Studies (Create Your Own Major)</a></li><li><a href="/music-degrees/undergraduate/voice-performance">Voice Performance</a></li><li><a href="/music-degrees/undergraduate/music-composition">Music Composition</a></li><li><a href="/music-degrees/undergraduate/undeclared-option">Undeclared Option</a></li> </ul> <ul class='sub-nav-group'> <li> <h4> Graduate Degrees </h4> </li> <li><a href="/music-degrees/graduate/overview">Overview</a></li><li><a href="/music-degrees/graduate/music-production">Music Production</a></li><li><a href="/music-degrees/graduate/music-business">Music Business</a></li><li><a href="/music-degrees/graduate/songwriting">Songwriting</a></li><li><a href="/music-degrees/graduate/film-scoring">Film Scoring</a></li><li><a href="/music-degrees/graduate/interdisciplinary-music-studies">Interdisciplinary Music Studies</a></li> </ul> <ul class='sub-nav-group'> <li> <h4> <span class='new' style='font-weight:800; margin-top: -17px;'>New!</span> Undergraduate Minors </h4> </li> <li><a href="/minors/overview">Overview</a></li><li><a href="/minors/film-and-media-scoring">Film and Media Scoring</a></li><li><a href="/minors/music-industry-entrepreneurship">Music Industry Entrepreneurship</a></li><li><a href="/minors/music-production-and-recording">Music Production and Recording</a></li> </ul> <div class='absolute-drop-footer'> <span><a href="/apply" style="margin-left: 0;color: #ee243c; padding: 0; border: 0; text-decoration: underline; font-weight: 800;" target="_blank">Apply</a> by May 5 for June 30 semester start, and get a decision within 1 week</span><br><span style="font-weight:800;">$75 application fee waived • Apply in as little time as 15 minutes</span></span> </div> </div> </li> <li class='nav-item'> <a href='#' onclick='return false;'> Certificates </a> <div class='sub-nav'> <ul class='sub-nav-group'> <li> <div class='drop-info'> <h3>No application required</h3> <h5>to enroll in a certificate.</h5> <hr role="separator"> <div class="cert-course-dates" style="display: flex;"> <em> <svg style="padding-top: 6px; padding-right: 7px;" class="svg-inline--fa fa-clock" data-prefix="far" data-icon="clock" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path></svg> </em> <a href="/certificates" target="blank"> Next semester starts April 7 </a> </div> <!-- <div class="drop-info-ee"> <h3>Non-Degree Students: LAST DAY to save up to $200!</h3> <h4 style="border: none;">Enroll in an eligible certificate by 5:00 PM ET, and save.</h4> <svg style="width: 20px;" class="svg-inline--fa fa-clock" data-prefix="fas" data-icon="clock" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""> <path fill="currentColor" d="M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path> </svg> Next semester starts April 7. <div>No application required.</div> <a href="/early-enrollment" target="blank"> View Eligible Courses & Certificates </a> </div> --> <style> .drop-info-ee { background: #ee243c; border: none; color: #FFF; padding: 1.5rem;text-align: center; } .drop-info-ee h5 { font-size: 1rem; letter-spacing: .5px; text-transform: uppercase; } .drop-info-ee a, .drop-info-ee a:visited { background: #FFF;border: 1px solid #FFF; color: #ee243c !important; font-weight: 800; display: block !important; margin: 15px auto !important; padding: 10px 10px !important; text-align: center; border-radius: 2px; width: 85%; } .drop-info-ee a:hover { background: #ee243c !important; border: 1px solid #FFF; color: #fff !important; } </style> </div> </li> </ul> <ul class='sub-nav-group certificates'> <li> <a href='/certificates' itemprop='url'>All Certificates</a> </li> <li> <a href='/about/payment-options'> Certificate Payment Options </a> </li> <li> <a href='/about/undergraduate-certificate-programs-tuition-and-fees'> Undergraduate Certificate Programs Tuition and Fees </a> </li> <li> <a href='/about/graduate-certificate-programs-tuition-and-fees'> Graduate Certificate Programs Tuition and Fees </a> </li> <li> <a href='/about/academic-calendar'> Academic Calendar </a> </li> <li> <a href='/scholarships'> Scholarships </a> </li> </ul> </div> </li> <li class='nav-item'> <a href='#' onclick='return false;'> Courses </a> <div class='sub-nav courses'> <ul class='sub-nav-group'> <li> <div class='drop-info'> <h3>No application required</h3> <h5>to enroll in a certificate.</h5> <hr role="separator"> <div class="cert-course-dates" style="display: flex;"> <em> <svg style="padding-top: 6px; padding-right: 7px;" class="svg-inline--fa fa-clock" data-prefix="far" data-icon="clock" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path></svg> </em> <a href="/certificates" target="blank"> Next semester starts April 7 </a> </div> <!-- <div class="drop-info-ee"> <h3>Non-Degree Students: LAST DAY to save up to $200!</h3> <h4 style="border: none;">Enroll in an eligible certificate by 5:00 PM ET, and save.</h4> <svg style="width: 20px;" class="svg-inline--fa fa-clock" data-prefix="fas" data-icon="clock" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""> <path fill="currentColor" d="M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path> </svg> Next semester starts April 7. <div>No application required.</div> <a href="/early-enrollment" target="blank"> View Eligible Courses & Certificates </a> </div> --> <style> .drop-info-ee { background: #ee243c; border: none; color: #FFF; padding: 1.5rem;text-align: center; } .drop-info-ee h5 { font-size: 1rem; letter-spacing: .5px; text-transform: uppercase; } .drop-info-ee a, .drop-info-ee a:visited { background: #FFF;border: 1px solid #FFF; color: #ee243c !important; font-weight: 800; display: block !important; margin: 15px auto !important; padding: 10px 10px !important; text-align: center; border-radius: 2px; width: 85%; } .drop-info-ee a:hover { background: #ee243c !important; border: 1px solid #FFF; color: #fff !important; } </style> </div> </li> </ul> <ul class='sub-nav-group courses'> <li> <a href='/courses' itemprop='url'>All Courses</a> </li> <li> <a href='/about/payment-options'> Course Payment Options </a> </li> <li> <a href='/about/undergraduate-and-graduate-individual-credit-and-non-credit-course-tuition-and-fees'> Undergraduate and Graduate Course Tuition and Fees </a> </li> <li> <a href='/about/academic-calendar'> Academic Calendar </a> </li> <li> <a href='/scholarships'> Scholarships </a> </li> <a class='btn-primary-outline course-drop' href='/coming-soon'> New & Updated Courses </a> </ul> </div> </li> <li class='nav-item'> <a href='#' onclick='return false;'> Admissions </a> <div class='sub-nav admissions'> <ul class='sub-nav-group'> <li> <h4> Undergraduate Admissions </h4> <li><a class="undergraduate-degree-admissions-requirements" href="/degrees/about/undergraduate-degree-admissions-requirements"> Admissions Requirements</a></li><li><a class="undergraduate-degree-tuition-financial-aid" href="/degrees/about/undergraduate-degree-tuition-financial-aid"> Tuition & Financial Aid</a></li><li><a class="undergraduate-degree-scholarships" href="/degrees/about/undergraduate-degree-scholarships"> Scholarships</a></li><li><a class="undergraduate-degree-academic-calendar" href="/degrees/about/undergraduate-degree-academic-calendar"> Academic Calendar</a></li><li><a class="undergraduate-degree-program-internships" href="/degrees/about/undergraduate-degree-program-internships"> Program Internships</a></li><li><a class="undergraduate-degree-completion" href="/degrees/about/undergraduate-degree-completion">Degree Completion</a></li><li><a class="undergraduate-prior-learning-credit" href="/degrees/about/undergraduate-prior-learning-credit"> Prior Learning Credit</a></li><li><a class="undergraduate-degree-transfer-credits" href="/degrees/about/undergraduate-degree-transfer-credits"> Transfer Credits</a></li><li><a class="undergraduate-degree-program-policies-and-forms" href="/degrees/about/undergraduate-degree-program-policies-and-forms"> Program Policies and Forms</a></li><li><a class="undergraduate-degree-program-faqs" href="/degrees/about/undergraduate-degree-program-faqs"> Program FAQs</a></li><li><a class="undergraduate-international-students" href="/degrees/about/undergraduate-international-students"> International Students</a></li> </li> </ul> <ul class='sub-nav-group'> <li> <h4>Graduate Admissions</h4> <li><a class="graduate-degree-admissions-requirements" href="/degrees/about/graduate-degree-admissions-requirements"> Admissions Requirements</a></li><li><a class="graduate-degree-tuition-financial-aid" href="/degrees/about/graduate-degree-tuition-financial-aid"> Tuition & Financial Aid</a></li><li><a class="graduate-degree-program-internships" href="/degrees/about/graduate-degree-program-internships"> Program Internships</a></li><li><a class="graduate-degree-academic-calendar" href="/degrees/about/graduate-degree-academic-calendar"> Academic Calendar</a></li><li><a class="graduate-degree-transfer-credits" href="/degrees/about/graduate-degree-transfer-credits"> Transfer Credits</a></li><li><a class="graduate-international-students" href="/degrees/about/graduate-international-students"> International Students</a></li><li><a class="graduate-degree-program-policies-and-forms" href="/degrees/about/graduate-degree-program-policies-and-forms"> Program Policies and Forms</a></li> </li> </ul> <ul class='sub-nav-group'> <li> <h4>Transfer Students</h4> <a href='/degrees/about/undergraduate-degree-transfer-credits'>Undergraduate Transfer Credits</a> <a href='/degrees/about/graduate-degree-transfer-credits'>Graduate Transfer Credits</a> <a href='/degrees/about/undergraduate-prior-learning-credit'>Prior Learning Credit</a> <a href='/transfer-partner-schools'>Transfer Partner Schools</a> </li> </ul> <ul class='sub-nav-group'> <li> <h4>International Students</h4> <a href='/degrees/about/undergraduate-international-students'>Undergraduate Admission Requirements</a> <a href='/degrees/about/graduate-international-students'>Graduate Admission Requirements</a> </li> </ul> <ul class='sub-nav-group military'> <li> <h4>Military Benefits</h4> <div class="info-nav"><a href="/military/getting-started" class="nav-item">New Students – Getting Started</a><a href="/military/va-education-benefits" class="nav-item">VA Education Benefits</a><a href="/military/military-tuition-assistance" class="nav-item">Military Tuition Assistance</a><a href="/military/tuition-and-military-discount" class="nav-item">Tuition and Military Discount</a><a href="/military/forms" class="nav-item">Military Forms</a><a href="/military/military-affairs-faqs" class="nav-item">Military Affairs FAQs</a><a href="/military/outside-scholarships" class="nav-item">Outside Scholarships</a><a href="/military/additional-resources" class="nav-item">Additional Resources</a></div> </li> </ul> <div class='drop-footer-message'> <span><a href="/apply" style="margin-left: 0;color: #ee243c; padding: 0; border: 0; font-weight: 800;" target="_blank">Apply</a> by May 5 for June 30 semester start, and get a decision within 1 week</span><br><span style="font-weight:800;">$75 application fee waived • Apply in as little time as 15 minutes</span></span> </div> </div> </li> <li class='nav-item'> <a href='#' onclick='return false;'> About </a> <div class='sub-nav'> <ul class='sub-nav-group'> <li> <div class="drop-info"> Need Guidance? <br> <h3>1-866-BERKLEE</h3> <h5>Int'l +1-617-747-2146</h5> <h5> <a href="mailto:advisors@online.berklee.edu"> advisors@online.berklee.edu </a> </h5> <hr role="separator"> <div class="cert-course-dates" style="display: flex;"> <em> <svg style="padding-top: 6px; padding-right: 7px;" class="svg-inline--fa fa-clock" data-prefix="far" data-icon="clock" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path></svg> <!-- <div class="far fa-clock"></div>--> </em> <a href="/courses" target="blank"> Next semester starts April 7 <!--Last day to enroll in June semester. <br>Enroll by 5 PM ET. <br>Limited seats available.--> </a> </div> </div> </li> </ul> <ul class='sub-nav-group'> <li> <a href='/about/berklee-online' itemprop='url'>About</a> </li> <li class='mission-link'> <a href='/about/mission'>Our Mission</a> </li> <li> <a href='/about/leadership-team'>Leadership Team</a> </li> <li> <a href='/instructors'>Instructor Directory</a> </li> <li> <a href='/about' style='white-space: nowrap;'>School Info, Enrollment, and Policies</a> </li> <li> <a href='/work-with-us'>Work With Us</a> </li> <li class='drop-footer'> <a href='/about/contact-us' itemprop='url'> <i> <div class='far fa-phone'></div> </i> Contact / Help </a> </li> </ul> </div> </li> <li class='nav-item' id='nav-item-resources'> <a href='#' onclick='return false;'> Resources </a> <div class='sub-nav'> <ul class='sub-nav-group'> <li> <div class='drop-info'> <div class='drop-info-content'> <a href='/berklee-onsite' target='_blank'> <img alt='Berklee Onsite 2025' loading='lazy' src='https://assets.online.berklee.edu/Berklee+Onsite/resources-ad-dark.svg' style='width: 425px; margin-left: -50px;'> </a> </div> </div> </li> </ul> <ul class='sub-nav-group'> <li> <a href='/free-music-course-resources'>All Free Music Resources</a> </li> <li> <a href='/careers-in-music/'>Careers in Music</a> </li> <li> <a href='/sample-a-lesson'>Sample a Lesson / How It Works</a> </li> <li> <a href='/handbooks'>Handbooks</a> </li> <li> <a href='/deals'>Student Deals</a> </li> <li> <a href='/mentor-collective'>Mentorship Program</a> </li> <li> <a href='/giftcard'>eGift Cards</a> </li> <li> <a href='/berklee-onsite'> <strong> Annual Event: Berklee Onsite </strong> </a> </li> <li class='drop-footer'> <a href='//online.berklee.edu/takenote' itemprop='url'> <em>Take Note</em> Online Magazine </a> </li> </ul> </div> </li> <li class='nav-item'> <a class='nav-link search' data-backdrop='true' data-bs-target='#search-and-question-panel' data-bs-toggle='modal' href='#' style='padding-right: 0;' title='Click to open search panel'> <i> <div class='far fa-search'></div> </i> </a> </li> </ul> </nav> <div class='navbar-nav right'> <a class='nav-link search mobile-mast-search' data-backdrop='true' data-bs-target='#search-and-question-panel' data-bs-toggle='modal' href='#' style='padding-right: 0;' title='Click to open search panel'> <i> <div class='far fa-search'></div> </i> </a> <a id="login" class="btn-login" rel="nofollow" href="https://online.berklee.edu/register/login?return_url=https://online.berklee.edu/berklee-onsite">Log In</a> </div> </nav> </header> <div aria-hidden='true' aria-labelledby='searchAndQuestion' class='animate__animated animate__fadeIn animate__faster modal' id='search-and-question-panel' role='dialog' tabindex='-1'> <div class='modal-dialog' role='document'> <div class='modal-content'> <div class='modal-header'> <button aria-label='Close' class='close' data-bs-dismiss='modal' type='button'> <span aria-hidden='true'>× close</span> </button> </div> <div class='modal-body'> <div id='search-container'> <div id='search-form-container'> <form class='st-bo-form'> <i> <div class='far fa-search'></div> </i> <input class='st-default-search-input' id='query' type='search'> <button class='st-button' type='submit'> Go </button> </form> </div> </div> <div class='st-search-loader text-center'> <svg data-ember-extension='1' data-inboxsdk-master-claimed='true' data-inboxsdk-session-id='1531252035918-0.9216384892333274' height='45' stroke='#4C5960' viewbox='0 0 45 45' width='45' xmlns='http://www.w3.org/2000/svg'> <g fill-rule='evenodd' fill='none' stroke-width='2' transform='translate(1 1)'> <circle cx='22' cy='22' r='7.07674' stroke-opacity='0'> <animate attributename='r' begin='1.5s' calcmode='linear' dur='3s' repeatcount='indefinite' values='6;22'></animate> <animate attributename='stroke-opacity' begin='1.5s' calcmode='linear' dur='3s' repeatcount='indefinite' values='1;0'></animate> <animate attributename='stroke-width' begin='1.5s' calcmode='linear' dur='3s' repeatcount='indefinite' values='2;0'></animate> </circle> <circle cx='22' cy='22' r='15.0767' stroke-opacity='0'> <animate attributename='r' begin='3s' calcmode='linear' dur='3s' repeatcount='indefinite' values='6;22'></animate> <animate attributename='stroke-opacity' begin='3s' calcmode='linear' dur='3s' repeatcount='indefinite' values='1;0'></animate> <animate attributename='stroke-width' begin='3s' calcmode='linear' dur='3s' repeatcount='indefinite' values='2;0'></animate> </circle> <circle cx='22' cy='22' r='1.96222'> <animate attributename='r' begin='0s' calcmode='linear' dur='1.5s' repeatcount='indefinite' values='6;1;2;3;4;5;6'></animate> </circle> </g> </svg> <br> <h3>Searching...</h3> </div> <div class='back-to-faqs'> ← <a class='link-back-to-faqs' href='#' onclick='toggle_search_and_faqs(); return false;'> Show FAQs </a> </div> <div class='st-search-container'></div> <div id='question-container'> <div class='questions-inner'> <h3>Or check out these FAQs:</h3> <hr> <div class='question-block'> <div class='question'> What is Berklee Online? </div> <div class='answer'> Berklee Online is the online school of Berklee College of Music, delivering access to Berklee’s acclaimed curriculum from anywhere in the world. We are the world’s largest online music school—30,000+ musicians from more than 140 countries have taken our courses—but classes cap at just 20 students per section. </div> </div> <div class='question-block'> <div class='question'> What does Berklee Online offer? </div> <div class='answer'> We offer award-winning <a href="/courses" itemprop="url">online courses</a>, <a href="/certificates" itemprop="url">multi-course certificate programs</a>, a <a href="/music-degrees" itemprop="url">Bachelor of Arts degree, a Master of Music degree, and a Master of Arts degree</a>. </div> </div> <div class='question-block'> <div class='question'> Who is Berklee Online designed for? </div> <div class='answer'> Our programs provide lifelong learning opportunities to people interested in music and working in the music industry. The courses range from beginner to advanced graduate level. </div> </div> <div class='question-block'> <div class='question'> What kind of subjects are taught? </div> <div class='answer'> Berklee Online offers more than 200 courses in every musical interest area: Everything from instruction on specific instruments (guitar, piano, bass, drums, voice) to music production software (Ableton, Pro Tools, Logic, and more) to larger concepts in music business, songwriting, theory, and composing for film, TV, and games </div> </div> <div class='question-block'> <div class='question'> Do online students receive the benefits of an on-campus Berklee education? </div> <div class='answer'> Absolutely! Just like the students studying on Berklee’s Boston campus, Berklee Online students receive instruction from the same world-renowned faculty, with the added benefit of having music industry professionals from around the world teaching as well. You’ll also receive guidance from Berklee-trained Academic Advisors, and have the opportunity to walk at the Commencement ceremony in Boston with your cohort of graduates who studied online and in-person. </div> </div> <hr> <h4 id='admissions'> Admissions </h4> <div class='question-block'> <div class='question'> What is the process to apply for/enroll in a Berklee Online program or course? </div> <div class='answer'> Certificate programs and online courses are offered on an open enrollment basis. Simply complete the online enrollment form and provide payment prior to the course start date and you’re ready to go! Degree programs require an application and supporting documentation. See the <a href="/degrees/about/degree-admissions-requirements" itemprop="url">Admission Requirements</a> for more details. </div> </div> <div class='question-block'> <div class='question'> Will I receive a Berklee ID and/or email address? </div> <div class='answer'> Berklee Online degree students are eligible to request a Berklee ID. Upon acceptance into the program, degree students are also given a berklee.edu email address. </div> </div> <hr> <h4 id='courses'> Courses </h4> <div class='question-block'> <div class='question'> Can I take non-credit courses in a certificate? </div> <div class='answer'> All courses in a certificate program must be taken for credit. </div> </div> <div class='question-block'> <div class='question'> Can I waive some for-credit courses into a certificate? </div> <div class='answer'> Students must enroll in a certificate by paying the $175 certificate registration fee prior to completing the final course in the program. All for-credit courses that have been awarded a passing grade and that align with a certificate program may transfer into that program. </div> </div> <div class='question-block'> <div class='question'> Can I upgrade from a lower-level certificate to a higher-level certificate? </div> <div class='answer'> Yes! Berklee Online offers two certificate options: <ol> <li> CHANGE CERTIFICATE: When a student wants to change their lower-level certificate to a higher-level certificate (or vice versa) prior to the completion of the program. There are no additional fees for this option other than the cost of additional courses, and you will only earn one certificate upon completion. </li> <li> STARTING A NEW CERTIFICATE: When a student wants to earn more than one certificate by having the courses from their lower-level certificate waived into a higher-level certificate. In this case, an additional $175 registration fee is required. </li> </ol> </div> <hr> <h4 id='faculty'> Instructors </h4> <div class='question-block'> <div class='question'> Who teaches Berklee Online courses? </div> <div class='answer'> Berklee faculty and seasoned professionals teach our courses. Our instructors are recognized experts in their respective fields—they’ve produced and engineered hundreds of artists and numerous award-winning projects, and several of their students have gone on to earn GRAMMY Award nominations. </div> </div> <hr> <h4 id='financial-aid'> Financial Aid </h4> <div class='question-block'> <div class='question'> Am I eligible for financial aid? </div> <div class='answer'> Financial assistance is available for Berklee Online degree programs. This assistance may come from a variety of sources including federal awards, outside scholarships, and private loans. <br> <br> Federal financial aid is not available for non-degree programs. Non-degree students typically finance their costs out-of-pocket or with a private loan. Review our payment options. </div> </div> <hr> <h4 id='graduation'> Graduation </h4> <div class='question-block'> <div class='question'> What happens if I turn in my graduation application late? Do I still need to apply by December 1 even if I don’t want to walk in the Commencement ceremony? </div> <div class='answer'> Because we must coordinate with the Boston campus for Commencement, it is essential that students planning to walk in the ceremony submit their graduation application by 12:00 midnight ET on December 1. If you submit your application late, you will need to wait until the following year to walk. <br> <br> We ask all students planning to graduate within the current academic year to apply for graduation by December 1, regardless of their plans to participate in Commencement. Late application for students who do not wish to walk will result in processing delays for your academic record and diploma, and your name may not be listed in the ceremony program. </div> </div> <div class='question-block'> <div class='question'> What’s the difference between graduating and walking in Commencement? </div> <div class='answer'> Great question! Walking in Commencement and graduating are two separate things. <br> <br> You can walk in Commencement when you are nine (9) credits or less away from completing your degree requirements by the end of the spring term. Please note: Berklee Online degree students are not required to walk in Commencement in Boston. <br> <br> You graduate when you have met all of the following criteria: <ul> <li>Attained at least a 2.70 cumulative GPA in concentrate courses</li> <li>Have a minimum cumulative GPA of 2.00</li> <li>Fulfilled all program requirements AND completed a minimum of 120 credits for a single major or 165 for a dual major</li> <li>Completed a minimum of 60 institutional credits for a single major or 105 institutional credits for a dual major</li> <li>Fulfilled all financial obligations to the college</li> </ul> <strong>Note</strong> Walking across the stage in Commencement <u>does not</u> mean that you have graduated. You will not officially graduate and receive your diploma until you meet all of the eligibility requirements. </div> </div> <div class='question-block'> <div class='question'> I just finished my last term at Berklee Online! What happens next? Is there anything I need to do? </div> <div class='answer'> Congratulations on finishing! If you have already filled out a graduation application, you will want to double-check the "<a href="/degrees/about/graduation-planning">Graduation Checklist</a>" to ensure you have taken care of all of the various items associated with graduating. If you have not filled out a graduation application, you will need to do that as soon as possible. You will not be able to graduate until we have received and processed your graduation application. </div> </div> <div class='question-block'> <div class='question'> When will I get my diploma? </div> <div class='answer'> You will receive your diploma within 6-8 weeks of completing your degree requirements. Please keep in mind that instructors have up to two (2) weeks to submit final grades after the term concludes. <br> <br> Diplomas are mailed to the address you include on your graduation application. If your mailing address changes after you have submitted your graduation application, be sure to update us at <a href="mailto:graduation@online.berklee.edu">graduation@online.berklee.edu</a>. <br> <br> Keep in mind that if you are walking in Commencement, you will not receive your official diploma at the ceremony. </div> </div> <hr> <h4 id='transfer-credits'> Transfer Credits </h4> <div class='question-block'> <div class='question'> Can I find out how many transfer credits I am eligible for before I apply to the degree program? </div> <div class='answer'> If you are interested in applying to the Bachelor of Arts degree program and would like an estimate of the amount of transfer credit you would receive, you can request an unofficial transfer evaluation by emailing a copy of your transcript(s) to the Berklee Online Transfer Team at <a href="mailto:transfer@online.berklee.edu">transfer@online.berklee.edu</a>. Be sure to include your name, major of interest, and any additional questions you may have. You can expect to receive your assessment within 7-10 business days. </div> </div> <div class='question-block'> <div class='question'> I didn’t receive credit on my Official Evaluation for all of the courses that I thought I would. What should I do? </div> <div class='answer'> The earlier you contact us with questions or concerns regarding your evaluation, the easier it will be for us to address any issues. Therefore, it is very important when you first receive your official transfer evaluation that you review the information carefully. <br> <br> If you notice a remaining requirement that you believe you’ve already fulfilled, first consult our document on Common Reasons Credit Does Not Transfer. It’s possible that the course you are thinking of didn’t meet our eligibility requirements. <br> <br> If none of those exclusions apply, please fill out a Transfer Credit Equivalency Re-evaluation form for the courses you wish to have reconsidered. <br> <br> Sometimes, we are not able to locate specific information for a course online and we are not able to determine an equivalency, but we are always happy to review additional material which will help us make that determination. </div> </div> <div class='question-block'> <div class='question'> Do my Berklee Online, Berklee campus, or Prior Learning Credit coursework count towards the 60 transfer credit limit? </div> <div class='answer'> No, credits completed at Berklee or through the prior learning process do not count towards the 60 transfer credit limit. This maximum is for credit-bearing exams and undergraduate-level coursework completed externally. </div> </div> <div class='question-block'> <div class='question'> What is a credit deficiency and why do I need to make up credit? </div> <div class='answer'> Credit deficiencies are caused by transferring a course that is less than three (3) credits to fulfill a three (3) credit Berklee Online requirement. Students with a credit deficiency will be short of the minimum number of credits required to graduate once they have completed their program requirements. In order to be eligible to graduate, you will need to make up the credits you are deficient in. <br> <br> While the Transfer Team does their best to avoid giving students credit deficiencies, it is not always possible. You can make up the credits you are deficient in by completing additional Berklee Online coursework, by applying for prior learning credit, or by completing additional external coursework in the area in which you are deficient. <br> <br> <strong>Note</strong> all external courses will first need to be approved by the Transfer Team. </div> </div> <div class='question-block'> <div class='question'> Can transfer credit fulfill prerequisites? </div> <div class='answer'> It depends. Generally, transfer credit cannot be used to fulfill prerequisites unless we determine that the course you completed is a direct equivalent to one of the courses we offer at Berklee Online. Keep in mind that there are some courses which require you to pass a placement exam. For these you will need to achieve a passing grade on the test to fulfill the prerequisite, otherwise you will need to complete the appropriate Berklee Online course. </div> </div> <div class='question-block'> <div class='question'> Can I transfer credits to Berklee Online after I have started the degree program? </div> <div class='answer'> Yes, you can. To determine if the coursework you already completed or are considering taking is eligible to fulfill your remaining degree requirements, contact the Transfer Team at <a href="mailto:transfer@online.berklee.edu">transfer@online.berklee.edu</a>. </div> </div> <div class='question-block'> <div class='question'> I am a Berklee campus student. Can I transfer courses from Berklee Online to my campus-based program? </div> <div class='answer'> View a <a href="https://www.berklee.edu/registrar/online-course-equivalencies" target="_blank">list of transferable courses</a> to Berklee’s campus programs. <br> <br> For additional questions about transferring courses from Berklee Online to Berklee's campus programs please contact the campus transcript evaluator at <a href="mailto:transfercredits@berklee.edu">transfercredits@berklee.edu</a>. </div> </div> <div class='question-block'> <div class='question'> Are Berklee Online courses transferable to other institutions? </div> <div class='answer'> Berklee Online is regionally accredited by the New England Commission of Higher Education (NECHE), the same association that accredits our main campus and other leading academic institutions such as Harvard University and MIT. Our courses are transferable to other institutions, but it's up to the receiving institution to decide the number and types of courses that may transfer. We recommend getting a course pre-approved by an institution before enrolling. </div> </div> <hr> <h4 id='tuition'> Tuition </h4> <div class='question-block'> <div class='question'> How do Berklee Online’s costs compare to other education options? </div> <div class='answer'> Berklee Online’s programs have a tuition cost that is approximately 64 percent less than on-campus tuition at Berklee’s Boston campus. Moreover, a recent study revealed that the average annual tuition at for-profit colleges is more than twice as expensive as Berklee Online. Even average annual tuition at other accredited non-profit online universities is roughly $11,000 more expensive than tuition for a year with Berklee Online! </div> </div> <div class='question-block'> <div class='question'> How much does a <a href="/certificates" itemprop="url">certificate program</a> cost? </div> <div class='answer'> There is a one time $175 registration fee per certificate program. Students may either pay per course term (at the $1,545.00 per credit course cost) or pay in full to receive a 10 percent discount. The registration fee and all courses for the term you wish to begin in must be paid in full in order to begin. </div> </div> <div class='question-block'> <div class='question'> How much does an online <a href="/music-degrees" itemprop="url">Bachelor’s degree</a> cost? </div> <div class='answer'> Online undergraduate degree tuition is $59,160 for 120 credits for all majors except the guitar major. Tuition for the guitar major is $63,660. Students taking 10 courses per year can complete the degree in four years at a cost of $14,790 per year. (Note: Tuition and fees are subject to change.) </div> </div> <div class='question-block'> <div class='question'> How much does an online <a href="/music-degrees" itemprop="url">master's degree</a> cost? </div> <div class='answer'> Online graduate degree tuition is $33,120 for 36 credits. The Master of Music in Music Production and Master of Arts in Music Business programs are designed to be completed in one year of study. Both programs are comprised of 12 three-credit courses that can be taken during four 12-week semesters. </div> </div> <div class='question-block'> <div class='question'> What is included in the cost of a course? </div> <div class='answer'> The cost for an individual course includes the tuition fee. The cost of required books, hardware or software must be purchased separately, unless it is stated that these costs are included with your enrollment. Some courses may include additional fees for files or content. </div> </div> </div> </div> </div> </div> </div> </div> </div> <nav class='animate__animated animate__slideInLeft animate__faster' id='bo-collapse-nav'> <div id='bo-collapse-nav-header'> <div class='bo-collapse-logo'> <a href='/'> <img src='/assets/berklee-online-logo.svg?v=3'> </a> </div> <div id='bo-collapse-search-trigger'></div> <div id='bo-nav-close'> × </div> </div> <div id='bo-nav'> <ul> <li> <a class='parent' href='#'> All Programs <span class='chevron bottom'></span> </a> <ul class='bo-collapse bo-collapse-interests'> <li> <a href='/music-production' itemprop='url'>Music Production</a> </li> <li> <a href='/music-business' itemprop='url'>Music Business</a> </li> <li> <a href='/music-theory-harmony-and-ear-training'>Music Theory, Harmony, and Ear Training</a> </li> <li> <a href='/guitar' itemprop='url'>Guitar</a> </li> <li> <a href='/songwriting' itemprop='url'>Songwriting</a> </li> <li> <a href='/music-for-film-tv-and-games' itemprop='url'>Music for Film, TV, and Games</a> </li> <li> <a href='/arranging'>Arranging</a> </li> <li> <a href='/music-history-and-liberal-arts'>Music History and Liberal Arts</a> </li> <li> <a href='/piano-and-keyboard'>Piano and Keyboard</a> </li> <li> <a href='/voice'>Voice</a> </li> <li> <a href='/improvisation'>Improvisation</a> </li> <li> <a href='/dance-music-and-theater'> Dance, Music, and Theater </a> </li> <li> <a href='/orchestration'>Orchestration</a> </li> <li> <a href='/drums'>Drums</a> </li> <li> <a href='/bass'>Bass</a> </li> <li> <a href='/music-therapy-health-and-neuroscience'>Music Therapy, Health, and Neuroscience</a> </li> </ul> </li> <li> <a class='parent' href='#'> Degrees <span class='chevron bottom'></span> </a> <ul class='bo-collapse bo-collapse-degrees'> <li class='header'>Undergraduate Degrees</li> <li><a href="/music-degrees/undergraduate/overview">Overview</a></li><li><a href="/music-degrees/undergraduate/music-production">Music Production</a></li><li><a href="/music-degrees/undergraduate/guitar-performance">Guitar Performance</a></li><li><a href="/music-degrees/undergraduate/music-business">Music Business</a></li><li><a href="/music-degrees/undergraduate/songwriting">Songwriting</a></li><li><a href="/music-degrees/undergraduate/songwriting-and-producing-music">Songwriting and Producing Music</a></li><li><a href="/music-degrees/undergraduate/electronic-music-production-and-sound-design">Electronic Music Production and Sound Design</a></li><li><a href="/music-degrees/undergraduate/music-composition-for-film-tv-and-games">Music Composition for Film, TV, and Games</a></li><li><a href="/music-degrees/undergraduate/piano-performance">Piano Performance</a></li><li><a href="/music-degrees/undergraduate/interdisciplinary-music-studies-create-your-own-major">Interdisciplinary Music Studies (Create Your Own Major)</a></li><li><a href="/music-degrees/undergraduate/voice-performance">Voice Performance</a></li><li><a href="/music-degrees/undergraduate/music-composition">Music Composition</a></li><li><a href="/music-degrees/undergraduate/undeclared-option">Undeclared Option</a></li> <li class='header'>Graduate Degrees</li> <li><a href="/music-degrees/graduate/overview">Overview</a></li><li><a href="/music-degrees/graduate/music-production">Music Production</a></li><li><a href="/music-degrees/graduate/music-business">Music Business</a></li><li><a href="/music-degrees/graduate/songwriting">Songwriting</a></li><li><a href="/music-degrees/graduate/film-scoring">Film Scoring</a></li><li><a href="/music-degrees/graduate/interdisciplinary-music-studies">Interdisciplinary Music Studies</a></li> <li class='header'>Undergraduate Minors</li> <li><a href="/minors/overview">Overview</a></li><li><a href="/minors/film-and-media-scoring">Film and Media Scoring</a></li><li><a href="/minors/music-industry-entrepreneurship">Music Industry Entrepreneurship</a></li><li><a href="/minors/music-production-and-recording">Music Production and Recording</a></li> </ul> </li> <li> <a href='/certificates' itemprop='url'>Certificates</a> </li> <li> <a href='/courses' itemprop='url'>Courses</a> </li> <li> <a class='parent' href='#'> Admissions & Tuition <span class='chevron bottom'></span> </a> <ul class='bo-collapse bo-collapse-admissions'> <li class='header'>Undergraduate Admissions</li> <li> <a href='/degrees/about/undergraduate-degree-admissions-requirements' itemprop='url'>How to Apply</a> </li> <li> <a href='/degrees/about/undergraduate-degree-tuition-financial-aid' itemprop='url'>Tuition and Financial Aid</a> </li> <li> <a href='/degrees/about/undergraduate-degree-transfer-credits' itemprop='url'>Transfer Credits</a> </li> <li> <a href='/degrees/about/undergraduate-international-students' itemprop='url'>International Students</a> </li> <li> <a href='/military/getting-started' itemprop='url'>Military Benefits</a> </li> <li class='header'>Graduate Admissions</li> <li> <a href='/degrees/about/graduate-degree-admissions-requirements' itemprop='url'>How to Apply</a> </li> <li> <a href='/degrees/about/graduate-degree-tuition-financial-aid' itemprop='url'>Tuition and Financial Aid</a> </li> <li> <a href='/degrees/about/graduate-degree-transfer-credits' itemprop='url'>Transfer Credits</a> </li> <li> <a href='/degrees/about/graduate-international-students' itemprop='url'>International Students</a> </li> <li> <a href='/military/getting-started' itemprop='url'>Military Benefits</a> </li> </ul> </li> <li> <a class='parent' href='#'> About <span class='chevron bottom'></span> </a> <ul class='bo-collapse bo-collapse-about'> <li> <a href='/about/berklee-online' itemprop='url'>About</a> </li> <li class='mission-link'> <a href='/about/mission' itemprop='url'>Our Mission</a> </li> <li> <a href='/about/leadership-team' itemprop='url'>Leadership Team</a> </li> <li> <a href='/instructors' itemprop='url'>Instructor Directory</a> </li> <li> <a href='/about' itemprop='url' style='white-space: nowrap;'>School Info, Enrollment, and Policies</a> </li> <li> <a href='/work-with-us' itemprop='url'>Work With Us</a> </li> </ul> </li> <li> <a class='parent' href='#'> Resources <span class='chevron bottom'></span> </a> <ul class='bo-collapse bo-collapse-about'> <li> <a href='/careers-in-music/' itemprop='url'>Careers in Music</a> </li> <li> <a href='/free-music-course-resources' itemprop='url'>Free Music Resources</a> </li> <li> <a href='/sample-a-lesson' itemprop='url'>Sample a Lesson / How It Works</a> </li> <li> <a href='/handbooks' itemprop='url'>Handbooks</a> </li> <li> <a href='/deals' itemprop='url'>Student Deals</a> </li> <li> <a href='/mentor-collective' itemprop='url'>Mentorship Program</a> </li> <li> <a href='//online.berklee.edu/takenote' itemprop='url'> <em>Take Note</em> Online Magazine </a> </li> <li> <a href='/berklee-onsite'> <strong> Annual Event: Berklee Onsite </strong> </a> </li> </ul> </li> </ul> </div> <div id='bo-collapse-nav-bottom'> <a class='bo-collapse-search-trigger' data-backdrop='true' data-bs-target='#search-and-question-panel' data-bs-toggle='modal' href='#'> <i class='far fa-search'></i> Search </a> <a href='sms:18662375533'> <i class='far fa-comments'></i> Text Us </a> <a href='tel:18662375533'> <i class='far fa-phone'></i> Call Us </a> </div> </nav> </div> <section class='main-content' id='main-content'> <div class='body-overlay'></div> <div class='content-wrap' data-swiftype-index='true'> <nav class="secondary-nav"> <div class="nav-container"> <div class="nav-left"> <a class="logo" href="/"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/berklee-onsite-logo-secondary-white.svg" style="height: 32px;" alt="Secondary Berklee Onsite Logo"> </a> </div> <div class="nav-center"> <div class="nav-wrapper"> <div class="dropdown-trigger"> <span class="current-section">Overview</span> <svg class="dropdown-arrow" width="15" height="12" viewBox="0 0 10 5"> <path d="M1 1L5 5L9 1" fill="#FFFFFF"></path> </svg> </div> <div class="nav-links"> <a class="nav-link active" data-section="overview" href="#overview">Overview</a> <a class="nav-link" data-section="sessions" href="#sessions">Sessions</a> <a class="nav-link" data-section="speakers" href="#speakers">Speakers</a> <a class="nav-link" data-section="sponsors" href="#sponsors">Sponsors</a> <a class="nav-link" data-section="faqs" href="#faqs">FAQs</a> <a class="nav-link" data-section="hotels" href="#hotels">Hotels/Parking</a> </div> </div> </div> <div class="nav-right"> <button class="btn-mast-register eb-register-button">Register</button> </div> </div> </nav> <noscript><a href="https://www.eventbrite.com/e/berklee-onsite-2025-tickets-berklee-onsite-2025-tickets-1111939443809" rel="noopener" target="_blank">Buy Tickets on Eventbrite</a></noscript> <script src="https://www.eventbrite.com/static/widgets/eb_widgets.js"></script> <section class="no-gutter" id="hero"> <div class="container-fluid"> <div class="row"> <div class="col-12 col-md-4 text-center"> <img class="pb-4" src="https://assets.online.berklee.edu/Berklee+Onsite/berklee-onsite-logo-white.svg" style="max-width: 350px;"> <h3 class="pt-4 text-center" style="color: #FFF; white-space:nowrap;">Boston, MA • May 30-31, 2025</h3> <h5 class="pb-4 text-center" style="color: #FFF; white-space:nowrap;">Early Bird Ticket, $159.00 • Register by March 21</h5> <button class="my-4 hero-register-button" id="eventbrite-widget-modal-trigger-1111939443809" type="button">Register Now</button> </div> </div> </div> </section> <section class="no-gutter slot-sponsor-1" id="sponsor-ribbon"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="sponsor-ribbon-wrapper"> <div class="sponsor-ribbon-wrapper-details"> <div class="sponsor-ribbon-sponsors"> <img src="https://assets.online.berklee.edu/deals-logos/logo-moises-black.svg" style="filter: invert(1);" alt="Moises.ai sponsor logo"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/distrokid_logo_for_dark_bg.png" alt="Distrokid sponsor logo"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/logo-taylor-white.svg" alt="Taylor Guitars sponsor logo" style="height: 35px;"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/sweetwater-white.png" alt="Sweetwater sponsor logo"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/ik_logo_hex-white.svg" alt="IK Multimedia sponsor logo" style="height: 45px;"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/deals-logo--splice.svg" alt="Splice sponsor logo"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/logo-open-mic.svg" alt="Open Mic sponsor Logo"> </div> </div> <a class="sponsor-ribbon-cta" href="//assets.online.berklee.edu/Berklee+Onsite/sponsors/berklee_onsite_2025_sponsorship_one_sheet.pdf" target="_blank">Become a Sponsor</a> </div> </div> </div> </div> </section> <div class="body-content"> <section class="no-gutter slot-2" id="overview"> <div class="container-fluid"> <div class="row d-flex align-items-center"> <div class="col-12 slot-2-text col-md-6 text-start"> <h2>What is Berklee Onsite?</h2> <p class="txt-md">Open and inclusive to the entire music community (not just students), join us <strong>Friday, May 30 through Saturday, May 31</strong> on Berklee College of Music’s campus in Boston for an unforgettable two days of live music, learning sessions, and networking events!</p> <ul class="fa-ul"> <li><span class="fa-li"><svg style="width: 18px;" class="svg-inline--fa fa-circle-check" data-prefix="far" data-icon="circle-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"></path></svg><!-- <i class="fa-regular fa-circle-check"></i> --></span>Hands-on workshops in music business, music production, songwriting and more</li> <li><span class="fa-li"><svg style="width: 18px;" class="svg-inline--fa fa-circle-check" data-prefix="far" data-icon="circle-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"></path></svg><!-- <i class="fa-regular fa-circle-check"></i> --></span>Live classes from Berklee's award-winning curriculum</li> <li><span class="fa-li"><svg style="width: 18px;" class="svg-inline--fa fa-circle-check" data-prefix="far" data-icon="circle-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"></path></svg><!-- <i class="fa-regular fa-circle-check"></i> --></span>Panels with Berklee instructors and industry experts</li> <li><span class="fa-li"><svg style="width: 18px;" class="svg-inline--fa fa-circle-check" data-prefix="far" data-icon="circle-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"></path></svg><!-- <i class="fa-regular fa-circle-check"></i> --></span>Face-to-face connections with Berklee instructors, students, and advisors</li> <li><span class="fa-li"><svg style="width: 18px;" class="svg-inline--fa fa-circle-check" data-prefix="far" data-icon="circle-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"></path></svg><!-- <i class="fa-regular fa-circle-check"></i> --></span>Networking and socializing events</li> <li><span class="fa-li"><svg style="width: 18px;" class="svg-inline--fa fa-circle-check" data-prefix="far" data-icon="circle-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"></path></svg><!-- <i class="fa-regular fa-circle-check"></i> --></span>Surprise performances</li> </ul> </div> <div class="slot-2-video col-12 col-md-6 text-center"> <div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;"> <div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"> <iframe src="https://fast.wistia.net/embed/iframe/iz2n2axcwj?web_component=true&seo=true" title="Berklee_Onsite_2024_20240531 Video" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" width="100%" height="100%"></iframe> </div></div> <script src="https://fast.wistia.net/player.js" async=""></script> </div> </div> </div> </section> <section class="no-gutter slot-3" id="sessions"> <div class="container-fluid"> <div class="row d-flex align-items-center"> <div class="col-12 col-md-6 text-start"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/onsite-session.jpg" class="img-fluid" alt="Picture of a Berklee Onsite session in action in a Music Production studio"> </div> <div class="col-12 col-md-6 text-start"> <h2>Sessions</h2> <p class="txt-md">Join us Friday, May 30 through Saturday, May 31 on Berklee College of Music’s campus in Boston for Berklee Onsite 2025! Onsite is two days of live music, learning sessions, and networking events, giving you the opportunity for face-to-face connections with Berklee instructors, students, and advisors you might normally only get to interact with online.</p> <!-- <div class="arrow_box"> <strong>Full list of sessions will be available soon!</strong> </div> --> <button class="primary-cta" data-bs-target="#sessionModal" data-bs-toggle="modal"> View All Sessions </button> </div> </div> </div> </section> <section class="no-gutter slot-4" id="speakers" style="padding: 75px 0;"> <div class="container-fluid"> <div class="row"> <div class="col-12 mb-2 d-flex" style="justify-content: space-between;"> <h2>Speakers</h2> <button class="primary-cta" data-bs-target="#speakerModal" data-bs-toggle="modal"> View All Speakers </button> </div> </div> <div class="row"> <div class="col-xs-12 col-md-6 col-lg-3 speaker-card"> <img src="//assets.online.berklee.edu/Berklee+Onsite/speakers/speaker-zahili.jpg" class="img-fluid"> <h4 class="card-title mb-1">Zahili Gonzalez Zamora</h4> <h5 class="card-subtitle mb-3 text-muted">Assistant Professor</h5> <p class="pt-4 pb-4 mb-4"> Zahili Gonzalez Zamora is an award-winning pianist and composer whose work fuses Afro-Cuban traditions with jazz innovation. Her trio, MIXCLA, has wowed audiences at Monterey and Montreal Jazz Festivals. A Berklee alum and Piano Department faculty member, she graduated summa cum laude in 2017 with a dual degree in Jazz Composition and Jazz Piano Performance. </p> </div> <div class="col-xs-12 col-md-6 col-lg-3 speaker-card"> <img src="//assets.online.berklee.edu/Berklee+Onsite/speakers/speaker-rodney.jpg" class="img-fluid"> <h4 class="card-title mb-1">Rodney Alejandro</h4> <h5 class="card-subtitle mb-3 text-muted">Dean</h5> <p class="pt-4 pb-4 mb-4">Rodney Alejandro has written, produced, and performed with icons like Quincy Jones, Roger Daltrey, and Stevie Wonder. A former member of the Script, he shaped their live sound as musical director. From chart-topping hits to TV scores (The Shield), his expertise fuels Berklee’s Songwriting Department. In 2024, he was nominated for his first Grammy.</p> </div> <div class="col-xs-12 col-md-6 col-lg-3 speaker-card"> <img src="//assets.online.berklee.edu/Berklee+Onsite/speakers/alison-plante.png" class="img-fluid" style="background: #eff1f3;"> <h4 class="card-title">Alison Plante</h4> <h5 class="card-subtitle mb-3 text-muted">Professor of Screen Scoring & Program Director for the Online M.M. in Film Scoring</h5> <p class="pt-4 pb-4 mb-4">The first female chair of a collegiate film scoring department, Alison's scoring credits range from documentaries for PBS and the History Channel to national television ads, independent films, live action and animated shorts, theater, and multimedia museum installations for the Smithsonian Institution and the Harvard Museum of Natural History.</p> </div> <div class="col-xs-12 col-md-6 col-lg-3 speaker-card last"> <img src="//assets.online.berklee.edu/Berklee+Onsite/speakers/speaker-prince-charles.png" class="img-fluid" style="background: #eff1f3;"> <h4 class="card-title">Prince Charles Alexander</h4> <h5 class="card-subtitle mb-3 text-muted">Professor, Music Production and Engineering</h5> <p class="pt-4 pb-4 mb-4">A legendary producer and engineer, Prince Charles Alexander has worked with Mary J. Blige, the Notorious B.I.G., Sting, and more, earning multiple Grammys and more than 40 Platinum and Gold certifications. A former Virgin Records artist, he was an early innovator in digital production, blending funk, R&B, and hip-hop with emerging studio technology.</p> </div> </div> <!-- <div class="row"> <div class="col-12 col-md-6 offset-md-3 text-center"> <div class="arrow_box"> <strong>The full list of speakers to be announced soon!</strong> </div> </div> <div class="col-12 text-center"> <button class="primary-cta" data-bs-target="#speakerModal" data-bs-toggle="modal"> View All Speakers </button> </div> --> <br> <br> <div class="row align-items-center"> <div class="col-12 col-lg-6 text-start"> <div class="ratio ratio-16x9"> <iframe width="560" height="315" src="https://www.youtube.com/embed/WGkiR6eP1ww?si=q1GDP7GEBW07TL2T" title="YouTube video player" frameborder="0" allowfullscreen=""></iframe> </div> </div> <div class="col-12 col-md-6 text-start mt-5"> <h4>2024 Keynote</h4> <h2>Tonya Butler</h2> <h5>Assistant Chair, Business/Management</h5> <p class="txt-md">In this inspiring keynote address from Berklee Onsite 2024, Tonya Butler brings her theme of “How to Survive Your First Day of School” to life in unexpected ways. Beginning with a grade school photo, she shares a humorous anecdote about her grandmother putting her in a homemade dress, which underscores the first takeaway of “embrace your authentic self and love who you are, the way that you are.”</p> <div class="arrow_box"> <strong>2025 Keynote Speaker to be announced soon! Be sure to catch Tonya's keynote from 2024, above.</strong> </div> </div> </div> </div> </section> </div> <section class="no-gutter slot-5" id="instaslot"> <script src="https://static.elfsight.com/platform/platform.js" async=""></script> <div class="elfsight-app-be0f55c5-b905-49ff-aa9e-0d3bb2ebca9c" data-elfsight-app-lazy=""> <br> </div> </section> <section class="no-gutter slot-6" id="sponsors"> <div class="container-fluid"> <div class="row d-flex align-items-start"> <div class="sponsor-sticky col-12 slot-2-text col-md-5 text-start"> <h2>Thanks to Our Sponsors</h2> <p class="txt-md"> We extend our heartfelt gratitude to our generous sponsors, whose support makes this event possible. Their dedication to music education and the arts empowers our students and enriches our community. </p> <p class="txt-md"> Berklee Onsite is an opportunity for sponsors to reach a unique audience of enthusiastic music learners. Interested in <a href="//assets.online.berklee.edu/Berklee+Onsite/sponsors/berklee_onsite_2025_sponsorship_one_sheet.pdf" style="text-decoration: none;" target="_blank">becoming an Onsite sponsor</a>? </p> </div> <div class="col-12 col-md-6 text-left offset-md-1"> <div class="sponsor-card"> <img src="https://assets.online.berklee.edu/deals-logos/logo-moises-black.svg" alt="Moises.ai sponsor logo" style="height: 35px;"> <p class="mb-4">The musician's app. Play your music in any key, at any speed. Remove vocals and instruments in any song. Discover the ultimate immersive practice experience powered by AI.</p> <a class="sponsor-link" href="https://moises.ai/" target="_blank">Learn more</a> </div> <div class="sponsor-card"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/distrokid_logo_for_light_bg.png" alt="Distrokid sponsor logo" style="height: 35px;"> <p class="mb-4">More than a million artists rely on DistroKid to get their music on Spotify, Apple Music, TikTok, Tidal, Instagram, and all other major streaming services. With more features than any other distributor, DistroKid makes music distribution fun and easy. Artists get unlimited uploads and keep 100% of their royalties and earnings.</p> <a class="sponsor-link" href="https://www.distrokid.com" target="_blank">Learn more</a> </div> <div class="sponsor-card"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/sponsor-logo-taylor-black.svg" alt="Taylor sponsor logo" style="height: 100px;"> <p class="mb-4">Taylor Guitars crafts industry-leading acoustic guitars, renowned for their effortless playability, rich tonal balance, and precision craftsmanship. Trusted by top musicians across genres for songwriting, recording and live performance, a Taylor guitar is more than an instrument—it’s a creative catalyst. Explore Taylor’s diverse acoustic voices and ignite your musical inspiration.</p> <a class="sponsor-link" href="https://www.taylorguitars.com" target="_blank">Learn more</a> </div> <div class="sponsor-card"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/sweetwater-black.png" alt="Sweetwater sponsor logo" style="height: 55px;"> <p class="mb-4">Sweetwater is the ultimate destination for musicians, producers, and audio professionals, offering an unparalleled selection of instruments, recording gear, and pro audio equipment. With expert advice, industry-leading customer service, and exclusive benefits like Sweetwater’s 55-Point Inspection and free tech support, Sweetwater ensures every musician gets the best tools to create, perform, and produce with confidence. Visit sweetwater.com to find your next instrument or enter our <a href="https://www.sweetwater.com/giveaway" target="_blank">monthly giveaway</a> for a chance to win thousands of dollars in amazing gear!</p> <a class="sponsor-link" href="https://www.sweetwater.com" target="_blank">Learn more</a> <span class="px-2">|</span> <a class="sponsor-link" href="//www.sweetwater.com/giveaway" target="_blank">Enter giveaway</a> </div> <div class="sponsor-card"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/ik_logo_hex.svg" alt="IK Multimedia sponsor logo" style="height: 75px;"> <p class="mb-4">IK Multimedia is a leading innovator in guitar, instrument and recording technologies that helps millions of users to sound better in the studio, on the go, or on the stage. From cutting-edge AI Machine Modeling Technology powering the <a href="https://www.ikmultimedia.com/products/tonexecosystem" target="_blank">TONEX guitar and bass ecosystem</a> to breakthrough advances in monitoring with <a href="https://www.ikmultimedia.com/morethanmonitoring/" target="_blank">iLoud Monitors</a> and ARC Studio room correction, IK offers a comprehensive suite of products.</p> <a class="sponsor-link" href="https://www.ikmultimedia.com/index.php" target="_blank">Learn more</a> </div> <div class="sponsor-card"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/deals-logo--splice.svg" alt="Splice sponsor logo" style="filter: invert(1); height: 55px;"> <p class="mb-4">Millions of royalty-free one-shots, loops, FX, MIDI, and presets in a sample library deep enough to get lost in. It all starts on Splice.</p> <a class="sponsor-link" href="https://www.splice.com" target="_blank">Learn more</a> </div> <div class="sponsor-card last"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/sponsors/logo-open-mic.svg" alt="Open Mic Sponsor Logo" style="filter: invert(1); height: 40px;"> <p class="mb-4">The Open Mic Network is your link to performance opportunities across the Country and around the world. Build a fan base, tryout new music, find band mates, get stage experience, and make new friends. Play out at an open mic tonight!</p> <a class="sponsor-link" href="https://www.openmic.us/" target="_blank">Learn more</a> </div> </div> </div> </div> </section> <section class="no-gutter" id="slot-map"> <div class="text-center"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/onsite-25-world-3.jpg" class="img-fluid" alt="Map showing the many countries that Berklee Onsite attendees come from." style="max-height: 732px;"> </div> </section> <section class="no-gutter" id="faqs" style="padding: 75px 0; border-top: 1px solid #DDD;"> <div class="container-fluid"> <div class="row"> <div class="col-12 col-8 offset-md-2 text-left"> <h2 class="pb-5">Berklee Onsite FAQs</h2> </div> </div> <div class="row"> <div class="col-12 col-md-8 offset-md-2"> <div class="accordion accordion-flush" id="accordion-group-1"> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> When and where is Berklee Onsite taking place? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Berklee Onsite 2025 is taking place Friday, May 30 through Saturday, May 31 at Berklee College of Music’s Boston campus. Attendees will be able to check in to the conference beginning at 8:00 AM on May 30. <br> <br> There will also be an informal “meet & greet” taking place on Thursday, May 29th from 5pm - 8pm in the David Friend Recital Hall (921 Boylston St) for anyone who is in-town the night before the conference and are looking to connect with fellow attendees and Berklee Online staff. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> When will individual session registration be open for Berklee Onsite 2025? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Individual session and workshop registration will open the week of April 21. You will receive an email as soon as the sessions become available for registration! </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Who can attend Berklee Onsite? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Berklee Onsite is open to Berklee students and the general public. Please note that the conference will be capped at 500 attendees on a first-come, first-served basis. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Are there any age restrictions for attendees? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Berklee Onsite attendees who are under the age of 13 must be accompanied at all times by a parent or legal guardian. Attendees under the age of 18 will be required to have a parent or legal guardian sign a waiver stating that their participation in Berklee Onsite is approved. Attendees under the age of 18 will receive a waiver via email prior to Berklee Onsite. <br> <br> All Berklee Onsite attendees are asked to keep government-issued identification with them at all times. You may be asked during event check-in to present an ID to Berklee Online staff. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Are Berklee Onsite events handicap accessible? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Yes, all Berklee Onsite events are handicap accessible. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> If I live outside of the United States, do I need a visa to attend Berklee Onsite? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Because Berklee Onsite is a non-credit bearing, short-term program, you do not need a student visa to attend. However, travel regulations vary by country, so to find out if you will need a tourist visa to enter the US, please visit <a href="https://travel.state.gov/content/travel/en/us-visas/visa-information-resources/wizard.html" target="_blank">Travel.State.Gov</a>. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> How can I connect with other attendees before and during Berklee Onsite? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Connect with other attendees on the Berklee Onsite 2025 <a href="https://www.facebook.com/events/1682328849328998" target="_blank">Facebook Event page</a>. Use #BerkleeOnsite2025 for a chance to be featured on Berklee Online’s social media accounts, and don’t forget to follow us on <a href="https://www.facebook.com/berkleeonline" target="_blank">Facebook</a>, <a href="https://www.instagram.com/berkleeonline/" target="_blank">Instagram</a>, <a href="https://linkedin.com/company/berkleeonline" target="_blank">LinkedIn</a>, <a href="https://www.tiktok.com/@berkleeonline" target="_blank">TikTok</a>, and <a href="https://www.youtube.com/user/BerkleeMusic" target="_blank">YouTube</a>. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Will I receive college credit for attending Berklee Onsite? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> No, college credit will not be awarded to those who choose to attend Berklee Onsite. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Will I get a certificate stating that I attended Berklee Onsite? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Yes. After the conference, you will be able to download a digital badge from Accredible that you can display on your LinkedIn profile or other social media. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Who should I contact about disability accommodations? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Berklee Online is committed to creating and providing usable, equitable, and inclusive learning environments. If you need accommodations because of a disability, please contact Berklee Online the accommodations department at <a href="mailto:accommodation@online.berklee.edu">mailto:accommodation@online.berklee.edu</a>. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Is there a waiver, release, or indemnification agreement? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Yes. By participating in Berklee Onsite at Berklee College of Music, you agree to the Waiver, Release, and Indemnification Agreement found <a href="https://assets.online.berklee.edu/Berklee+Onsite/Berklee+Onsite+Website+Waiver+2025.pdf" target="_blank">here</a>. </div> </div> </div> <h3 class="pb-2 pt-5">Accommodations</h3> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Where can I stay while I’m in Boston? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Recommended hotels and other options are found below next to the map. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> What should I bring with me to Berklee Onsite </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> We suggest bringing an instrument of your choice (as long as it is portable) and a laptop or tablet. These items are optional, and not a requirement to attend any sessions and workshops. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Where can I hear live music while I’m in Boston? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Check out this <a href="https://www.berklee.edu/boston-campus/boston-live-music-venues" target="_blank">list of live music venues</a> in Boston. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> What’s the weather like in Boston in June? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Although weather in New England is known for its uncertainty, June in Boston is typically comfortable, with an average daily low of 59°F (15°C) and high of 77°F (25°C). We recommend packing a sweatshirt or light jacket for cooler evenings and air-conditioned classrooms. </div> </div> </div> <h3 class="pb-2 pt-5">Tickets and Registration</h3> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> How much does Berklee Onsite cost to attend? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Berklee Onsite 2025 features two pricing tiers: <ul> <li>Early bird registration pricing is set at $159 USD and will be available Wednesday, February 12 through Thursday, March 20, 2025 at 11:59 PM ET.</li> <li>Starting on Friday, March 21, 2025, full price registration will be set at $199 USD.</li> </ul> Please note that the registration fee does not include airfare, accommodations, or other travel related expenses. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> What is the cancellation and refund policy for Berklee Onsite 2025? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> You will receive a full refund if you cancel and request a refund by Wednesday, April 30th, 2025. From May 1st onward, you will not be able to cancel your reservation for a refund. Please remember that canceling your Berklee Onsite registration does not automatically cancel hotel and/or travel arrangements. You are responsible for canceling your own hotel and travel reservations. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> Does my registration fee include meals? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> No. Berklee Onsite attendees can dine a la carte in the 160 Massachusetts Avenue Dining Hall, or explore any of the many wonderful restaurants in Boston. </div> </div> </div> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" data-bs-target=".collapse-target" data-bs-toggle="collapse" type="button"> When will individual sessions be open for registration? </button> </div> <div class="accordion-collapse collapse collapse-target" data-bs-parent="#accordion-group-1"> <div class="accordion-body"> Registration for individual sessions and workshops will open the week of April 21, 2025. If you have already registered by this date, you will receive an email once these sessions become available for registration. </div> </div> </div> </div> </div> </div> </div> </section> <section class="no-gutter" id="map" style="background: #eff1f3;"> <div class="row d-flex align-items-center"> <div class="col-12 col-md-12 col-lg-6"> <!-- Google Map iframe with responsive wrapper --> <div class="ratio ratio-1x1"> <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2948.5498514815423!2d-71.08745312342048!3d42.34673657134107!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89e37a0c6c8ebc7f%3A0x49d7f9558402f7d1!2s160%20Massachusetts%20Ave%2C%20Boston%2C%20MA%2002115!5e0!3m2!1sen!2sus!4v1707324559607!5e0!3m2!1sen!2sus!4v1707324559607" style="border:0;" allowfullscreen=""> </iframe> </div> </div> <div class="map-tabs col-12 col-md-12 col-lg-6 pt-5 pb-5"> <ul class="nav nav-tabs nav-justified justify-content-center" id="locationTabs" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link tab-link active text-dark" data-bs-target="#hotels" data-bs-toggle="tab" id="hotels-tab" role="tab" type="button">Hotels</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link tab-link text-dark" data-bs-target="#parking" data-bs-toggle="tab" id="parking-tab" role="tab" type="button">Parking</button> </li> </ul> <div class="tab-content p-4 bg-white" id="locationTabsContent"> <div class="tab-pane fade show active" id="hotels" role="tabpanel"> <h3>Hotel Information</h3> <p>Here are recommended hotels near 160 Massachusetts Avenue, sorted by proximity to campus:</p> <ul> <li><a class="general-link" href="https://www.colonnadehotel.com" target="_blank"><strong>The Colonnade Hotel</strong></a> <br>120 Huntington Avenue • 0.2 miles from campus <br><span class="text-muted">4-star hotel with rooftop pool, near Prudential Center and public transportation</span> </li> <li class="mt-4"><a class="general-link" href="https://www.theverbhotel.com" target="_blank"><strong>The Verb Hotel</strong></a> <br>1271 Boylston Street • 0.3 miles from campus <br><span class="text-muted">Rock n' roll themed boutique hotel, close to Fenway Park</span> </li> <li class="mt-4"><a class="general-link" href="https://www.marriott.com/en-us/hotels/bosbs-sheraton-boston-hotel" target="_blank"><strong>Sheraton Boston Hotel</strong></a> <br>39 Dalton Street • 0.3 miles from campus <br><span class="text-muted">Connected to Prudential Center mall, indoor pool and fitness center</span> </li> <li class="mt-4"><a class="general-link" href="https://www.hilton.com/en/hotels/bosbhhh-hilton-boston-back-bay" target="_blank"><strong>Hilton Boston Back Bay</strong></a> <br>40 Dalton Street • 0.3 miles from campus <br><span class="text-muted">Close to Hynes Convention Center, recently renovated rooms</span> </li> <li class="mt-4"><a class="general-link" href="https://www.marriott.com/en-us/hotels/boscw-the-westin-copley-place-boston" target="_blank"><strong>Westin Copley Place</strong></a> <br>10 Huntington Avenue • 0.4 miles from campus <br><span class="text-muted">Connected to Copley Place mall, upscale amenities and dining</span> </li> </ul> <div class="border-top border-0 mt-5 pt-3"> <strong>Note:</strong> All hotels are within walking distance to Berklee, near public transportation, restaurants, shopping, and major attractions. The area is safe and well-lit. </div> </div> <div class="tab-pane fade" id="parking" role="tabpanel"> <h3>Parking Information</h3> <p>For those traveling to Berklee Onsite by car, limited metered parking is available on the streets surrounding the Berklee Performance Center and Berklee College of Music. Parking is also available at nearby parking garages:</p> <h4 class="mt-5">Nearby Garages</h4> <ul> <li><a class="general-link" href="https://maps.google.com/?q=50+Dalton+Street+Boston+MA" target="_blank"><strong>The Hynes Auditorium Garage</strong></a> <br>50 Dalton Street • 0.3 miles from campus</li> <li class="mt-4"><a class="general-link" href="https://maps.google.com/?q=800+Boylston+Street+Boston+MA" target="_blank"><strong>The Prudential Center Garage</strong></a> <br>800 Boylston Street • 0.4 miles from campus</li> <li class="mt-4"><a class="general-link" href="https://maps.google.com/?q=7+Haviland+Street+Boston+MA" target="_blank"><strong>The Haviland Street Garage</strong></a> <br>7 Haviland Street • 0.2 miles from campus</li> <li class="mt-4"><a class="general-link" href="https://maps.google.com/?q=1087+Boylston+Street+Boston+MA" target="_blank"><strong>Central Parking Jazz</strong></a> <br>1087 Boylston Street • 0.5 miles from campus • Call 617-542-1549 for rates</li> <li class="mt-4"><a class="general-link" href="https://maps.google.com/?q=40+Dalton+Street+Boston+MA" target="_blank"><strong>The Back Bay Hilton</strong></a> <br>40 Dalton Street • 0.3 miles from campus</li> <li class="mt-4"><a class="general-link" href="https://maps.google.com/?q=39+Dalton+Street+Boston+MA" target="_blank"><strong>Sheraton Boston Hotel Parking Garage</strong></a> <br>39 Dalton Street • 0.3 miles from campus</li> </ul> <h4 class="mt-5">Public Transportation</h4> <p>The campus is easily accessible via MBTA:</p> <ul> <li>Green Line E Branch to Symphony Station</li> <li>Orange Line to Massachusetts Avenue Station</li> <li>Multiple bus routes along Massachusetts Avenue</li> </ul> </div> </div> </div> </div> </section> <!-- session and speaker modals -----------------------------------------------> <!-- Modal --> <div class="modal fade" id="speakerModal" tabindex="-1"> <div class="modal-dialog modal-dialog-scrollable modal-fullscreen"> <div class="modal-content"> <div class="modal-header d-flex"> <h2 class="modal-title fs-4" id="speakerModalLabel">Berklee Onsite 2025 Speakers</h2> <button class="btn-close btn-close-dark" data-bs-dismiss="modal" type="button"> </button> </div> <div class="bg-light p-3 border-bottom"> <div class="container-fluid"> <input type="text" class="form-control" id="speakerSearch" placeholder="Search speakers..."> </div> </div> <div class="modal-body"> <div class="container-fluid"> <!-- Loading State --> <div class="text-center py-5" id="loadingState" style="display: none;"> <div class="spinner-border text-primary" role="status"> <span class="visually-hidden">Loading...</span> </div> <p class="mt-2">Loading speakers...</p> </div> <!-- Error State --> <div class="text-center py-5" id="errorState" style="display: none;"> <div class="text-danger mb-3"> <svg class="svg-inline--fa fa-exclamation-circle fa-3x" data-prefix="fas" data-icon="exclamation-circle" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""> <path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"></path> </svg> <!-- <i class="fas fa-exclamation-circle fa-3x"></i> --> </div> <p>Unable to load speaker data. Please try again later.</p> <button class="btn btn-primary">Retry</button> </div> <!-- Speaker Grid --> <div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4" id="speakerGrid"> </div> </div> </div> <div class="modal-footer"> <p id="speakerCount" class="m-0 text-center w-100" style="position: absolute; left: -9999px;"></p> <button class="primary-cta" data-bs-dismiss="modal" type="button">Close</button> </div> </div> </div> </div> <!-- Modal --> <div class="modal fade" id="sessionModal" tabindex="-1"> <div class="modal-dialog modal-fullscreen"> <div class="modal-content"> <!-- Header --> <div class="modal-header d-flex"> <h2 class="modal-title fs-4" id="sessionModalLabel">Berklee Onsite 2025 Sessions</h2> <button class="btn-close btn-close-dark" data-bs-dismiss="modal" type="button"> </button> </div> <!-- Body --> <div class="modal-body p-0"> <div class="container-fluid"> <!-- Loading State --> <div class="text-center py-5" id="sessionLoadingState" style="display: none;"> <div class="spinner-border text-primary" role="status"> <span class="visually-hidden">Loading...</span> </div> <p class="mt-2">Loading sessions...</p> </div> <!-- Error State --> <div class="text-center py-5" id="sessionErrorState" style="display: none;"> <div class="text-danger mb-3"> <svg class="svg-inline--fa fa-exclamation-circle fa-3x" data-prefix="fas" data-icon="exclamation-circle" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""> <path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"></path> </svg> <!-- <i class="fas fa-exclamation-circle fa-3x"></i> --> </div> <p>Unable to load session data. Please try again later.</p> <button class="btn btn-primary">Retry</button> </div> <!-- Session List --> <div id="sessionList" style="height: 100vh;"> <iframe src="https://online.berklee.edu/berklee-onsite-2025-session-schedule" frameborder="0" width="100%" height="100%"></iframe> </div> </div> </div> <!-- Footer --> <div class="modal-footer bg-light"> <p id="sessionCount" class="m-0 text-center w-100" style="position: absolute; left: -9999px;"></p> <button class="primary-cta" data-bs-dismiss="modal" type="button">Close</button> </div> </div> </div> </div> <!-- Include PapaParse for CSV parsing --> <script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.4.1/papaparse.min.js"></script> </div> </section> <section data-swiftype-index='false' id='footer'> <section class='footer-form nopass' id='footer-form'> <div class='container-fluid'> <div class='row'> <div class='col-12 col-sm-12 col-md-12 col-lg-6 footer-form-copy'> <div class='details-container global'> <h2 class="unknown">Get Instant Access to Free Music Resources</h2> <h2 class="known">Access Free Music Resources</h2> <ul> <li> <img src="https://assets.online.berklee.edu/Footer+Form/sample-simple.svg" loading="lazy" width="70" height="70"/> <div class="resource-item-content"> <h4>Free Sample Lessons</h4> <p>Take our online school for a test drive with our free sample course, featuring 12 lessons from our most popular courses.</p> </div> </li> <li> <img src="https://assets.online.berklee.edu/Footer+Form/handbook-simple.svg" loading="lazy" width="70" height="70"/> <div class="resource-item-content"> <h4>Degree Handbooks</h4> <p>Download free course materials designed to provide you with marketable skills in music.</p> </div> </li> <li> <img src="https://assets.online.berklee.edu/Footer+Form/catalog-simple.svg" loading="lazy" width="70" height="70"/> <div class="resource-item-content"> <h4>Online Course Catalog</h4> <p>Browse more than 200 unique 12-week courses in a wide variety of musical interest areas.</p> </div> </li> <li> <img src="https://assets.online.berklee.edu/Footer+Form/news-simple.svg" loading="lazy" width="70" height="70"/> <div class="resource-item-content"> <h4>News and Exclusive Content</h4> <p>Receive the latest in music trends, video tutorials, podcasts, and more.</p> </div> </li> </ul> </div> </div> <div class='col-12 col-md-12 col-lg-5 offset-lg-1' id='lead-form-passless'> <div class='form-login-prompt text-center'> <h4> Already have an account? <br> <a href='https://online.berklee.edu/register/login?return_url=https://online.berklee.edu/berklee-onsite'>Log in</a> to get access. <br> <br> </h4> <div class='text-start'> <!-- FORM: HEAD SECTION --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="referrer" content="no-referrer-when-downgrade"> <!-- THIS SCRIPT NEEDS TO BE LOADED FIRST BEFORE wforms.js --> <script type="text/javascript" data-for="FA__DOMContentLoadedEventDispatch" src="https://berklee.tfaforms.net/js/FA__DOMContentLoadedEventDispatcher.js" defer></script> <script type="text/javascript"> document.addEventListener("FA__DOMContentLoaded", function(){ const FORM_TIME_START = Math.floor((new Date).getTime()/1000); let formElement = document.getElementById("tfa_0"); if (null === formElement) { formElement = document.getElementById("0"); } let appendJsTimerElement = function(){ let formTimeDiff = Math.floor((new Date).getTime()/1000) - FORM_TIME_START; let cumulatedTimeElement = document.getElementById("tfa_dbCumulatedTime"); if (null !== cumulatedTimeElement) { let cumulatedTime = parseInt(cumulatedTimeElement.value); if (null !== cumulatedTime && cumulatedTime > 0) { formTimeDiff += cumulatedTime; } } let jsTimeInput = document.createElement("input"); jsTimeInput.setAttribute("type", "hidden"); jsTimeInput.setAttribute("value", formTimeDiff.toString()); jsTimeInput.setAttribute("name", "tfa_dbElapsedJsTime"); jsTimeInput.setAttribute("id", "tfa_dbElapsedJsTime"); jsTimeInput.setAttribute("autocomplete", "off"); if (null !== formElement) { formElement.appendChild(jsTimeInput); } }; if (null !== formElement) { if(formElement.addEventListener){ formElement.addEventListener('submit', appendJsTimerElement, false); } else if(formElement.attachEvent){ formElement.attachEvent('onsubmit', appendJsTimerElement); } } }); </script> <link href="https://berklee.tfaforms.net/dist/form-builder/5.0.0/wforms-layout.css?v=34e11156ddc42326f7410b620efc9acd1e40a835" rel="stylesheet" type="text/css" /> <link href="https://berklee.tfaforms.net/uploads/themes/theme-91.css" rel="stylesheet" type="text/css" /> <link href="https://berklee.tfaforms.net/dist/form-builder/5.0.0/wforms-jsonly.css?v=34e11156ddc42326f7410b620efc9acd1e40a835" rel="alternate stylesheet" title="This stylesheet activated by javascript" type="text/css" /> <script type="text/javascript" src="https://berklee.tfaforms.net/wForms/3.11/js/wforms.js?v=34e11156ddc42326f7410b620efc9acd1e40a835"></script> <script type="text/javascript"> if(wFORMS.behaviors.prefill) wFORMS.behaviors.prefill.skip = true; </script> <script type="text/javascript" src="https://berklee.tfaforms.net/wForms/3.11/js/localization-en_US.js?v=34e11156ddc42326f7410b620efc9acd1e40a835"></script> <script> var FAoldJQ; if (typeof $ != 'undefined' && $.noConflict) FAoldJQ = $.noConflict(true); </script> <script src="https://berklee.tfaforms.net/dist/jquery/jquery.0416573c648d279fd758.js"></script> <script src="https://berklee.tfaforms.net/js/typeahead/v1.2.0/typeahead.bundle.js"></script> <script> var FA$ = $.noConflict(true); if (FAoldJQ) $ = FAoldJQ; </script> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> <!-- FORM: BODY SECTION --> <div class="wFormContainer" > <div class="wFormHeader"></div> <style type="text/css"> #tfa_1, *[id^="tfa_1["] { width: 300px !important; } #tfa_1-D, *[id^="tfa_1["][class~="field-container-D"] { width: auto !important; } #tfa_2, *[id^="tfa_2["] { width: 300px !important; } #tfa_2-D, *[id^="tfa_2["][class~="field-container-D"] { width: auto !important; } #tfa_3, *[id^="tfa_3["] { width: 300px !important; } #tfa_3-D, *[id^="tfa_3["][class~="field-container-D"] { width: auto !important; } #tfa_4, *[id^="tfa_4["] { width: 300px !important; } #tfa_4-D, *[id^="tfa_4["][class~="field-container-D"] { width: auto !important; } #tfa_50-L, label[id^="tfa_50["] { width: 20px !important; min-width: 0px; } </style><div class=""><div class="wForm" id="4928346-WRPR" data-language="en_US" dir="ltr"> <div class="codesection" id="code-4928346"><script type="text/javascript"> // If you've named a field with a variable name, this function will return its current value. function getFieldValue(fieldVariableName) { let className = 'calc-' + fieldVariableName; let fieldEl = document.getElementsByClassName(className)[0]; return fieldEl.value; } // Loads GTM with the given container ID. function loadGTM(gtmContainerID) { // This is the exact code snippet from Google, except the container ID is a variable. (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer',gtmContainerID); } // This function gets used by hidden fields to grab utm campaign data from the URL function getQueryStringParams(sParam) { const params = new URLSearchParams(window.location.search) if (params.has(sParam)) { return params.get(sParam); } else { return 'parameter not in URL'; } } // When the page loads, try to find the gtmContainerID field and use it to load GTM. window.addEventListener('load', (event) => { let containerID = getFieldValue('gtmContainerID'); if (containerID) { loadGTM(containerID); dataLayer.push({event: 'virtualPageview'}); } else { } }); </script></div> <form method="post" action="https://berklee.tfaforms.net/api_v2/rest/workflow/processor" class="hintsBelow labelsAbove" id="4928346"> <fieldset id="tfa_5" class="section inline wf-acl-hidden"> <legend id="tfa_5-L">Hidden fields (do not delete)</legend> <div class="htmlSection" id="tfa_6"><div class="htmlContent" id="tfa_6-HTML">This group will not appear when actually filling out the form. See <a target="_blank" href="https://docs.google.com/document/d/1k9WyMtOto3L96_Xx6wMsQ_n_15OCHiHmpBRy0B7HCOA/edit#">this document</a> for more info about how to use these. </div></div> <input type="hidden" id="tfa_1" name="tfa_1" value="" class=""><input type="hidden" id="tfa_2" name="tfa_2" value="" class="formula=window.location.href;"><input type="hidden" id="tfa_3" name="tfa_3" value="" class=""><input type="hidden" id="tfa_4" name="tfa_4" value="GTM-PHJTR6V" class="calc-gtmContainerID"><input type="hidden" id="tfa_7" name="tfa_7" value="" class="formula=getQueryStringParams('utm_campaign')"><input type="hidden" id="tfa_11" name="tfa_11" value="" class="formula=getQueryStringParams('utm_medium');"><input type="hidden" id="tfa_9" name="tfa_9" value="" class="formula=getQueryStringParams('utm_source');"><input type="hidden" id="tfa_10" name="tfa_10" value="" class="formula=getQueryStringParams('utm_term');"><input type="hidden" id="tfa_13" name="tfa_13" value="" class="formula=getQueryStringParams('utm_content');"><input type="hidden" id="tfa_15" name="tfa_15" value="" class="formula=getQueryStringParams('campaign_id');"><input type="hidden" id="tfa_158" name="tfa_158" value="" class=""><div class="oneField field-container-D " id="tfa_153-D"> <label id="tfa_153-L" class="label preField " for="tfa_153">Subject Area Helper PL</label><br><div class="inputWrapper"><input type="text" id="tfa_153" name="tfa_153" value="" readonly title="Subject Area Helper PL" class="formula=subject readonly"></div> </div> <div class="oneField field-container-D " id="tfa_156-D"> <label id="tfa_156-L" class="label preField " for="tfa_156">Hidden Level Helper PL</label><br><div class="inputWrapper"><input type="text" id="tfa_156" name="tfa_156" value="" readonly title="Hidden Level Helper PL" class="formula=lvl readonly"></div> </div> </fieldset> <div class="oneField field-container-D " id="tfa_16-D"> <label id="tfa_16-L" class="label preField reqMark" for="tfa_16">First Name</label><br><div class="inputWrapper"><input aria-required="true" type="text" id="tfa_16" name="tfa_16" value="" autocomplete="off" title="First Name" class="required"></div> </div> <div class="oneField field-container-D " id="tfa_17-D"> <label id="tfa_17-L" class="label preField reqMark" for="tfa_17">Last Name</label><br><div class="inputWrapper"><input aria-required="true" type="text" id="tfa_17" name="tfa_17" value="" autocomplete="off" title="Last Name" class="required"></div> </div> <div class="oneField field-container-D " id="tfa_18-D"> <label id="tfa_18-L" class="label preField reqMark" for="tfa_18">Email Address</label><br><div class="inputWrapper"><input aria-required="true" type="text" id="tfa_18" name="tfa_18" value="" autocomplete="off" title="Email Address" class="validate-email required"></div> </div> <div class="oneField field-container-D " id="tfa_111-D"> <label id="tfa_111-L" class="label preField reqMark" for="tfa_111">What would you like to study?</label><br><div class="inputWrapper"><select aria-required="true" id="tfa_111" name="tfa_111" data-filter-dependent="#tfa_121" title="What would you like to study?" class="calc-subject required"><option value="">Please select...</option> <option value="tfa_112" id="tfa_112" class="calcval-Interdisciplinary\u0020Music\u0020Studies">Interdisciplinary Music Studies</option> <option value="tfa_113" id="tfa_113" class="calcval-Music\u0020Business">Music Business</option> <option value="tfa_114" id="tfa_114" class="calcval-Music\u0020Performance">Music Performance</option> <option value="tfa_115" id="tfa_115" class="calcval-Music\u0020Production">Music Production</option> <option value="tfa_116" id="tfa_116" class="calcval-Music\u0020Theory\u0020and\u0020Composition">Music Theory and Composition</option> <option value="tfa_117" id="tfa_117" class="calcval-Scoring\u0020for\u0020Film,\u0020TV,\u0020and\u0020Games">Scoring for Film, TV, and Games</option> <option value="tfa_118" id="tfa_118" class="calcval-Songwriting">Songwriting</option> <option value="tfa_119" id="tfa_119" class="calcval-Undecided">Undecided</option></select></div> </div> <div class="oneField field-container-D " id="tfa_121-D"> <label id="tfa_121-L" class="label preField reqMark" for="tfa_121">What level are you interested in?</label><br><div class="inputWrapper"><select aria-required="true" id="tfa_121" name="tfa_121" data-filter-control="#tfa_111" title="What level are you interested in?" class="calc-lvl required"><option value="">Please select...</option> <optgroup id="tfa_122" label="Interdisciplinary Music Studies" class="choiceGroup"> <option value="tfa_130" id="tfa_130" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_131" id="tfa_131" class="calcval-Graduate">Graduate</option> <option value="tfa_132" id="tfa_132" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_123" label="Music Business" class="choiceGroup"> <option value="tfa_133" id="tfa_133" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_134" id="tfa_134" class="calcval-Graduate">Graduate</option> <option value="tfa_135" id="tfa_135" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_124" label="Music Performance" class="choiceGroup"> <option value="tfa_136" id="tfa_136" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_137" id="tfa_137" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_125" label="Music Production" class="choiceGroup"> <option value="tfa_138" id="tfa_138" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_139" id="tfa_139" class="calcval-Graduate">Graduate</option> <option value="tfa_159" id="tfa_159" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_126" label="Music Theory and Composition" class="choiceGroup"> <option value="tfa_168" id="tfa_168" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_140" id="tfa_140" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_127" label="Scoring for Film, TV, and Games" class="choiceGroup"> <option value="tfa_141" id="tfa_141" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_142" id="tfa_142" class="calcval-Graduate">Graduate</option> <option value="tfa_143" id="tfa_143" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_128" label="Songwriting" class="choiceGroup"> <option value="tfa_144" id="tfa_144" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_145" id="tfa_145" class="calcval-Graduate">Graduate</option> <option value="tfa_146" id="tfa_146" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> </optgroup> <optgroup id="tfa_129" label="Undecided" class="choiceGroup"> <option value="tfa_147" id="tfa_147" class="calcval-Undergraduate">Undergraduate</option> <option value="tfa_148" id="tfa_148" class="calcval-Graduate">Graduate</option> <option value="tfa_149" id="tfa_149" class="calcval-Certificates\u0020and\u0020Courses">Certificates and Courses</option> <option value="tfa_154" id="tfa_154" class="calcval-Undecided">Undecided</option> </optgroup></select></div> </div> <div class="oneField field-container-D hintsBelow " id="tfa_151-D"> <label id="tfa_151-L" class="label preField reqMark" for="tfa_151">What program are you interested in?</label><br><div class="inputWrapper"> <input aria-required="true" type="text" id="tfa_151" name="tfa_151" value="" aria-describedby="tfa_151-HH" title="What program are you interested in?" data-dataset-allow-free-responses="0" data-dataset-clear-cache="1" autocomplete="off" data-dataset-parameters="tfa_153 tfa_156" data-dataset-timestamp="1669073906" data-dataset-id="c30187ce-eb48-4559-b147-dc7e57a5726b" data-dataset-map="b=tfa_158," data-dataset-type="salesforce-picklist" data-dataset-url="https://berklee.tfaforms.net/api_v2/datasets" class="required wfAutosuggest"><i class="fa fa-spinner fa-pulse fa-fw tt-spinner"></i><i class="fa fa-search tt-search" aria-hidden="true"></i><i class="fa fa-times-circle tt-clear no-input" tabindex="0" aria-label="Clear field" role="button"></i><span class="field-hint-inactive" id="tfa_151-H"><span id="tfa_151-HH" class="hint">Please select from drop down.</span></span> </div> </div> <div class="oneField field-container-D " id="tfa_160-D"> <label id="tfa_160-L" class="label preField " for="tfa_160">Would you like an advisor to contact you?</label><br><div class="inputWrapper"><select id="tfa_160" name="tfa_160" title="Would you like an advisor to contact you?" class=""><option value="">Please select...</option> <option value="tfa_165" id="tfa_165" class="">No, thank you</option> <option value="tfa_166" id="tfa_166" data-conditionals="#tfa_164" class="">Yes, by phone</option> <option value="tfa_167" id="tfa_167" class="">Yes, by email</option></select></div> </div> <div class="oneField field-container-D " id="tfa_164-D"> <label id="tfa_164-L" class="label preField reqMark" for="tfa_164">Phone Number</label><br><div class="inputWrapper"> <input aria-required="true" type="text" id="tfa_164" name="tfa_164" value="" autocomplete="off" aria-describedby="tfa_164-HH" data-condition="`#tfa_166`" title="Phone Number" class="required"><span class="field-hint-inactive" id="tfa_164-H"><span id="tfa_164-HH" class="hint">Please include country code.</span></span> </div> </div> <div class="oneField field-container-D " id="tfa_50-D" role="group" aria-labelledby="tfa_50-L" data-tfa-labelledby="-L tfa_50-L"><div class="inputWrapper"><span id="tfa_50" class="choices vertical "><span class="oneChoice"><input type="checkbox" value="tfa_51" class="" id="tfa_51" name="tfa_51" aria-labelledby="tfa_51-L" data-tfa-labelledby="tfa_50-L tfa_51-L" data-tfa-parent-id="tfa_50"><label class="label postField" id="tfa_51-L" for="tfa_51"><span class="input-checkbox-faux"></span><span id="docs-internal-guid-d26dc06c-7fff-581b-e661-5a726f53b366"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">By submitting this form you are agreeing to receive communications from Berklee and to have your information processed in accordance with the terms of our </span><a href="https://www.berklee.edu/policies/terms"><span style="font-size: 11pt; font-family: Arial; color: rgb(17, 85, 204); background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Privacy Policy</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">. Berklee will not sell or rent your information to third parties and you may unsubscribe at any time.</span></span></label></span></span></div></div> <div class="actions" id="4928346-A" data-contentid="submit_button"><input type="submit" data-label="Submit" class="primaryAction" id="submit_button" value="Submit"></div> <div style="clear:both"></div> <input type="hidden" value="187-5759ce2f195916e09f290de29722af51" name="tfa_dbCounters" id="tfa_dbCounters" autocomplete="off"><input type="hidden" value="4928346" name="tfa_dbFormId" id="tfa_dbFormId"><input type="hidden" value="" name="tfa_dbResponseId" id="tfa_dbResponseId"><input type="hidden" value="c75c43dc6a7118ea1d12272f3e07a372" name="tfa_dbControl" id="tfa_dbControl"><input type="hidden" value="" name="tfa_dbWorkflowSessionUuid" id="tfa_dbWorkflowSessionUuid"><input type="hidden" value="1742643817" name="tfa_dbTimeStarted" id="tfa_dbTimeStarted" autocomplete="off"><input type="hidden" value="15" name="tfa_dbVersionId" id="tfa_dbVersionId"><input type="hidden" value="" name="tfa_switchedoff" id="tfa_switchedoff"> </form> </div></div><div class="wFormFooter"><p class="supportInfo"><br></p></div> <p class="supportInfo" > </p> </div> <script id="analytics-collector-script" type="text/javascript" src="https://berklee.tfaforms.net/dist/analytics/data-collector.b669b669e4e65b402126.js" data-customer-id="374" data-endpoint="https://analytics.formassembly.com/v1/traces" ></script> </div> </div> </div> </div> </div> </section> <footer class='main-footer' id='info-footer'> <div class='footer-row f-social'> <span class='f-social__header'>Stay Connected</span> <div class='f-social__icons'> <a href='//www.facebook.com/berkleeonline' rel='noopener' target='_blank' title='Visit our Facebook.'> <span class='fab fa-facebook-f'></span> </a> <a href='//www.instagram.com/berkleeonline/' rel='noopener' target='_blank' title='Visit our Instagram.'> <span class='fab fa-instagram'></span> </a> <a href='//www.youtube.com/user/BerkleeMusic' rel='noopener' target='_blank' title='Visit our YouTube.'> <span class='fab fa-youtube'></span> </a> <a href='//linkedin.com/company/berkleeonline' rel='noopener' target='_blank' title='Visit our LinkedIn.'> <span class='fab fa-linkedin'></span> </a> <a href='//www.tiktok.com/@berkleeonline' rel='noopener' target='_blank' title='Visit our TikTok.'> <span class='fab fa-tiktok'></span> </a> </div> </div> <div class='footer-row'> <div class='footer-block footer-block--1 f-school'> <img class="f-school__logo" src="https://berkleeonline-assets-east.s3.amazonaws.com/bo_logo-horizontal-reverse.svg" alt="Berklee Online logo"> <p class="f-school__body">Founded in 2002, Berklee Online is the premier innovator and largest provider of worldwide music education, offering more than 75,000 students from 164 countries the renowned curriculum of Berklee College of Music, at a fraction of the cost. With more than 18,000 annual enrollments in credit-based courses, certificates, bachelor’s, and master’s degree programs, and 3.1 million enrollments in massive open online courses, students receive expert music instruction and emerge with the skills to exceed the demands of the music industry. </p> <div class="f-school__info"> <span>855 Boylston St, Boston, MA 02116</span> <span>1-866-BERKLEE</span> <span>Int’l: +1-617-747-2146</span> </div> </div> <div class='footer-block footer-block--2 f-lists'> <ul class='f-list f-list--programs'> <li class='f-list__header'>Programs</li> <li> <a href='/music-degrees'>Degree Programs</a> </li> <li> <a href='/certificates'>Certificates</a> </li> <li> <a href='/courses'>Courses</a> </li> <li> <a href='/about/compare-online-music-education-offerings'>Compare Our Offerings</a> </li> </ul> <ul class='f-list f-list--resources'> <li class='f-list__header'>Resources</li> <li> <a href='/deals'>Student Deals</a> </li> <li> <a href='/military/getting-started'>Military Benefits</a> </li> <li> <a href='/mentor-collective'>Mentorship Program</a> </li> <li> <a href='/handbooks'>Handbooks</a> </li> <li> <a href='https://online.berklee.edu/takenote'>Take Note Online Magazine</a> </li> <li> <a href='/giftcard'>eGift Cards</a> </li> </ul> <ul class='f-list f-list--about'> <li class='f-list__header'>About</li> <li> <a href='/about/berklee-online'>About</a> </li> <li class='mission-link'> <a href='/about/mission'>Our Mission</a> </li> <li> <a href='/about/leadership-team'>Leadership Team</a> </li> <li> <a href='/instructors'>Instructor Directory</a> </li> <li> <a href='/scholarships'>Scholarships</a> </li> <li> <a href='/work-with-us'>Careers</a> </li> <li> <a href='/about/contact-us'>Contact/Help</a> </li> </ul> </div> <div class="footer-block footer-block--3 f-messaging"> <span class="f-messaging__header" style="font-weight:800;">Berklee Online eGift Cards</span> <a href="/giftcard"> <img src="https://air-prod.imgix.net/f56d7c88-df15-4686-b46f-8f4f001fd7a1.jpg?w=1080&h=1080&fm=jpg&fit=crop" alt="Berklee Online digital gift card image"> <p class="f-messaging__body">Music is a gift. Pass it on … or have someone pass it to you!</p> <span class="f-messaging__btn">Learn More</span> </a> </div> </div> </footer> <div class='footer-bottom'> <style> @media (max-width: 576px) { .f-awards .logos { flex-direction: column; } } </style> <div class="footer-row f-awards"> <p> Berklee is <a href="https://www.berklee.edu/institutional-assessment/accreditation" style="color: #FFF;" target="_blank">accredited</a> by the New England Commission of Higher Education (NECHE).</p> <div class="logos"> <img class="logo" src="//assets.online.berklee.edu/footer_logo.svg" alt="Berklee College of Music Logo" width="49" height="65"> <img class="logo" src="//assets.online.berklee.edu/footer/footer_award_upcea_2023_white.svg" alt="UPCEA Award 2005-2021" width="114" height="65"> <img class="logo" src="//assets.online.berklee.edu/footer_award_QS_Stars.svg" alt="QS Stars Award 2017" width="113" height="65"> <a class="logo student-satisfaction-rate" href="https://online.berklee.edu/takenote/berklee-online-achieves-97-percent-student-satisfaction/"> <img src="//assets.online.berklee.edu/footer/97_percent_satisfaction_rate_icon.svg" alt="97 percent Student Satisfaction Rate" width="186" height="50"> </a> <a class="logo student-satisfaction-rate" href="//online.berklee.edu/takenote/newsweek-ranks-berklee-online-no-5-on-list-of-americas-top-online-schools-2025/"> <img src="//assets.online.berklee.edu/footer/Newsweek_US-TOC2025_Logo_Hor.svg" alt="Image representing Berklee Online honored with Number 5 spot on Newsweek's list of America's top online schools" height="58"> </a> </div> <br> <p>Berklee Online is a University Professional and Continuing Education Association (UPCEA) award-winner eighteen years in a row (2005-2023).</p> </div> <div class='footer-row f-small'> <div class='left'> © Copyright 2001 - 2025 <a href='https://www.berklee.edu' rel='noopener' target='_blank'>Berklee College of Music</a> </div> <div class='right'> <a href="/about/terms">Terms</a> <span> • </span> <a href="/about/privacy">Privacy Policy</a> </div> </div> </div> <div class='bottom-bar-container'> </div> </section> </div> <div class='st-search-container'></div> <div id='gdpr-notification'> <div class='inner'> <p> <span> We use cookies to improve your experience on our sites. </span> By use of our site, you agree to our <a href="/about/privacy#cookies" class="gdpr-dismiss" target="_blank">cookie policy</a>. </p> <div class='bo-button-alt gdpr-dismiss'> Got it </div> </div> </div> <div aria-hidden='true' aria-labelledby='gradProofModal' class='modal fade' id='gradProofModal' role='dialog' tabindex='-1'> <div class='modal-dialog' role='document'> <div class='modal-content'> <div class='modal-header'> <h3 class='modal-title' id='gradProofModalTitle' style='float: left;'>Proof of Bachelor's Degree to Enroll</h3> <button aria-label='Close' class='close' data-bs-dismiss='modal' type='button'> <span aria-hidden='true'>×</span> </button> </div> <div class='modal-body'> <p> Proof of a bachelor's degree is required to enroll in any <strong>non-degree, graduate-level certificate or course</strong>. </p> <hr> <p> <strong>Ready to submit an unofficial copy of your transcript?</strong> </p> <a class='bo-button bo-button-secondary wall-link-log-in' href='https://berkleeonline.tfaforms.net/4870584' target='_blank'> Submit Transcript </a> <hr> <h5>International Students</h5> <p> See the <a href="https://online.berklee.edu/about/enrolling-in-a-graduate-certificate-or-individual-course" target="_blank" rel="noindex, nofollow">Enrolling in a Graduate Certificate or Individual Course</a> page for more information. </p> </div> <div class='modal-footer'> <button class='bo-button-alt' data-bs-dismiss='modal' type='button'>Close</button> </div> </div> </div> </div> <script src="https://assets.online.berklee.edu/catalog/assets/4d4a3c43620add7f52f97c02254d2d4f604b5c53/packs/js/application-d7a385f6bccd720f28d3.js"></script> <script crossorigin='anonymous' src='https://kit.fontawesome.com/08ce533d2a.js'></script> <script> /** * Berklee Onsite 2025 Main JavaScript * Complete site functionality including navigation, modals, and event registration * * Sections: * 1. Configuration and Constants * 2. Utility Functions * 3. Navigation Manager * 4. Speakers Manager * 5. Sessions Manager * 6. Eventbrite Manager * 7. Accordion Manager * 8. Initialization */ // ========================================= // 1. Configuration and Constants // ========================================= const CONFIG = { eventbriteId: '1111939443809', csvPaths: { speakers: `/speaker-data.csv?t=${Date.now()}`, sessions: `/session-data.csv?t=${Date.now()}` }, selectors: { navigation: { secondaryNav: '.secondary-nav', navWrapper: '.nav-wrapper', dropdownTrigger: '.dropdown-trigger', currentSection: '.current-section', navLinks: '.nav-link' }, sections: { overview: '#overview', hotels: '#hotels' }, modals: { speaker: '#speakerModal', session: '#sessionModal' }, buttons: { register: '.eb-register-button' } }, display: { speakerDescriptionHeight: '155px', stickyHeaderOffset: 175 } }; // ========================================= // 2. Utility Functions // ========================================= const Utils = { debounce(func, wait) { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }, getElement(selector) { return document.querySelector(selector); }, getElements(selector) { return Array.from(document.querySelectorAll(selector)); }, logError(context, error) { console.error(`[${context}] Error:`, error); } }; // ========================================= // 3. Navigation Manager // ========================================= const NavigationManager = { data: { lastScrollY: 0, nav: null, overviewSection: null, hotelsSection: null, sections: [], navLinks: [], navWrapper: null, dropdownTrigger: null, currentSection: null }, init() { this.data.nav = Utils.getElement(CONFIG.selectors.navigation.secondaryNav); this.data.overviewSection = Utils.getElement(CONFIG.selectors.sections.overview); this.data.hotelsSection = Utils.getElement(CONFIG.selectors.sections.hotels); this.data.sections = Utils.getElements('section[id]'); this.data.navLinks = Utils.getElements(CONFIG.selectors.navigation.navLinks); this.data.navWrapper = Utils.getElement(CONFIG.selectors.navigation.navWrapper); this.data.dropdownTrigger = Utils.getElement(CONFIG.selectors.navigation.dropdownTrigger); this.data.currentSection = Utils.getElement(CONFIG.selectors.navigation.currentSection); if (this.data.nav && this.data.overviewSection && this.data.hotelsSection) { this.setupMainNavigation(); } if (this.data.navWrapper && this.data.dropdownTrigger && this.data.currentSection) { this.setupMobileNavigation(); } }, setupMainNavigation() { this.data.nav.style.transform = 'translateY(-100%)'; this.data.nav.style.opacity = '0'; this.data.nav.style.visibility = 'hidden'; this.data.nav.style.transition = 'transform 0.3s ease-in-out, opacity 0.3s ease-in-out, visibility 0.3s'; window.addEventListener('scroll', Utils.debounce(this.handleScroll.bind(this), 10)); }, handleScroll() { const scrollPos = window.scrollY; const overviewOffset = this.data.overviewSection.offsetTop - 100; const hotelsOffset = this.data.hotelsSection.offsetTop + this.data.hotelsSection.offsetHeight; if (scrollPos >= overviewOffset && scrollPos < hotelsOffset) { this.showNav(); } else { this.hideNav(); } if (scrollPos < this.data.lastScrollY && scrollPos < overviewOffset) { this.hideNav(); } this.data.lastScrollY = scrollPos; this.updateActiveSection(scrollPos); }, showNav() { this.data.nav.style.transform = 'translateY(0)'; this.data.nav.style.opacity = '1'; this.data.nav.style.visibility = 'visible'; }, hideNav() { this.data.nav.style.transform = 'translateY(-100%)'; this.data.nav.style.opacity = '0'; this.data.nav.style.visibility = 'hidden'; }, updateActiveSection(scrollPos) { this.data.sections.forEach(section => { const offset = section.offsetTop - CONFIG.display.stickyHeaderOffset; const height = section.offsetHeight; const id = section.getAttribute('id'); if (scrollPos >= offset && scrollPos < offset + height) { this.data.navLinks.forEach(link => { // Only update links that are not tab links if (!link.classList.contains('tab-link')) { link.classList.remove('active'); if (link.getAttribute('data-section') === id) { link.classList.add('active'); } } }); } }); }, setupMobileNavigation() { this.data.dropdownTrigger.addEventListener('click', (e) => { e.stopPropagation(); this.data.navWrapper.classList.toggle('active'); }); document.addEventListener('click', (e) => { if (!this.data.navWrapper.contains(e.target)) { this.data.navWrapper.classList.remove('active'); } }); this.setupActiveObserver(); }, setupActiveObserver() { const updateCurrentSectionText = () => { const activeLink = Utils.getElement('.nav-link.active'); if (activeLink) { this.data.currentSection.textContent = activeLink.textContent; } }; updateCurrentSectionText(); const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.attributeName === 'class') { updateCurrentSectionText(); } }); }); this.data.navLinks.forEach(link => { observer.observe(link, { attributes: true }); }); window.addEventListener('scroll', Utils.debounce(updateCurrentSectionText, 100)); } }; // ========================================= // 4. Speakers Manager // ========================================= const SpeakersManager = { data: { speakers: [], modal: null, grid: null, searchInput: null, countDisplay: null }, init() { this.data.modal = Utils.getElement(CONFIG.selectors.modals.speaker); if (!this.data.modal) { Utils.logError('SpeakersManager', 'Speaker modal not found'); return; } this.bindEvents(); this.fetchData(); }, bindEvents() { this.data.modal.addEventListener('shown.bs.modal', () => { if (this.data.speakers.length === 0) { this.fetchData(); } else { this.loadSpeakers(); } this.data.searchInput = Utils.getElement('#speakerSearch'); if (this.data.searchInput) { this.data.searchInput.addEventListener('input', () => this.filterSpeakers()); } }); }, fetchData() { fetch(CONFIG.csvPaths.speakers) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.text(); }) .then(csvText => { Papa.parse(csvText, { header: true, skipEmptyLines: true, complete: (results) => { this.data.speakers = results.data; if (this.data.modal.classList.contains('show')) { this.loadSpeakers(); } }, error: (error) => { Utils.logError('SpeakersManager', 'CSV Parse Error: ' + error); } }); }) .catch(error => Utils.logError('SpeakersManager', 'Fetch Error: ' + error)); }, loadSpeakers() { this.data.grid = Utils.getElement('#speakerGrid'); if (!this.data.grid) return; this.data.grid.innerHTML = ''; this.data.speakers.forEach(speaker => { const col = document.createElement('div'); col.className = 'col'; col.innerHTML = ` <div class="card h-100 speaker-card"> <img src="https://assets.online.berklee.edu/Berklee+Onsite/speakers/${speaker.Name .normalize('NFD') // Separates base characters from accents .replace(/[\u0300-\u036f]/g, '') // Removes the accent marks .toLowerCase() // Makes everything lowercase .replace(/[.,]/g, '') // Removes periods and commas .replace(/\s+/g, '-') // Replaces spaces with dashes }.png" class="card-img-top" alt="${speaker.Name}"> <div class="card-body"> <h4 class="card-title mb-1">${speaker.Name}</h4> <h5 class="card-subtitle mb-3 text-muted"> ${speaker['Sub-Title (i.e. Location, Table/Booth, or Title/Sponsorship Level)']} </h5> <div class="card-text small description-text"> ${speaker['Description (Optional)'] || ''} </div> </div> <div class="card-footer bg-transparent"> <button class="btn btn-link btn-sm p-0 read-more">Read more</button> </div> </div> `; this.setupReadMore(col); this.data.grid.appendChild(col); }); this.updateSpeakerCount(this.data.speakers.length); }, setupReadMore(colElement) { const card = colElement.querySelector('.card'); const descriptionText = card.querySelector('.description-text'); const readMoreBtn = card.querySelector('.read-more'); if (!descriptionText || !readMoreBtn) return; descriptionText.style.maxHeight = CONFIG.display.speakerDescriptionHeight; descriptionText.style.overflow = 'hidden'; readMoreBtn.addEventListener('click', () => { if (descriptionText.style.maxHeight) { descriptionText.style.maxHeight = null; readMoreBtn.textContent = 'Read less'; } else { descriptionText.style.maxHeight = CONFIG.display.speakerDescriptionHeight; readMoreBtn.textContent = 'Read more'; } }); }, filterSpeakers() { if (!this.data.searchInput) return; const filter = this.data.searchInput.value.toLowerCase(); const cards = Utils.getElements('.speaker-card'); let visibleCount = 0; cards.forEach(card => { const titleEl = card.querySelector('.card-title'); const subtitleEl = card.querySelector('.card-subtitle'); const columnParent = card.closest('.col'); if (!titleEl || !subtitleEl || !columnParent) { Utils.logError('SpeakersManager', 'Missing required elements in card'); return; } const name = titleEl.textContent.toLowerCase(); const title = subtitleEl.textContent.toLowerCase(); const shouldShow = name.includes(filter) || title.includes(filter); columnParent.style.display = shouldShow ? "" : "none"; if (shouldShow) visibleCount++; }); this.updateSpeakerCount(visibleCount); }, updateSpeakerCount(visibleCount) { this.data.countDisplay = Utils.getElement('#speakerCount'); if (!this.data.countDisplay) return; const total = this.data.speakers.length; this.data.countDisplay.textContent = visibleCount === total ? `Showing all ${total} speakers` : `Showing ${visibleCount} of ${total} speakers`; } }; // ========================================= // 5. Sessions Manager // ========================================= const SessionsManager = { data: { sessions: [], modal: null, list: null, searchInput: null, countDisplay: null, loadingState: null, errorState: null }, init() { this.data.modal = Utils.getElement(CONFIG.selectors.modals.session); if (!this.data.modal) { Utils.logError('SessionsManager', 'Session modal not found'); return; } this.data.list = Utils.getElement('#sessionList'); this.data.loadingState = Utils.getElement('#sessionLoadingState'); this.data.errorState = Utils.getElement('#sessionErrorState'); this.bindEvents(); this.fetchData(); }, bindEvents() { this.data.modal.addEventListener('shown.bs.modal', () => { if (this.data.sessions.length === 0) { this.fetchData(); } else { this.loadSessions(); } this.data.searchInput = Utils.getElement('#sessionSearch'); if (this.data.searchInput) { this.data.searchInput.addEventListener('input', () => this.filterSessions()); } }); }, showLoadingState() { if (!this.data.loadingState) return; this.data.loadingState.style.display = 'block'; if (this.data.errorState) this.data.errorState.style.display = 'none'; if (this.data.list) this.data.list.style.display = 'none'; }, showErrorState() { if (!this.data.errorState) return; this.data.loadingState.style.display = 'none'; this.data.errorState.style.display = 'block'; if (this.data.list) this.data.list.style.display = 'none'; }, showSessionList() { if (!this.data.list) return; if (this.data.loadingState) this.data.loadingState.style.display = 'none'; if (this.data.errorState) this.data.errorState.style.display = 'none'; this.data.list.style.display = 'block'; }, fetchData() { this.showLoadingState(); fetch(CONFIG.csvPaths.sessions) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.text(); }) .then(csvText => { Papa.parse(csvText, { header: true, skipEmptyLines: true, complete: (results) => { this.data.sessions = results.data; if (this.data.modal.classList.contains('show')) { this.loadSessions(); } this.showSessionList(); }, error: (error) => { Utils.logError('SessionsManager', 'CSV Parse Error: ' + error); this.showErrorState(); } }); }) .catch(error => { Utils.logError('SessionsManager', 'Fetch Error: ' + error); this.showErrorState(); }); }, formatSessionInfo(session) { const timePart = session['Time Start'] ? (session['Time End (Optional)'] ? `${session['Time Start']} - ${session['Time End (Optional)']}` : session['Time Start'] ) : ''; const locationPart = session['Room/Location'] || ''; return [timePart, locationPart] .filter(part => part) .join(' • '); }, loadSessions() { if (!this.data.list) return; this.data.list.innerHTML = ''; const groupedSessions = {}; this.data.sessions.forEach(session => { if (!groupedSessions[session.Date]) { groupedSessions[session.Date] = []; } groupedSessions[session.Date].push(session); }); const sortedDates = Object.keys(groupedSessions).sort(); sortedDates.forEach(date => { const daysSessions = groupedSessions[date].sort((a, b) => a['Time Start'].localeCompare(b['Time Start']) ); const dateSection = document.createElement('div'); dateSection.className = 'date-section'; dateSection.innerHTML = ` <div class="sticky-top bg-light border-bottom p-3" style="top: 0;"> <h3 class="h4 m-0">${date}</h3> </div> <div class="session-list p-3"> ${daysSessions.map(session => { const subtitle = this.formatSessionInfo(session); return ` <div class="session-card card mb-3"> <div class="card-body"> <h4 class="card-title h5 mb-2">${session['Session Title']}</h4> ${subtitle ? `<h5 class="card-subtitle mb-2 text-muted small">${subtitle}</h5>` : '' } ${session['Description (Optional)'] ? `<p class="card-text small mb-0">${session['Description (Optional)']}</p>` : '' } </div> </div> `; }).join('')} </div> `; this.data.list.appendChild(dateSection); }); this.updateSessionCount(); }, filterSessions() { if (!this.data.searchInput) return; const filter = this.data.searchInput.value.toLowerCase(); const dateSections = Utils.getElements('.date-section'); let visibleCount = 0; dateSections.forEach(section => { const cards = section.querySelectorAll('.session-card'); let visibleInSection = 0; cards.forEach(card => { const text = card.textContent.toLowerCase(); const shouldShow = text.includes(filter); card.style.display = shouldShow ? "" : "none"; if (shouldShow) { visibleCount++; visibleInSection++; } }); const dateHeader = section.querySelector('.sticky-top'); if (dateHeader) { dateHeader.style.display = visibleInSection > 0 ? "" : "none"; } }); this.updateSessionCount(visibleCount); }, updateSessionCount(visibleCount) { this.data.countDisplay = Utils.getElement('#sessionCount'); if (!this.data.countDisplay) return; const total = this.data.sessions.length; this.data.countDisplay.textContent = visibleCount === undefined || visibleCount === total ? `Showing all ${total} sessions` : `Showing ${visibleCount} of ${total} sessions`; } }; // ========================================= // 6. Eventbrite Manager // ========================================= const EventbriteManager = { data: { registered: false }, init() { if (typeof window.EBWidgets === 'undefined') { Utils.logError('EventbriteManager', 'Eventbrite widget library not loaded'); return; } this.setupWidget(); this.bindRegisterButtons(); }, setupWidget() { window.EBWidgets.createWidget({ widgetType: 'checkout', eventId: CONFIG.eventbriteId, modal: true, modalTriggerElementId: `eventbrite-widget-modal-trigger-${CONFIG.eventbriteId}`, onOrderComplete: () => { console.log('Order complete!'); this.data.registered = true; } }); }, bindRegisterButtons() { const buttons = Utils.getElements(CONFIG.selectors.buttons.register); buttons.forEach(button => { button.addEventListener('click', () => { const triggerId = `eventbrite-widget-modal-trigger-${CONFIG.eventbriteId}`; const trigger = Utils.getElement(`#${triggerId}`); if (trigger) { trigger.click(); } else { Utils.logError('EventbriteManager', 'Trigger element not found'); } }); }); } }; // ========================================= // 7. Accordion Manager // ========================================= const AccordionManager = { init() { const accordionItems = Utils.getElements('.accordion-item'); accordionItems.forEach((item, index) => { const button = item.querySelector('.accordion-button'); const collapse = item.querySelector('.collapse-target'); if (!button || !collapse) return; const uniqueId = `collapse-${index}`; button.setAttribute('data-bs-target', `#${uniqueId}`); collapse.id = uniqueId; collapse.classList.remove('collapse-target'); }); } }; // ========================================= // 8. Initialize Everything // ========================================= document.addEventListener('DOMContentLoaded', () => { // Initialize all managers NavigationManager.init(); SpeakersManager.init(); //SessionsManager.init(); EventbriteManager.init(); AccordionManager.init(); // First check if an og:image already exists const existingOgImage = document.querySelector('meta[property="og:image"]'); if (existingOgImage) { // If it exists, update its content existingOgImage.setAttribute('content', 'https://assets.online.berklee.edu/Berklee+Onsite/onsite-og-image.jpg'); } else { // If it doesn't exist, create a new one const ogImage = document.createElement('meta'); ogImage.setAttribute('property', 'og:image'); ogImage.setAttribute('content', 'https://assets.online.berklee.edu/Berklee+Onsite/onsite-og-image.jpg'); document.head.appendChild(ogImage); } // Add custom styles const style = document.createElement('style'); style.textContent = ` .session-card { transform: none !important; transition: none !important; } .date-section:not(:first-child) { margin-top: 2rem; } .sticky-top { z-index: 1020; } .description-text { transition: max-height 0.3s ease-out; } `; document.head.appendChild(style); }); </script> <script src="https://cdn.foxycart.com/checkout.online.berklee.edu/loader.js" async="async" defer="defer"></script> <style> section:not(.main-content, .slot-6) { overflow: hidden; } /* this solves for a mysterious overflow issue most likely caused by Elfsight or Eventbrite */ .global-header { position: relative; z-index: 11; } @media(min-width: 768px) { .sponsor-sticky { position: sticky; top: 170px } } .description-text { font-family: Nunito Sans, sans-serif; font-size: 1.33rem; line-height: 2.2rem; font-weight: 400; } #special-notice { display: none !important; } .fa-ul { margin-left: 1.5em; } .fa-ul li { line-height: 1.2; padding-top: 1rem; } .fa-li { color: #17ac96; padding-top: .1rem; } .map-tabs { padding-right: 3rem; } @media(max-width: 550px) { .map-tabs { padding-left: 3rem; } } #hero { background: linear-gradient(to right, rgba(0, 156, 236, 1) 0%, rgba(0, 156, 236, 1) 30%, rgba(0, 156, 236, 0) 70% ), url(https://assets.online.berklee.edu/Berklee+Onsite/hero-final.webp); background-position: center; background-repeat: no-repeat; background-size: cover; min-height: 450px; padding: 75px 0; } @media (max-width: 768px) { #hero { background: linear-gradient(to top, rgba(0, 156, 236, 1) 0%, rgba(0, 156, 236, 1) 30%, rgba(0, 156, 236, 0) 70% ), url(https://assets.online.berklee.edu/Berklee+Onsite/hero-final.webp); background-position: center; background-repeat: no-repeat; background-size: cover; padding: 235px 0 45px 0; } #speakers.slot-4 { border-top: 1px solid #DDD; margin-top: 5rem; } } .hero-register-button { border: none; border-radius: 2px; background: #222; color:#FFF; padding: .5rem 1rem; font-weight: bold; } .sponsor-ribbon-cta { border: 1px solid #FFF; color: #FFF; border-radius: 2px; background: transparent; padding: .5rem 1rem; font-weight: bold; margin-left: 2rem; text-align: center; white-space: nowrap; } .sponsor-ribbon-cta:hover { color: #222; background: #FFF; } #sponsor-ribbon { background: #222; padding: 1rem 0; } #sponsor-ribbon h2 { color: #FFF; font-size: 1.2rem; margin: 0 3rem 0 0; padding: 0 3rem 0 0; border-right: 1px solid #fff; } .sponsor-ribbon-wrapper { align-items: center; display: flex; flex-direction: row; justify-content: flex-start; } .sponsor-ribbon-wrapper-details { align-items: center; display: flex; flex-direction: row; } .sponsor-ribbon-sponsors { align-items: center; display: flex; flex-direction: row; gap: 48px; } .sponsor-ribbon-sponsors img { height: 28px; } .sponsor-card { border-bottom: 1px solid #DDD; padding-bottom: 3rem; margin-bottom: 3rem; } .sponsor-card.last { border: none; padding: 0; margin: 0; } .sponsor-card p { margin: 1.5rem 0 0 0; } @media(max-width: 550px) { .speaker-card { border-bottom: 1px solid #DDD; text-align: center; } .speaker-card.last { border: none; } .speaker-card p { text-align: left; } } .speaker-card .card-footer { border: none; } .speaker-card .card-footer button { color: #000; font-weight:700; font-size: 1rem; text-decoration-color: #ee243c; text-underline-offset: 3px; } .slot-2 { background: url(https://assets.online.berklee.edu/Berklee+Onsite/bg-right.jpg) no-repeat right top; background-size: 25%; padding: 125px 0; } .slot-3 { background: url(https://assets.online.berklee.edu/Berklee+Onsite/bg-left.jpg) no-repeat left top; background-size: 25% 100%; padding: 65px 0; } .slot-6 { border-bottom: 1px solid #DDD; padding: 75px 0; } @media (max-width: 768px) { .slot-2 { background-size: cover; padding: 0; padding-top: 38%; background-position-y: -625px; } .slot-2-video { order: -1; } .slot-2-text { margin-bottom: 3rem; margin-top: 3rem; } .slot-2 img { margin-bottom: 3rem; } .slot-3 { background-size: contain; padding: 0; padding-top: 62%; } .slot-3 img { margin-bottom: 3rem; } } #slot-map { background: linear-gradient(to bottom, rgba(255, 255, 255, 1), rgba(214, 238, 251, 1)); background-position: center; background-size: contain; } .accordion-button:after { background-color: #eff1f3; padding: 1rem; background-position: center; border-radius: 9999px; } .speaker-card img { border-radius: 87.5px; max-width: 175px; margin: 2rem auto 1rem auto; } /* secondary nav */ .secondary-nav { background: #000; position: fixed; width: 100%; z-index: 1000; top: 64px; left: 0; right: 0; z-index: 10; } @media (max-width: 991px) { .secondary-nav { top: 58px; } } .nav-container { width: 100%; margin: 0 auto; padding: 0 20px; height: 64px; display: flex; justify-content: space-between; align-items: center; } .nav-left { display: flex; align-items: center; gap: 32px; } .logo img { height: 32px; width: auto; } .nav-wrapper { position: relative; } .nav-links { display: flex; gap: 32px; } .nav-link { text-decoration: none; color: #fff; font-weight: bold; transition: color 0.2s; } .nav-link:hover { color: #ee243c; } .nav-link.active { color: #fff; font-weight: bold; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 2px; text-decoration-color: #ee243c; } .btn-mast-register, .primary-cta { background: #ee243c; color: #FFF; font-weight: bold; padding: .5rem 1rem; border-radius: 2px; border: none; cursor: pointer; } .dropdown-trigger { display: none; } /* Dropdown styles */ @media (max-width: 965px) { .nav-wrapper { min-width: 140px; } .dropdown-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: #fff; font-weight: bold; cursor: pointer; padding: 8px 12px; border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 4px; } .dropdown-arrow { transition: transform 0.2s; } .nav-wrapper.active .dropdown-arrow { transform: rotate(180deg); } .nav-links { display: none; position: absolute; top: 100%; left: 0; background: #000; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 4px; gap: 8px; margin-top: 4px; min-width: 140px; flex-direction: column; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .nav-wrapper.active .nav-links { display: flex; } .nav-link { padding: 12px 16px; display: block; white-space: nowrap; } .nav-link:hover { background: rgba(255, 255, 255, 0.1); } } /* Default state (desktop) */ @media (min-width: 966px) { .nav-links { display: flex !important; } .current-section { display: none; } } @media (max-width: 768px) { #main-content { padding-top:0; } } @media (max-width: 1400px) { #sponsor-ribbon h2 span { display: none; } .sponsor-ribbon-wrapper-details { overflow-x: auto; -webkit-overflow-scrolling: touch; /* Smooth scrolling on iOS */ scrollbar-width: none; /* Hide scrollbar in Firefox */ } .sponsor-ribbon-wrapper-details::-webkit-scrollbar { display: none; /* Hide scrollbar in Chrome/Safari */ } .sponsor-ribbon-sponsors { display: flex; justify-content: space-between; min-width: min-content; /* Ensure it can scroll */ } } @media(max-width: 991px) { .sponsor-ribbon-cta { display: none; } } .nav-tabs, .nav-tabs .nav-link { border: none; } .nav-tabs .nav-link.active { background: #FFF; border: none; } .body-content a, .body-content a:visited, .sponsor-link, .general-link { color: #25353c; text-decoration: none; box-shadow: inset 0 -1px 0 #ee243c; transition: all .2s ease; } .modal-content .container-fluid { padding-left: 0 !important; padding-right: 0 !important; max-width: 100%; } .modal-content .card { padding: 2rem; border-radius: 2px; box-shadow: 0 2px 14px rgba(0,0,0,0.2); border-color: #CCC; } .modal-fullscreen { margin: 50px !important; max-width: calc(100% - 100px) !important; max-height: calc(100% - 100px) !important; } @media(max-width: 550px) { .modal-fullscreen { margin: 10px !important; max-width: calc(100% - 20px) !important; max-height: calc(100% - 20px) !important; } } </style> </body> <script> </script> <script type="application/ld+json">{ "@context": "http://schema.org", "@type": "Organization", "address": { "@type": "PostalAddress", "addressLocality": "Boston, MA", "postalCode": "02115", "streetAddress": "160 Massachusetts Avenue" }, "legalName": "Berklee Online", "url": "https://online.berklee.edu", "contactPoint": [{ "@type": "ContactPoint", "telephone": "+1-866-BERKLEE", "contactType": "Student Advisors / Customer Service", "contactOption": "TollFree" }, { "@type": "ContactPoint", "telephone": "+1-646-350-2789", "contactType": "Student Advisors / Customer Service" }], "logo": "https://assets.online.berklee.edu/berklee-online-logo-red-gray.png", "sameAs": [ "https://www.facebook.com/berkleeonline", "https://twitter.com/BerkleeOnline", "https://www.instagram.com/berkleeonline/", "https://www.youtube.com/user/BerkleeMusic", "http://www.flickr.com/photos/berkleecollege", "http://berkleecollege.tumblr.com/", "http://www.pinterest.com/berkleecollege", "https://www.snapchat.com/add/berklee", "https://soundcloud.com/soundsofberklee"] } </script><script type="application/ld+json">{ "@context": "http://schema.org", "@type": "WebSite", "name": "Berklee Online", "url": "https://online.berklee.edu/", "potentialAction": { "@type": "SearchAction", "target": "https://online.berklee.edu/search_results?utf8=%E2%9C%93&query={search_term}&commit=GO", "query-input": "required name=search_term" } } </script>