, 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); })(); Forrest Wakeman | 黄大仙高手论坛

黄大仙高手论坛

Skip to main content

Dr. Forrest Wakeman

Assistant Professor (composition, piano, theory)

Biography

Forrest Wakeman is a performer, composer, producer, worship leader, and keyboard player based in the West Michigan area. He has played for over 20 Broadway national tours (including Wicked, Les Miserables, Grease, Joseph and the Amazing Technicolor Dreamcoat, and Book of Mormon) and for the Grand Rapids, West Michigan, Battle Creek, and Holland Symphony orchestras. He is also an active recitalist and adjudicator.

He holds a Doctor of Musical Arts degree in piano performance from Michigan State University (studying with Deborah Moriarty) and a Master of Music degree from Western Michigan University in composition. His work at Calvin involves teaching private piano lessons, composition lessons, and courses in music theory and music history and appreciation. He also serves as music director at Blythefield Hills Baptist Church, a large multi-site church located just north of Grand Rapids.
 
Most recently, Forrest released his first full-length original worship CD project, Messes to Miracles, which is available on all major music streaming and download services.

Forrest lives in Grand Rapids, MI with his family.

Education

  • B.Mus., Piano Performance, Cornerstone University, 1992
  • M.Mus., Composition, Western Michigan University, 1996
  • D.M.A., Piano Performance, Michigan State University, 2015