jdxi_editor.ui.widgets.digital.builder ====================================== .. py:module:: jdxi_editor.ui.widgets.digital.builder .. autoapi-nested-parse:: Digital Display Builder Builds JDXiDisplayState from program, tone, or parsed SysEx data. Attributes ---------- .. autoapisummary:: jdxi_editor.ui.widgets.digital.builder._SYNTH_TO_PROGRAM_ATTR jdxi_editor.ui.widgets.digital.builder._SYSEX_ADDRESS_TO_SYNTH Classes ------- .. autoapisummary:: jdxi_editor.ui.widgets.digital.builder.DisplayStateBuilder Functions --------- .. autoapisummary:: jdxi_editor.ui.widgets.digital.builder._get_attr Module Contents --------------- .. py:data:: _SYNTH_TO_PROGRAM_ATTR .. py:data:: _SYSEX_ADDRESS_TO_SYNTH .. py:class:: DisplayStateBuilder Builds JDXiDisplayState from program, tone, or parsed SysEx data. .. py:method:: from_program(program: Any, active_synth: str, octave: int = 0) -> jdxi_editor.ui.widgets.digital.state.JDXiDisplayState :staticmethod: Build display state from a program (JDXiProgram or dict) and active synth. :param program: JDXiProgram or dict with id, name, digital_1, digital_2, drums, analog. :param active_synth: "D1" | "D2" | "DR" | "AN". :param octave: Current octave (default 0). :return: JDXiDisplayState. .. py:method:: from_tone(tone_name: str, tone_number: int = 0, active_synth: str = 'D1', program_name: Optional[str] = None, program_id: Optional[str] = None, octave: int = 0) -> jdxi_editor.ui.widgets.digital.state.JDXiDisplayState :staticmethod: Build display state from tone-focused data. :param tone_name: Name of the tone. :param tone_number: Tone/preset number (default 0). :param active_synth: "D1" | "D2" | "DR" | "AN" (default "D1"). :param program_name: Optional program name. :param program_id: Optional program id (e.g. "A01"). :param octave: Current octave (default 0). :return: JDXiDisplayState. .. py:method:: from_sysex(parsed_data: Dict[str, Any], program_name: Optional[str] = None, program_id: Optional[str] = None, octave: int = 0) -> Optional[jdxi_editor.ui.widgets.digital.state.JDXiDisplayState] :staticmethod: Build display state from parsed SysEx message (e.g. from JDXiSysExParser). :param parsed_data: Dict with ADDRESS and TONE_NAME (SysExSection keys). :param program_name: Optional program name when known. :param program_id: Optional program id when known. :param octave: Current octave (default 0). :return: JDXiDisplayState, or None if address is program-common only (no tone). .. py:function:: _get_attr(obj: Any, key: str) -> Optional[str] Get attribute or dict key; return None if missing.