Adding LSP LV2 configuration settings

This commit is contained in:
2025-10-10 17:19:38 +10:00
parent 94f1a5ed3d
commit b1f68c8324
2 changed files with 82 additions and 1 deletions

View File

@@ -48,6 +48,15 @@ int configHandler_Read(configHandler_config_t** configObj) {
(*configObj)->audio_pitch_rate = 0.00;
(*configObj)->audio_reverb_enable = false;
(*configObj)->audio_reverb_wetDryMix = 0.00;
(*configObj)->lv2_parax32_filter_name = NULL;
(*configObj)->lv2_parax32_filter_type_left = NULL;
(*configObj)->lv2_parax32_filter_type_right = NULL;
(*configObj)->lv2_parax32_gain_left = NULL;
(*configObj)->lv2_parax32_gain_right = NULL;
(*configObj)->lv2_parax32_quality_left = NULL;
(*configObj)->lv2_parax32_quality_right = NULL;
(*configObj)->lv2_parax32_frequency_left = NULL;
(*configObj)->lv2_parax32_frequency_right = NULL;
// Set internal configuration values
(*configObj)->internal_opensubsonic_version = strdup("1.8.0");
@@ -354,6 +363,67 @@ int configHandler_Read(configHandler_config_t** configObj) {
(*configObj)->audio_reverb_wetDryMix = audio_reverb_wetDryMix->valuedouble;
}
// Make an object from lv2
cJSON* lv2_root = cJSON_GetObjectItemCaseSensitive(audio_root, "lv2");
if (lv2_root == NULL) {
logger_log_error(__func__, "Error parsing JSON - lv2 does not exist.");
cJSON_Delete(root);
return 1;
}
// Make an object from lsp_para_x32_lr
cJSON* lsp_para_x32_lr_root = cJSON_GetObjectItemCaseSensitive(lv2_root, "lsp_para_x32_lr");
if (lsp_para_x32_lr_root == NULL) {
logger_log_error(__func__, "Error parsing JSON - lsp_para_x32_lr does not exist.");
cJSON_Delete(root);
return 1;
}
cJSON* lsp_para_x32_lr_filter_name = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "filter_name");
if (cJSON_IsString(lsp_para_x32_lr_filter_name) && lsp_para_x32_lr_filter_name->valuestring != NULL) {
(*configObj)->lv2_parax32_filter_name = strdup(lsp_para_x32_lr_filter_name->valuestring);
}
cJSON* lsp_para_x32_lr_filter_type_left = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "filter_type_left");
if (cJSON_IsString(lsp_para_x32_lr_filter_type_left) && lsp_para_x32_lr_filter_type_left->valuestring != NULL) {
(*configObj)->lv2_parax32_filter_type_left = strdup(lsp_para_x32_lr_filter_type_left->valuestring);
}
cJSON* lsp_para_x32_lr_filter_type_right = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "filter_type_right");
if (cJSON_IsString(lsp_para_x32_lr_filter_type_right) && lsp_para_x32_lr_filter_type_right->valuestring != NULL) {
(*configObj)->lv2_parax32_filter_type_right = strdup(lsp_para_x32_lr_filter_type_right->valuestring);
}
cJSON* lsp_para_x32_lr_gain_left = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "gain_left");
if (cJSON_IsString(lsp_para_x32_lr_gain_left) && lsp_para_x32_lr_gain_left->valuestring != NULL) {
(*configObj)->lv2_parax32_gain_left = strdup(lsp_para_x32_lr_gain_left->valuestring);
}
cJSON* lsp_para_x32_lr_gain_right = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "gain_right");
if (cJSON_IsString(lsp_para_x32_lr_gain_right) && lsp_para_x32_lr_gain_right->valuestring != NULL) {
(*configObj)->lv2_parax32_gain_right = strdup(lsp_para_x32_lr_gain_right->valuestring);
}
cJSON* lsp_para_x32_lr_quality_left = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "quality_left");
if (cJSON_IsString(lsp_para_x32_lr_quality_left) && lsp_para_x32_lr_quality_left->valuestring != NULL) {
(*configObj)->lv2_parax32_quality_left = strdup(lsp_para_x32_lr_quality_left->valuestring);
}
cJSON* lsp_para_x32_lr_quality_right = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "quality_right");
if (cJSON_IsString(lsp_para_x32_lr_quality_right) && lsp_para_x32_lr_quality_right->valuestring != NULL) {
(*configObj)->lv2_parax32_quality_right = strdup(lsp_para_x32_lr_quality_right->valuestring);
}
cJSON* lsp_para_x32_lr_frequency_left = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "frequency_left");
if (cJSON_IsString(lsp_para_x32_lr_frequency_left) && lsp_para_x32_lr_frequency_left->valuestring != NULL) {
(*configObj)->lv2_parax32_frequency_left = strdup(lsp_para_x32_lr_frequency_left->valuestring);
}
cJSON* lsp_para_x32_lr_frequency_right = cJSON_GetObjectItemCaseSensitive(lsp_para_x32_lr_root, "frequency_right");
if (cJSON_IsString(lsp_para_x32_lr_frequency_right) && lsp_para_x32_lr_frequency_right->valuestring != NULL) {
(*configObj)->lv2_parax32_frequency_right = strdup(lsp_para_x32_lr_frequency_right->valuestring);
}
cJSON_Delete(root);
logger_log_general(__func__, "Successfully read configuration file.");
return 0;

View File

@@ -44,6 +44,17 @@ typedef struct {
double audio_pitch_rate;
bool audio_reverb_enable;
double audio_reverb_wetDryMix; // Reverb Wet/Dry Mix Percent
// LV2 Audio Settings
char* lv2_parax32_filter_name; // LV2 LSP Para Equalizer x32 LR LV2 Name
char* lv2_parax32_filter_type_left; // LV2 LSP Para Equalizer x32 LR Filter type left name
char* lv2_parax32_filter_type_right;
char* lv2_parax32_gain_left;
char* lv2_parax32_gain_right;
char* lv2_parax32_quality_left;
char* lv2_parax32_quality_right;
char* lv2_parax32_frequency_left;
char* lv2_parax32_frequency_right;
} configHandler_config_t;
int configHandler_Read(configHandler_config_t** config);