CINXE.COM
Music Theory and Composition 2 Course - 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":"dl5eQUtZWQoHEUoCXkBDQ1BKGUYODRQ=","queueTime":0,"applicationTime":109,"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.281.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:()=>p,gD:()=>m,xN:()=>g});var n=r(3333),i=r(993);const o=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var a=r(2614),s=r(944),c=r(384),u=r(8122);const d="[data-nr-mask]",l=()=>{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,level:i.p_.INFO},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:a.wk,inactiveMs:a.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){o(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,s.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){o(t)?e.block_selector+=",".concat(t):""!==t&&(0,s.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,s.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"]}}},f={},h="All configuration objects require an agent identifier!";function p(e){if(!e)throw new Error(h);if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function g(e,t){if(!e)throw new Error(h);f[e]=(0,u.a)(t,l());const r=(0,c.nY)(e);r&&(r.init=f[e])}function m(e,t){if(!e)throw new Error(h);var r=p(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.281.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},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}},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})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},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])}},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,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=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(3969),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()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});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});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)}}},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:()=>T,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>A,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,T="jsTime",A="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")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>j});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(3969),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(2646),x=r(3434);const E=new Map;function T(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,x.YM)(i),a=new R.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[x.Jt]||t[r];return E.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>E.get(c))),i}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 S={};var N=r(9417),_=r(5603),O=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function j(e,t={},g,R){let{init:x,info:E,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();E||(x=L.init,E=L.info,j=L.loader_config),(0,N.xN)(e.agentIdentifier,x||{}),(0,_.a)(e.agentIdentifier,j||{}),E.jsAttributes??={},d.bv&&(E.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,E);const H=(0,N.D0)(e.agentIdentifier),M=[E.beacon,E.errorBeacon];P||(H.proxy.assets&&(I(H.proxy.assets),M.push(H.proxy.assets)),H.proxy.beacon&&M.push(H.proxy.beacon),A(),(0,h.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?M:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),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 R=s.ee.get(e),x=R.get("tracer");S[e]=b.g.OFF,R.on(p.G4.REPLAY_RUNNING,(t=>{S[e]=t}));var E="api-",A=E+"ixn-";function N(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}}),I(E,n,!0,o||null===r?"session":void 0)(t,r)}function _(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,R),(0,w.R)(R,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,R),T(R,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(E,e,!0,"api")})),g.addPageAction=I(E,"addPageAction",!0,n.K7.genericEvents),g.recordCustomEvent=I(E,"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,I(E,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(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 N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("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,R),R.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,R),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,R)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,R)},g.interaction=function(e){return(new _).get("object"==typeof e?e:{})};const O=_.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,R),h||(0,a.p)(A+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,R),function(){if(x.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 x.emit("fn-err",[arguments,this,t],r),t}finally{x.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,R),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,R),r?void 0:this}}function P(){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),R.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{O[e]=I(A,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(A,"routeName",void 0,n.K7.softNav):I(E,"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,R),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!S[e]],void 0,n.K7.jserrors,R)},d.RI?(0,u.GG)((()=>P()),!0):P(),g}(e.agentIdentifier,R,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),P=!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:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={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"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.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.281.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.281.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-jmvAlmjCn64ans8tLueqHRlBI/iWekylsDWb94A77CG0ukSriVDvgD3dThx+XjUSBBBMYhFn8B1a18fViyBPEQ==",249:"sha512-ICY/ZrcytM/86t5KFy+9OAWVYmNNJy10EBtxoSUGjQWuZx53p/eLo+L8HfrGjvHuRHRnutqLTGSnvNttffJkaA==",212:"sha512-pQSn+X/RfBOvx/49HvlghaiXMLhhDQXTi13n1N2XMpDquWJgs9U0pbqE3RbAnYC9nsdaTu/RVGvneEPv1fpCxA=="};(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.281.0.PROD"]=self["webpackChunk:NRBA-1.281.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(425);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),T=i(3878),A=i(782),S=i(1863);class N extends b{static featureName=A.T;constructor(e,t=!0){super(e,A.T,t),p.RI&&((0,E.u)((()=>(0,x.p)("docHidden",[(0,S.t)()],void 0,A.T,this.ee)),!0),(0,T.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,S.t)()],void 0,A.T,this.ee))),this.importAggregator(e))}}var _=i(3969);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),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{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return 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,T.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,T.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,T.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-",X=Y+"body-",J=["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,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),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;class he 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};pe(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,T.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,T.jT)(!1))}function o(e){this.params={method:e[0]},pe(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,T.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),pe(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){var i=r.getResponseHeader("X-NewRelic-App-Data");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 pe(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 ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Ee,Lc:Te,uP:Ae,Rz:Se}=be;class Ne extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Ae,(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(Se+Re,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Se+xe,(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)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var _e=i(2614);class Oe 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(_e.H3,"_").concat(_e.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===_e.g.FULL||e.sessionReplayMode===_e.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!==_e.g.FULL&&this.featAggregate.initializeRecording(_e.g.FULL,!0):(this.#i=_e.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==_e.g.FULL&&(this.recorder.parent.mode=_e.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,T.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,T.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 je=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[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,ke,"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,T.jT)(!1)),e.removeEventListener("error",f,(0,T.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,T.jT)(!1)),e.removeEventListener("error",f,(0,T.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,T.jT)(!1)),e.addEventListener("error",f,(0,T.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function Me(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[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 De={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(De[t.debugId]++)return t;De[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(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 We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[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:qe,d3:Ze,Kp:Ye,$p:Xe,wW:$e,e5:Je,tH:Qe,uP:et,rw:tt,Lc:rt}=je;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=Me(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,S.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,S.t)();this[Je]=~~this[Je]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,S.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,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([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([Qe+Ze,Qe+"-done",Qe+Xe+Ze,Qe+Xe+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,$e,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,Qe+Ze),v(d,Qe+"-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,T.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,T.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,T.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.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&&(it.Zp.forEach((e=>(0,T.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>{const t=(0,v.s)((e=>{(0,x.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,T.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 at=i(993),st=i(3785);class ct extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.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:[he,w,N,Ne,Oe,O,M,ot,ct,Pe,nt],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>Music Theory and Composition 2 Course - Berklee Online</title> <meta name="description" content="Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves." /> <meta name="keywords" content="Music Theory and Composition 2 Course, 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="Courses" /> <meta class="swiftype" name="result_title" data-type="string" content="Music Theory and Composition 2" /> <meta class="swiftype" name="result_type" data-type="string" content="12-Week Course" /> <meta class="swiftype" name="result_description" data-type="string" content="Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves." /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="Gyb6dXOioqSuCE59730Yf5Ve+85KitOWzneyA2CYlSX1v9/RLmuD5RN5fJL4Z9umc21cA6Ak6HKGkw7HE/okHw==" /> <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/courses/music-theory-and-composition-2' rel='canonical'> <link rel="stylesheet" media="all" href="https://assets.online.berklee.edu/catalog/assets/3432d822b20aa7a010c9ed9d799668f6a4bc3c3d/packs/css/application-2c978687.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" /> <meta content='summary' name='twitter:card'> <meta content='@BerkleeOnline' name='twitter:site'> <meta content='https://online.berklee.edu/courses/music-theory-and-composition-2' property='og:url'> <meta content='product' property='og:type'> <meta content='Music Theory and Composition 2' property='og:title'> <meta content='Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves.' property='og:description'> <meta content='20508699923' property='fb:profile_id'> <meta content='693976273963843' property='fb:app_id'> <meta content='https://assets.online.berklee.edu/open-graph/berklee-online-general-music-studies.jpg' property='og:image'> <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='undergraduate-course product courses 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:block;"> <div class="container-fluid"> <div class="col-12 text-center"> <a href="/music-degrees" id="cta-special-notice-live" target="_blank"> <h5> Degree applicants: There's still time to apply for April semester! <span class="btn-live-qa-cta">Find Your Program</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 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/manage-your-stress-with-music" style="padding: 0; margin: 0;"> <img src="//assets.online.berklee.edu/catalog-site-heroes/live-workshops/lw-card--manage-your-stress-with-music-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> <p>Masterclass: <em>Manage Your Stress with Music</em> introduces you to strategies that will help you soothe, motivate, and modulate your feelings, such as creating a mood manager playlist and composing a personal jingle. <br><strong>Wed., March 5, only $99</strong></p> <a class="drop-info-cta" href="https://online.berklee.edu/masterclasses/manage-your-stress-with-music">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 Feb 10 for Apr 7, 2025 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: Save up $300!</h3> <h4 style="border: none;">Enroll in an eligible course or certificate by Feb 24, 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: Save up $300!</h3> <h4 style="border: none;">Enroll in an eligible course or certificate by Feb 24, 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-program-internships" href="/degrees/about/undergraduate-degree-program-internships"> Program Internships</a></li><li><a class="undergraduate-degree-academic-calendar" href="/degrees/about/undergraduate-degree-academic-calendar"> Academic Calendar</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-completion" href="/degrees/about/undergraduate-degree-completion">Degree Completion</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 Feb 10 for Apr 7, 2025 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/courses/music-theory-and-composition-2">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> </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'> <div class='sticky-parent' property='data-sticky_parent' style='padding-bottom: 40px; position: relative;'> <section class='content-head no-gutter' data-scroll-index='0' id='overview'> <div class='container-fluid'> <div class='row justify-content-between'> <div class='col-12 col-lg-9' property='data-sticky_column'> <div class='enrollment-status-warning' id='same_course_warning'></div> <div class='course-head'> <h2> <a class='txt-lg a-black' href='/courses?level=undergraduate' itemprop='url'> Online Undergraduate-Level Course </a> </h2> <h1>Music Theory and Composition 2</h1> <div class='bcb-course'> </div> <div class='course-subhead'> <img alt='author.full_name' class='img-circle' src='//online.berklee.edu/user/avatar?user_id=38880381'> <img alt='author.full_name' class='img-circle' src='//online.berklee.edu/user/avatar?user_id=4191823'> <div class='course-subhead-text'> <p class='txt-sm'> Authored <span> by <a class="a-body-link" href="#instructors">Suzanne Clark</a>, <a class="a-body-link" href="#instructors">Kari Juusela</a> </span> </p> <div class='separator'>|</div> <p class='txt-sm'> Course Code: <span> OCOMP-111 </span> </p> </div> </div> </div> <div class='row'> <div class='col-12 col-lg-4 key-points-wrap order-1 order-lg-2'> <div class='key-points'> <div class='term-message'> <i> <div class='fal fa-calendar-alt'></div> </i> <div class='term-message-text'> <h4><!--Next semester <br>starts April 7--> Next semester<br/>starts April 7</h4> </div> </div> <div class='key-course-duration'> <i class='fa-light fa-hourglass'></i> <h4>12 Weeks</h4> </div> <div class='key-course-level'> <div style='cursor:pointer;' data-courseid-order-label-level='157 2 Level 2 Level 2' class='course-level-icon offering-supporting-detail skill-level-2' data-bs-toggle='popover' data-bs-trigger='focus' tabindex='0' data-bs-content='200 level course. Intermediate course material, some prerequisites required.' data-bs-placement='left' data-bs-title='Level 2 Course' rel='nofollow'><img src='/assets/skill-level-2.svg' alt='Level 2' /></div><div class='key-course-text'><h4>Level 2</h4></div> </div> <div class='credit-tuition'> <h4>3-Credit Tuition</h4> <span class='full-price'> $1,545 </span> <div class='user-price' style='display: none'> <span class='name'></span> <span class='price'></span> </div> </div> <div class='non-credit-tuition'> <h4>Non-Credit Tuition</h4> <span class='full-price'> $1,290 </span> <div class='user-price' style='display: none'> <span class='name'></span> <span class='price'></span> </div> </div> </div> </div> <div class='col-12 col-lg-8 order-2 order-lg-1'> <div class='overview'> <p>In this course, you will build upon the essential elements of music theory and composition learned in <a href="https://online.berklee.edu/courses/music-theory-and-composition-1" target="_blank"><em>Music Theory and Composition 1</em></a>, allowing you to further your own musical language. You will expand your knowledge of major and minor key harmony and melody, in addition to scales, chords and drum grooves. This advancement in music theory will support you in all of your musical endeavors, making the application of advanced techniques easier to use within your own compositions. </p> <div class='read-more-container'><a class='read-more' href='#'>Read More</a><div class='readmore-hidden'> <p>After completing a strong review of <em>Music Theory and Composition 1</em> topics, including major key, minor key, blues, an intro to modal interchange, rhythmic grooves. and traditional harmony concepts, the course will move into non-diatonic structures such as secondary dominants, a wider vocabulary of modal interchange chords, and a thorough look at composite minor in both contemporary and traditional settings. Compound meter will be explored and also applied to bass and drum grooves, along with higher-level rhythmic concepts such as odd meter and African polyrhythms. <em>Music Theory and Composition 2</em> will give you the tools to develop melody writing, presented through contemporary and traditional views and Indian ragas, as well as the importance of song form, harmonic function, and phrasing as compositional techniques.<p>This music composition course will continue blending and exploring both traditional and contemporary harmony in order to give you a historical understanding of current topics.<p>On a weekly basis, you will be asked to engage with your classmates and instructor as you work your way through each lesson. To help you thoroughly experience and understand the material, you will be given activities and exercises to complete for each topic. There will also be weekly compositional assignments, giving you the opportunity to practice writing.<p>By the end of this course, you will be able to:<ul><li>Interpret and notate basic notational concepts of passing tones and upper/lower neighbor tones, melodic tension and release, escape tone, appoggiatura, and suspension</li><li>Identify and write melodic elements such as intervallic variation, interval expansion, interval contraction, permutation, rhythmic variation, augmentation, and diminution</li><li>Identify and use secondary dominants with modifying a major key progression and in different rhythmic positions within a harmonic phrase</li><li>Identify and voice-lead secondary dominants with tensions along with the use of related II chords</li><li>Identify and voice-lead secondary dominants and Neapolitan chord in traditional four-part SATB style</li><li>Construct and use deceptive resolution as applied to primary and secondary dominants and modal interchange chords</li><li>Identify and apply techniques in the minor key in contemporary and classical writing styles which include the use of composite minor, minor key chord scales, and minor key line clichés</li><li>Notate and create rhythms and melodies based on compound and other meters</li></ul> <a class='read-less' href='#'> Read Less</a> </div> </div> </div> <div class='overview-video'> </div> </div> </div> </div> <div class='col-4 col-lg-3 d-none d-lg-block side-nav-container'> <div class='side-nav sticky-item' property='data-sticky_column'> <div class='side-nav-main'> <a class='nav-scroll active' data-scroll-nav='0' href='#overview'>Overview</a> <a class='nav-scroll' data-scroll-nav='1' href='#syllabus'>Syllabus</a> <a class='nav-scroll last' data-scroll-nav='2' href='#requirements'>Requirements</a> <a class='nav-scroll' data-scroll-nav='3' href='#instructors'>Instructors</a> <div class='foxy_enroll_warning' style='display: none;'></div> <div class='foxy_enroll'> <button class='add_to_cart btn-action bo-button bo-button-disabled' id='add_to_cart_btn'> <i class='fa fa-check-square d-lg-none disabled'></i> <div class='enroll_now'> Enroll Now </div> <span> No application required </span> </button> </div> <a class='bo-button-alt' href='#footer-form'>Request Info</a> <div class='side-nav-advisor-block'> <div class='advisor-contact-block'> <p class='guidance'>Need guidance?</p> <a class='tel-main' href='tel:18662375533'>1-866-BERKLEE</a> <a class='tel-intl' href='tel:16177472146'>Int'l: +1-617-747-2146</a> <p class='call-text'><span class="d-sm-none d-contact-sm"><a href="tel:18662375533">Call</a>, <a href="sms:18662375533">Text</a>, </span>or <a href="mailto: advisors@online.berklee.edu">Email us</a></p> </div> </div> </div> </div> </div> </div> </div> </section> <section class='page-section content-syllabus'> <div class='container-fluid'> <div class='row'> <div class='col-12 col-lg-7'> <div class='syllabus content-section' data-scroll-index='1' id='syllabus'> <h2>Syllabus</h2> <p><em>Lesson 1: Introductions and Level 1 Review</em></p><ul><li>Major Key Tonality</li><li>Minor Key Tonality</li><li>Modal Interchange and Blues</li><li>Bass and Drums</li></ul><p><em>Lesson 2: Secondary Dominants and Chromatic Alterations</em></p><ul><li>Melodic Chromaticism</li><li>Secondary Dominants</li><li>Harmonic Rhythm</li><li>Melody and Harmony Relationship</li><li>Melody Corner</li></ul><p><em>Lesson 3: Secondary Dominant Continued</em></p><ul><li>Secondary Dominant Chord Scales</li><li>Voice-leading Secondary Dominants with Tensions</li><li>Related II Chords</li><li>Traditional Voice-leading of Secondary Dominants</li><li>Melody Corner</li></ul><p><em>Lesson 4: Deceptive Resolution – Primary and Secondary Dominants</em></p><ul><li>Harmonic Function and Expectation</li><li>Standard Deceptive Resolution of V7</li><li>Deceptive Resolution of Secondary Dominants</li><li>Deceptive Resolution of Secondary Dominants in Classical Music</li><li>Melody Corner</li></ul><p><em>Lesson 5: Minor Key 2</em></p><ul><li>Composite Minor</li><li>Secondary Dominants in Minor Key</li><li>Minor Key Chord Scales</li><li>Minor Key Line Cliches</li><li>Melody Corner</li></ul><p><em>Lesson 6: Minor Key in Classical Music</em></p><ul><li>Composite Minor in a Bach Chorale</li><li>Minor Line Cliches in Classical Music</li><li>Advanced Figured Bass</li><li>Binary and Rounded Binary Form in Classical Music</li><li>Melody Corner</li></ul><p><em>Lesson 7: Modal Interchange Expanded</em></p><ul><li>More Modal Interchange</li><li>Chord Scales for Modal Interchange Chords</li><li>Standard Deceptive Resolution of V7 to MI Chords</li><li>Neapolitan Chord</li><li>Melody Corner</li></ul><p><em>Lesson 8: Compound and Other Meter</em></p><ul><li>6/8 and 9/8</li><li>12/8 and Triplets in 4/4</li><li>Odd Meters</li><li>Meter Changes</li><li>Melody Corner</li></ul><p><em>Lesson 9: Bass and Drum Grooves in Compound and Other Meters</em></p><ul><li>Compound Bass and Drum Grooves</li><li>Odd Metered Bass and Drum Grooves</li><li>Meter Changes Applied to Bass and Drum Grooves</li><li>African Polyrhythms and Indian Tablas</li><li>Melody Corner</li></ul><p><em>Lesson 10: Modulation</em></p><ul><li>Modulation</li><li>Relative Major and Minor Modulation</li><li>Pivot Modulation using Secondary Dominants</li><li>Pivot Modulation and Model Interchange</li><li>Melody Corner</li></ul><p><em>Lesson 11: Musical Composition Applied</em></p><ul><li>Musical Directions</li><li>Hybrid Chords</li><li>Guide Tone Lines</li><li>Song and Short Instrumental Form Review and Further Exploration</li><li>Melody Corner</li></ul><p><em>Lesson 12: Blues</em></p><ul><li>Minor Blues</li><li>Minor Blues Progressions</li><li>Minor Blues Chord Scales</li><li>Dominant Pedal</li><li>Melody Corner</li></ul> </div> </div> </div> </div> </section> <section class='page-section content-requirements'> <div class='container-fluid'> <div class='row'> <div class='col-12 col-lg-7'> <div class='requirements content-section' data-scroll-index='2' id='requirements'> <h2>Requirements</h2> <h4>Prerequisites and Course-Specific Requirements </h4><div class="truncate-paragraph imported-rtf"><p><strong>Prerequisite Courses, Knowledge, and/or Skills</strong><br /> Completion of <em><a rel="noopener noreferrer" target="_blank" href="https://online.berklee.edu/courses/music-theory-and-composition-1">Music Theory and Composition 1</a></em> or equivalent knowledge and experience is required. In addition:</p> <ul> <li>Ability to read notated music </li> <li>Ability to record MIDI in a Digital Audio Workstation (DAW)</li> <li>Ability to sync your compositions with various short video clips and export as MP4 file</li> </ul> <p><strong>Textbook(s)</strong></p> <ul> <li>No textbooks required</li> </ul> <p><strong>Software</strong></p> <ul> <li><a rel="noopener noreferrer" target="_blank" href="https://online.berklee.edu/help/en_US/daw/2077278-comparison-of-daws">Digital Audio Workstation (DAW)</a> software, such as GarageBand (Mac), Mixcraft (PC), <a rel="noopener noreferrer" target="_blank" href="https://www.bandlab.com/products/cakewalk">Cakewalk by BandLab</a> (PC), etc.</li> </ul> <p><strong>Hardware</strong></p> <ul> <li>Printer</li> <li>Scanner or digital camera to convert handwritten notation into PDF format</li> <li>Recommended: <a rel="noopener noreferrer" target="_blank" href="https://online.berklee.edu/help/midi/1964593-overview-of-midi-controllers">MIDI keyboard controller</a></li> <li>Recommended: One (or both) of the following studio monitoring options:<ul> <li>Studio monitors (pair), such as JBL 305Ps or better, as well as an <a rel="noopener noreferrer" target="_blank" href="https://online.berklee.edu/help/en_US/audio-interface/2004528-overview-of-audio-interfaces">audio interface</a> and necessary cables</li> <li>Over-ear studio headphones, such as Sennheiser HD 600, Sony MDR-7506, Philips SHP9500, Audio-Technica ATH-M50x, etc.</li></ul></li> </ul> <p><strong>Other</strong></p> <ul> <li>Manuscript paper with 8 or 9 staves per page (printable template provided in the course)</li> </ul> <p><strong>Student Deals</strong><br /> After enrolling, be sure to check out our <a rel="noopener noreferrer" target="_blank" href="https://online.berklee.edu/deals">Student Deals</a> page for various offers on software, hardware, and more. Please contact <a rel="noopener noreferrer" target="_blank" href="mailto:support@online.berklee.edu">support@online.berklee.edu</a> with any questions.</p></div> <hr> <h4>General Course Requirements</h4> <div class='readmore-hidden'> <p> <strong> Below are the minimum requirements to access the course environment and participate in Live Classes. </strong> Please make sure to also check the Prerequisites and Course-Specific Requirements section above, and ensure your computer meets or exceeds the minimum system requirements for all software needed for your course. </p> <p> <strong>Mac Users</strong> </p> <ul> <li> <a href="https://support.apple.com/en-us/111980" rel="noopener noreferrer" target="_blank">macOS Big Sur 11.0 or later</a> </li> </ul> <p> <strong>PC Users</strong> </p> <ul> <li> <a href="https://support.microsoft.com/en-us/windows/windows-10-system-requirements-6d4e9a79-66bf-7950-467c-795cf0386715" rel="noopener noreferrer" target="_blank">Windows 10 or later</a> </li> </ul> <p> <strong>All Users</strong> </p> <ul> <li> Latest version of <a href="https://www.google.com/chrome/" target="_blank">Google Chrome</a> </li> <li>Zoom meeting software</li> <li>Webcam</li> <li>Speakers or headphones</li> <li>External or internal microphone</li> <li>Broadband Internet connection</li> </ul> </div> </div> </div> </div> </div> </section> <section class='page-section content-faculty'> <div class='container-fluid'> <div class='row'> <div class='col-12 col-lg-7'> <div class='faculty content-section' data-scroll-index='3' id='instructors'> <h2>Instructors</h2> <div class='row'> <div class='col-12 col-sm-2 instructor-img'> <img alt='Suzanne Clark' class='rounded-circle' src='//online.berklee.edu/user/avatar?user_id=38880381'> </div> <div class='col-12 col-sm-10'> <div class='txt-lg fac-name'><a class="a-body-link" href="/faculty/suzanne-clark">Suzanne Clark</a></div> <p class='txt-sm'>Author</p> <p>Suzanne M. Clark is an Associate Professor in the Harmony Department at Berklee College of Music and also teaches in the Songwriting Department and courses for Performance Health. </p> <div class='read-more-container'><a class='read-more' href='#'>Read More</a><div class='readmore-hidden'> <p>In 2010, Suzanne was the recipient of the Don Wilkins Curriculum Award, having authored five courses, including <em>The Music of the Beatles, The Solo Careers of the Beatles, The Creative Flame, Integral Tai Chi, and Playing in the Key of Chi: Qigong for Musicians.</em> She also teaches the <em>Music of John Lennon</em>. In 2014, Suzanne was featured in <em>USA Today</em> and on New England Cable News for the 50th Anniversary of the Beatles' appearance on the Ed Sullivan Show. She also guest lectured on John Lennon for a Harvard University program.<p>Suzanne is a bassist, and throughout the years has played and recorded in a variety of genres including jazz, musical theater, world and contemporary music. She has performed and given clinics in New England, Pennsylvania, New York, and the Caribbean and Sweden. She was a guest lecturer at Northwood University's Creativity Conference where she focused on musical creativity. Currently, Suzanne also teaches an online graduate course, <em>Seminar in Creativity</em>, which focuses on creative blocks of creative artists and is based on research and studies related to her MA in Critical and Creative Thinking. <a class='read-less' href='#'> Read Less</a> </div> </div> </div> </div> <hr> <div class='row'> <div class='col-12 col-sm-2 instructor-img'> <img alt='Kari Juusela' class='rounded-circle' src='//online.berklee.edu/user/avatar?user_id=4191823'> </div> <div class='col-12 col-sm-10'> <div class='txt-lg fac-name'><a class="a-body-link" href="/faculty/kari-juusela">Kari Juusela</a></div> <p class='txt-sm'>Author</p> <p>Kari Henrik Juusela is a Finnish-American composer, performer, and educator who presently serves as dean of the Professional Writing and Music Technology Division at Berklee College of Music in Boston, Massachusetts. In addition to writing music in styles ranging from pop to contemporary classical, he enjoys playing and recording the cello, bass, guitar, piano, table, and the Finnish Kantele. </p> <div class='read-more-container'><a class='read-more' href='#'>Read More</a><div class='readmore-hidden'> <p>His compositions have won numerous awards from such organizations as the Vienna State Opera, the International Trumpet Guild, the London Chamber Music Society, the Composer’s Guild, GASTA, and ASCAP. He has also won the International Red Stick Composition Competition, the American Songwriting Awards Contest, the San Francisco Art Song Competition, and the Aliénor Harpsichord Composition Contest. His works have been performed at many important venues including Carnegie and Tchaikovsky Hall by internationally acclaimed ensembles and performers, as well as by numerous rock, pop, and jazz groups. He is the author of over 20 college-level courses and is the author of the Berklee Contemporary Dictionary of Music.<p>Dr. Juusela holds degrees from the University of Maryland, Georgia State University, and Berklee College of Music. His music is published by ISG Publications, MuusJuus Music, and Yelton Rhodes Music, and is recorded on ERM, Beauport Classical, Lakeside Records, Capstone Records, and MuusJuus Music. <a class='read-less' href='#'> Read Less</a> </div> </div> </div> </div> <hr> <div class='row'> <div class='col-12 col-sm-2 instructor-img'> <img alt='Utar Artun' class='rounded-circle' src='//online.berklee.edu/user/avatar?user_id=67206887'> </div> <div class='col-12 col-sm-10'> <div class='txt-lg fac-name'><a class="a-body-link" href="/faculty/utar-artun">Utar Artun</a></div> <p class='txt-sm'>Instructor</p> <p>Utar Artun, a native of Ankara, and a Turkish-American composer, stands as a remarkable figure in the world of music. His journey began with a degree in Percussion from Hacettepe Conservatory, followed by an exceptional academic career in Piano and Composition at Berklee College of Music and New England Conservatory, where he graduated summa cum laude and Academic Honors amassing numerous international awards and accolades. A versatile artist, Artun has shared stages and studios with musical luminaries such as Bobby McFerrin, Dave Weckl, Eddie Gomez, Grace Kelly, Antonio Sanchez, and many others, leaving an indelible mark on the international music landscape. </p> <div class='read-more-container'><a class='read-more' href='#'>Read More</a><div class='readmore-hidden'> <p>Artun's musical odyssey encompasses a wide range of experiences, from symphonic orchestras and prestigious jazz festivals to international studio recordings and Hollywood film projects. His compositions and arrangements have earned him esteemed recognition, including performances in world-renowned festivals, contests, and competitions. Utar Artun's international presence is felt through his piano performances at prestigious festivals and venues around the world, from Los Angeles to China. Currently, Artun imparts his wisdom as a faculty member at Berklee College of Music and the New England Conservatory Prep School, nurturing the talents of the next generation. With a catalog of over 160 compositions 300 arrangements for symphony orchestras and large ensembles, and a myriad of collaborations, Utar Artun continues to elevate the global music scene with his extraordinary talent and unwavering dedication, cementing his place as a musical luminary. <a class='read-less' href='#'> Read Less</a> </div> </div> </div> </div> <hr> <div class='row'> <div class='col-12 col-sm-2 instructor-img'> <img alt='Steven Kirby' class='rounded-circle' src='//online.berklee.edu/user/avatar?user_id=280097'> </div> <div class='col-12 col-sm-10'> <div class='txt-lg fac-name'><a class="a-body-link" href="/faculty/steven-kirby">Steven Kirby</a></div> <p class='txt-sm'>Instructor</p> <p>Guitarist, composer, educator Steven Kirby <em>(“a guitarist of rippling technique and a poetic mind”- Downbeat)</em> has built a reputation for performing exciting, melodic, lyrical and expressive jazz as well as being active as a performer in other contemporary styles. He has appeared on over 20 released recordings including three as a leader <em>“Point Of Balance”</em> and <em>“North Light”</em> (both on <em>Challenge Records</em>)—and <em>“Illuminations”</em> (on <em>WCS</em> records). <em>“Illuminations”</em> received Downbeat Magazine’s “Editors Pick” award. He has performed and/or recorded with many of today’ most respected contemporary musicians including Chris Potter, Mike Manieri (Steps Ahead), Joe Lovano, Steve Hunt, Allan Holdsworth, Matt Malley (of Counting Crows) and others. He has toured in the U.S., Canada, Caribbean, Europe, China and Africa. </p> <div class='read-more-container'><a class='read-more' href='#'>Read More</a><div class='readmore-hidden'> <p>Kirby’s music has been played on over 100 radio stations in the US and internationally including features on NPR’s “Here and Now”, “Jazz with Bob Parlocha” and “Eric in the Evening”.<p>His jazz compositions have won awards in the International Songwriting Competition, the Billboard Song Contest and Downbeat. He is a graduate of Berklee College of Music and has a Masters degree in Jazz Composition and Arranging from University of Massachusetts (Amherst). He is currently on the music faculty at 3 institutions of higher education: Berklee College of Music, Brandeis University, Wellesley College. <a class='read-less' href='#'> Read Less</a> </div> </div> </div> </div> <hr> <div class='row'> <div class='col-12 col-sm-2 instructor-img'> <img alt='Joseph Mulholland' class='rounded-circle' src='//online.berklee.edu/user/avatar?user_id=2239800'> </div> <div class='col-12 col-sm-10'> <div class='txt-lg fac-name'><a class="a-body-link" href="/faculty/joseph-mulholland">Joseph Mulholland</a></div> <p class='txt-sm'>Instructor</p> <p>Joe Mulholland is a professor in the Harmony department at Berklee College of Music. He teaches all the core Harmony classes, as well as the electives Harmony of Brazilian Song, Advanced Harmonic Concepts, Advanced Modal Harmony, and Reharmonization Techniques. He created and teaches the Jazz Composition course and the Music Foundations course for Berklee Online, and gives private Skype lessons in jazz songwriting to students around the world. </p> <div class='read-more-container'><a class='read-more' href='#'>Read More</a><div class='readmore-hidden'> <p>In his capacity as chair of the Harmony department (2005-2015) at Berklee, Joe extensively revised the Harmony 2 and 3 workbooks and wrote the Music Application and Theory workbook for first-year students, as well as editing and contributing substantially to the Study Supplement for that course. With his colleague Tom Hojnacki, Joe wrote The Berklee Book of Jazz Harmony (Berklee Press), the new Harmony 2 workbook, and the Harmony 2 Study Supplement.<p>An accomplished pianist, recording artist, composer, and teacher, Joe has released five albums of original music and has composed electronic scores for Boston-area dance companies, including a Tango Suite commissioned by the Northeast Youth Ballet that received performances in Boston and New Jersey. Joe also performs as a vocal accompanist. In his role as music director for the Windhover Center for the Performing Arts, he composed and recorded sound design and songs for original productions of Peer Gynt and Dogtown Common. He also wrote 11 songs and three dance numbers for the original musical The Battle for Pigeon Cove Harbor, which received a three-week run in theaters on the North Shore of Boston.<p>Before coming to Berklee, Joe taught piano and ensemble at Brown University and Boston-area music schools, as well as serving as music director for Didi Stewart and Friends, an award-winning ensemble devoted to presenting full-length tributes to composers and performers in the American Songbook and classic R&B styles. <a class='read-less' href='#'> Read Less</a> </div> </div> </div> </div> </div> </div> </div> </div> </section> <section class='page-section content-relations'> <div class='container-fluid'> <div class='row'> <div class='col-12 col-lg-7'> <div class='content-section'> <h2>What's Next?</h2> <p class='overview'>When taken for credit, Music Theory and Composition 2 can be applied towards the completion of these related programs:</p> <div class='associated-music-theory-and-composition-2'> <h4>Related Certificate Programs</h4> <ul class='related-certificates bo-list-lined'> <li> <a href='/certificates/music-theory-and-composition-professional'> Music Theory and Composition Professional Certificate </a> </li> <li> <a href='/certificates/general-music-studies-professional'> General Music Studies Professional Certificate </a> </li> <li> <a href='/certificates/general-music-studies-advanced-professional'> General Music Studies Advanced Professional Certificate </a> </li> </ul> </div> <h4>Related Degree Majors</h4> <ul class='related-degrees bo-list-lined'> <li> <a href='/music-degrees/undergraduate/music-composition-for-film-tv-and-games'> Bachelor's Degree in Music Composition for Film, TV, and Games </a> </li> <li> <a href='/music-degrees/undergraduate/electronic-music-production-and-sound-design'> Bachelor's Degree in Electronic Music Production and Sound Design </a> </li> <li> <a href='/music-degrees/undergraduate/guitar-performance'> Bachelor's Degree in Guitar Performance </a> </li> <li> <a href='/music-degrees/undergraduate/interdisciplinary-music-studies-create-your-own-major'> Bachelor's Degree in Interdisciplinary Music Studies (Create Your Own Major) </a> </li> <li> <a href='/music-degrees/undergraduate/music-business'> Bachelor's Degree in Music Business </a> </li> <li> <a href='/music-degrees/undergraduate/songwriting-and-producing-music'> Bachelor's Degree in Songwriting and Producing Music </a> </li> <li> <a href='/music-degrees/undergraduate/songwriting'> Bachelor's Degree in Songwriting </a> </li> <li> <a href='/music-degrees/undergraduate/music-production'> Bachelor's Degree in Music Production </a> </li> <li> <a href='/music-degrees/undergraduate/undeclared-option'> (Pre-Degree) Undeclared Option </a> </li> <li> <a href='/music-degrees/undergraduate/music-composition'> Bachelor's Degree in Music Composition </a> </li> <li> <a href='/music-degrees/undergraduate/piano-performance'> Bachelor's Degree in Piano Performance </a> </li> <li> <a href='/music-degrees/undergraduate/voice-performance'> Bachelor's Degree in Voice Performance </a> </li> </ul> </div> </div> </div> </div> </section> <section class='page-section content-advisors'> <div class='container-fluid'> <div class='row'> <div class='col-12 col-lg-7'> <div class='advisors content-section'> <h2>Questions?</h2> <p class='txt-lg'>Contact our Academic Advisors by phone at 1-866-BERKLEE (U.S.), 1-617-747-2146 (INT'L), or by email at <a href="mailto:advisors@online.berklee.edu">advisors@online.berklee.edu</a>.</p> </div> </div> </div> </div> </section> </div> <section class='course-nav-phone d-lg-none'> <div class='container-cta'> <a class='req-info' href='#footer-form'> <i> <div class='far fa-info-circle'></div> </i> Get Info </a> <a class='call-text' href='tel:18662375533'> <i> <div class='far fa-phone'></div> </i> Call </a> <a class='call-text' href='sms:18662375533'> <i> <div class='far fa-comments'></div> </i> Text </a> <div class='foxy_enroll'> <button class='add_to_cart btn-action bo-button'> <i class='far fa-check-square d-lg-none disabled'></i> Enroll Now <span> No application required </span> </button> </div> </div> </section> <script type="application/ld+json">{ "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "item": { "@id": "https://online.berklee.edu/courses", "name": "Courses" } },{ "@type": "ListItem", "position": 2, "item": { "@id": "https://online.berklee.edu/courses/music-theory-and-composition-2", "name": "Music Theory and Composition 2", "image": "https://assets.online.berklee.edu/berklee-online-logo-red-gray.png" } }] } </script><script type="application/ld+json">{ "@context": "http://schema.org", "@type": "Product", "name": "Music Theory and Composition 2", "sku": "3-Credit Course (OCOMP-111)", "image": [ "https://assets.online.berklee.edu/berklee-online-logo-red-gray.png" ], "description": "Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves.", "brand": { "@type": "Thing", "name": "Course" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "1545", "itemCondition": "http://schema.org/NewCondition", "availability": "http://schema.org/InStock", "seller": { "@type": "Organization", "name": "Berklee Online", "address": { "@type": "PostalAddress", "addressLocality": "Boston, MA", "postalCode": "02115", "streetAddress": "160 Massachusetts Avenue" } } } } </script><script type="application/ld+json">{ "@context": "http://schema.org", "@type": "Product", "name": "Music Theory and Composition 2", "sku": "Non-Credit Course (OCOMP-111)", "image": [ "https://assets.online.berklee.edu/berklee-online-logo-red-gray.png" ], "description": "Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves.", "brand": { "@type": "Thing", "name": "Course" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "1290", "itemCondition": "http://schema.org/NewCondition", "availability": "http://schema.org/InStock", "seller": { "@type": "Organization", "name": "Berklee Online", "address": { "@type": "PostalAddress", "addressLocality": "Boston, MA", "postalCode": "02115", "streetAddress": "160 Massachusetts Avenue" } } } } </script><script type="application/ld+json">{ "@context": "http://schema.org", "@type": "Course", "name": "Music Theory and Composition 2", "courseCode": "OCOMP-111", "description": "Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves.", "provider": { "@type": "Organization", "name": "Berklee Online", "address": { "@type": "PostalAddress", "addressLocality": "Boston, MA", "postalCode": "02115", "streetAddress": "160 Massachusetts Avenue" }, "sameAs": "https://online.berklee.edu/courses/music-theory-and-composition-2" }, "educationalAlignment": [ { "@type": "AlignmentObject", "alignmentType": "educationalSubject", "educationalFramework": "3-Credit Course", "targetName": "Music Theory and Composition 2", "targetUrl": "https://online.berklee.edu/courses/music-theory-and-composition-2" } ] } </script><script type="application/ld+json">{ "@context": "http://schema.org", "@type": "Course", "name": "Music Theory and Composition 2", "courseCode": "OCOMP-111", "description": "Further your own musical language by expanding your knowledge of major and minor key harmony and melody, in addition to scales, chords, and drum grooves.", "provider": { "@type": "Organization", "name": "Berklee Online", "address": { "@type": "PostalAddress", "addressLocality": "Boston, MA", "postalCode": "02115", "streetAddress": "160 Massachusetts Avenue" }, "sameAs": "https://online.berklee.edu/courses/music-theory-and-composition-2" }, "educationalAlignment": [ { "@type": "AlignmentObject", "alignmentType": "educationalSubject", "educationalFramework": "Non-Credit Course", "targetName": "Music Theory and Composition 2", "targetUrl": "https://online.berklee.edu/courses/music-theory-and-composition-2" } ] } </script><script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-2828821-86', 'auto'); ga('set','dimension1','OCOMP-111'); ga('set','dimension2','course'); ga('set','dimension3','1545'); ga('set','dimension4', 'BOL'); ga('require', 'ec'); ga('ec:addProduct', { 'id': "OCOMP-111", 'name': "Music Theory and Composition 2", 'category': "Course" }); ga('ec:setAction', 'detail'); ga('send', 'pageview'); function ga_add_to_cart() { ga('ec:addProduct', { 'id': "OCOMP-111", 'name': "Music Theory and Composition 2", 'category': "Course", 'price': 1545, 'variant': "Currently Enrolling In" }); ga('ec:setAction', 'add'); ga('send', 'event', 'UX', 'click', 'add to cart'); } window.course_item_id = 49051806; window.course_code = "OCOMP-111" </script> </div> <div class='block-foreground'> <section> <div class='container-fluid'> <div class='row'> <div class='col-12 pricing bo-banner-footer'> <a class="a-black" href="/early-enrollment"><h3> Save up to $300! Enroll by Febrary 24, and save when you enroll in an eligible course or certificate. <i> <div class='far fa-arrow-circle-right'></div> </i> </h3> </a> </div> </div> </div> </section> </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/courses/music-theory-and-composition-2'>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=80249140a3f65e792b8f81936f3fa8587ca2bfd5" 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=80249140a3f65e792b8f81936f3fa8587ca2bfd5" 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=80249140a3f65e792b8f81936f3fa8587ca2bfd5"></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=80249140a3f65e792b8f81936f3fa8587ca2bfd5"></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="779-ab2b0b8d0487bb7b08a41a3b31d9128f" 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="1739838157" 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 class='appt-scheduler d-none d-lg-block' id='appt_scheduler'> <a href='#' id='time_trade_current' onclick='schedule_appt_toggle();' rel='nofollow' style='cursor:pointer;'> <i class='far fa-calendar-alt'></i> <span id='standard-message'> Schedule a Consultation with an Advisor </span> </a> </div> <!-- appt scheduler by Acuity --> <section class='appt-scheduler-section' id='utility-action'> <div class='container'> <div class='row'> <div class='col text-center' style='position:relative;'> <div class='utility-action-close'> <a id='scheduler_iframe_close' onclick='schedule_appt_toggle();'> Close × </a> </div> <div class='appt-scheduler-wrapper' id='appt_scheduler_wrapper'> <iframe frameBorder='0' height='800' src='https://app.acuityscheduling.com/schedule.php?owner=11423824&appointmentType=331977' width='100%'></iframe> </div> </div> </div> </div> </section> </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/3432d822b20aa7a010c9ed9d799668f6a4bc3c3d/packs/js/application-cf31a89132da9c08e41c.js"></script> <script crossorigin='anonymous' src='https://kit.fontawesome.com/08ce533d2a.js'></script> <script src="https://online.berklee.edu/foxy/checkout.js"></script> <script src="https://cdn.foxycart.com/checkout.online.berklee.edu/loader.js" async="async" defer="defer"></script> </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>