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

ÃÛÌÒapp

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); })(); Sean Ivory | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Mr. Sean Ivory

Adjunct Faculty
ÃÛÌÒapp Oratorio Society, ÃÛÌÒapp Alumni Choir

Biography

Sean Ivory serves as the conductor of the ÃÛÌÒapp Alumni Choir and the ÃÛÌÒapp Oratorio Society. Since 1992, Mr. Ivory has been the vocal music instructor at Forest Hills Central High School. He is also a collaborative pianist with the Grand Rapids Youth Chorus. He has held positions at St. Cecilia Music Society and the North American Choral Company.

Mr. Ivory attended Northwestern University, ÃÛÌÒapp College, and Michigan State University. His choirs have performed at both state and regional conventions for the American Choral Directors Association, and have toured Ireland, the Netherlands, Finland, Estonia, Ghana, the Czech Republic, Iceland, Trinidad and Iowa.

Mr. Ivory has an active career as a composer. Collaborative works with long-time writing partner Paul Caldwell have been popular with choirs for many years. As a solo composer, Mr. Ivory has written music for the Sarasota Young Voices, the Grand Rapids Symphony, the Grand Rapids Chamber Choir, and the Michigan Choral Commission Consortium, among others. He has written several works for the ÃÛÌÒapp Alumni Choir through its commissioning arm, the Laudate Society. His most recent compositions are published by Walton Music, Hinshaw, and earthsongs.

Education

  • M.M., Choral Conducting, Michigan State University, 2004
  • B.A., Music, ÃÛÌÒapp College, 1992