jdxi_editor.ui.editors.helpers.program
MIDI Program Management and Calculation Utilities
This module provides utilities for retrieving and calculating information related to MIDI programs, including the ability to get program details by ID, calculate MSB (Most Significant Byte), LSB (Least Significant Byte), and Program Change (PC) values based on bank and program numbers,
as well as logging useful program and MIDI data.
- Functions:
- get_program_index_by_id(program_id: str) -> Optional[int]:
Retrieves the index of a program by its ID from the PROGRAM_LIST.
- get_program_by_id(program_id: str) -> Optional[Dict[str, str]]:
Retrieves a program by its ID from the PROGRAM_LIST.
- calculate_midi_values(bank: str, program_number: int) -> tuple:
Calculates the MSB, LSB, and PC based on the given bank and program number.
- calculate_index(bank: str, program_number: int) -> int:
Calculates the program index based on the bank and program number.
- log_midi_info(msb: int, lsb: int, pc: int):
Logs the MSB, LSB, and PC values for MIDI operations.
- log_program_info(program_name: str, program_id: Optional[str] = None, program_details: Optional[Dict] = None):
Logs information about the loaded program.
- get_msb_lsb_pc(program_number: int) -> tuple:
Retrieves the MSB, LSB, and PC for a specific program number from the PROGRAM_LIST.
- Constants:
PROGRAM_LIST: A list of dictionaries containing MIDI program information used throughout the functions.
- Logging:
This module uses Python’s logging module to log key operations and errors, such as retrieving programs, calculating MIDI values, and verifying program values within valid ranges.
- Usage Example:
>>> msb, lsb, pc = calculate_midi_values("A", 5) >>> log_midi_info(msb, lsb, pc)
Functions
|
Retrieve the index of a program by its ID. |
|
Retrieve a program by its ID from the database. |
Retrieve a program by its bank letter and number |
|
|
get_program_id_by_name |
|
add_program |
|
load programs |
|
save_programs |
|
Retrieve a program's number (without bank letter) by its name from JDXiProgramList.PROGRAM_LIST |
|
Retrieve a program name by its ID from JDXiProgramList.PROGRAM_LIST |
|
Retrieve a specific parameter value from a program by its ID |
|
Calculate MSB, LSB, and PC based on bank and program number |
|
Calculate the index based on bank and program number |
|
Get MSB, LSB, and PC values for a program at the given index. |
Module Contents
- jdxi_editor.ui.editors.helpers.program.get_program_index_by_id(program_id: str) int | None[source]
Retrieve the index of a program by its ID.
- Parameters:
program_id – str
- Returns:
int
- jdxi_editor.ui.editors.helpers.program.get_program_by_id(program_id: str) jdxi_editor.jdxi.program.program.JDXiProgram | None[source]
Retrieve a program by its ID from the database. Uses SQLite for faster lookups.
- Parameters:
program_id – str
- Returns:
Optional[JDXiProgram]
- jdxi_editor.ui.editors.helpers.program.get_program_by_bank_and_number(bank: str, program_number: int) jdxi_editor.jdxi.program.program.JDXiProgram | None[source]
Retrieve a program by its bank letter and number
- Parameters:
bank – str
program_number – int
- Returns:
Optional[JDXiProgram]
- jdxi_editor.ui.editors.helpers.program.get_program_id_by_name(name: str) str | None[source]
get_program_id_by_name
- Parameters:
name – str
- Returns:
Optional[str]
- jdxi_editor.ui.editors.helpers.program.add_program(program_list: List[jdxi_editor.jdxi.program.program.JDXiProgram], new_program: jdxi_editor.jdxi.program.program.JDXiProgram) bool[source]
add_program
- Parameters:
program_list – List[JDXiProgram]
new_program – JDXiProgram
- Returns:
- jdxi_editor.ui.editors.helpers.program.load_programs() List[Dict[str, str]][source]
load programs
- Returns:
list
- jdxi_editor.ui.editors.helpers.program.save_programs(program_list: List[Dict[str, str]]) None[source]
save_programs
- Parameters:
program_list – List[Dict[str, str]]
- Returns:
None
- jdxi_editor.ui.editors.helpers.program.get_program_number_by_name(program_name: str) int | None[source]
Retrieve a program’s number (without bank letter) by its name from JDXiProgramList.PROGRAM_LIST
- Parameters:
program_name – str
- Returns:
int
- jdxi_editor.ui.editors.helpers.program.get_program_name_by_id(program_id: str) str | None[source]
Retrieve a program name by its ID from JDXiProgramList.PROGRAM_LIST
- Parameters:
program_id – int
- Returns:
str
- jdxi_editor.ui.editors.helpers.program.get_program_parameter_value(parameter: str, program_id: str) str | None[source]
Retrieve a specific parameter value from a program by its ID
- Parameters:
parameter – str
program_id – str
- Returns:
- jdxi_editor.ui.editors.helpers.program.calculate_midi_values(bank: str, program_number: int) tuple[int, int, int][source]
Calculate MSB, LSB, and PC based on bank and program number
- Parameters:
bank – str
program_number – int (1-based, should be 1-64)
- Returns:
tuple[int, int, int] msb lsb pc
- jdxi_editor.ui.editors.helpers.program.calculate_index(bank: str, program_number: int) int[source]
Calculate the index based on bank and program number
- Parameters:
bank – str
program_number
- Returns:
int
- jdxi_editor.ui.editors.helpers.program.get_msb_lsb_pc(program_number: int) tuple[int, int, int][source]
Get MSB, LSB, and PC values for a program at the given index.
- Parameters:
program_number – Index in the program list (0-based).
- Returns:
Tuple of (MSB, LSB, PC) values as integers.
- Raises:
IndexError – If the index is out of range.
ValueError – If any of the values can’t be converted to int.