ShellLayout
File: Rhapsodist/Core/Includes/ShellLayout.js · Namespace: Shell
Overview
ShellLayout declares the entire shell component tree (header, footer, preset browser, Settings window, keyboard, and everything else built-in) and hands it to LayoutBuilder to build.
Usage
ShellLayout has no callable API for other scripts, it declares the shell component tree once, when Core.js includes it, then hands it to LayoutBuilder to build.
UI and processor relationships
Two invisible knobs declared here, knbPatch and knbArticulation, are linked via processorId/parameterId to ConfigurationHandler’s own Patch/Articulation knobs, mirroring the same value both ways.
ConfigurationHandler is what actually applies a patch/articulation change, this pair is the UI-facing surface for it, and every other subsystem that needs to react (keyboard key colours, component visibility, articulation list, envelope UI) listens to the shell’s copy independently via its own broadcaster. See Architecture: Patch and Articulation Changes.
State and persistence
Several shell/session-state components are excluded from the preset (saveInPreset: false): the preset browser buttons, btnSettings/btnSettingsClose, btnRhapsody, vptSettingsMenu, and the Settings-window controls (cmbStreamingMode, cmbMaxVoices, cmbZoom, knbGlobalBpm, btnLazyLoad, btnTooltips).