, but this code // executes before the first paint, when

Âé¶¹Çø

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); Music Education (BME) | Âé¶¹Çø

Âé¶¹Çø

Skip to main content

Music Education (BME)

Undergraduate Program On Campus

What You'll Learn

Ready to turn your passion for music into a powerful teaching career? Calvin’s music education BME program equips you to lead and inspire in PK–12 classrooms. You’ll dive deep into music theory, technology, history, and education—while sharpening your performance skills through private lessons, ensemble experiences, and a recital. Whether you’re into strings, brass, percussion, voice, or piano, you’ll find your place and grow as both a musician and educator.

This isn’t just about mastering music—it’s about learning how to teach it with purpose. You’ll gain hands-on experience through guided teaching and a full semester of student teaching. Along the way, you’ll explore how Christian faith shapes your approach to education and leadership. From conducting and curriculum design to inclusive teaching and classroom management, you’ll graduate ready to build and lead vibrant music programs that make a lasting impact.

This program is part of the School of Education's Pre-K to 12th grade major program. For full details on this program, see the course list below and visit the Education program page.

Education (Pre-K to 12th Grade) Major

  • Loading...