diff --git a/firmware/code/CMakeLists.txt b/firmware/code/CMakeLists.txt index 74d4658..7c12e85 100644 --- a/firmware/code/CMakeLists.txt +++ b/firmware/code/CMakeLists.txt @@ -62,6 +62,9 @@ target_compile_definitions(ploopy_headphones PRIVATE GIT_HASH="${GIT_HASH}" PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64 + + # Performance, avoid calls to ____wrap___aeabi_lmul_veneer when doing 64bit multiplies + PICO_INT64_OPS_IN_RAM=1 ) pico_enable_stdio_usb(ploopy_headphones 0) diff --git a/firmware/code/bqf.h b/firmware/code/bqf.h index ed25384..a347575 100644 --- a/firmware/code/bqf.h +++ b/firmware/code/bqf.h @@ -43,7 +43,7 @@ typedef struct _bqf_mem_t { // In reality we do not have enough CPU resource to run 8 filtering // stages without some optimisation. -#define MAX_FILTER_STAGES 10 +#define MAX_FILTER_STAGES 16 extern int filter_stages; extern bqf_coeff_t bqf_filters_left[MAX_FILTER_STAGES]; diff --git a/firmware/code/configuration_manager.c b/firmware/code/configuration_manager.c index a4dea9e..cff49a4 100644 --- a/firmware/code/configuration_manager.c +++ b/firmware/code/configuration_manager.c @@ -52,14 +52,21 @@ static const default_configuration default_config = { .set_configuration = { SET_CONFIGURATION, sizeof(default_config) }, .filters = { .filter = { FILTER_CONFIGURATION, sizeof(default_config.filters) }, - .f1 = { PEAKING, {0}, 40, -20, 1.4 }, - .f2 = { LOWSHELF, {0}, 105, 2.5, 0.7 }, - .f3 = { PEAKING, {0}, 450, 7, 1.8 }, - .f4 = { PEAKING, {0}, 2100, 8, 3.0 }, - .f5 = { PEAKING, {0}, 3500, -7.5, 2.9 }, - .f6 = { PEAKING, {0}, 5200, 5.5, 3.0 }, - .f7 = { PEAKING, {0}, 6400, -19, 4.0 }, - .f8 = { PEAKING, {0}, 9000, 3.0, 2.0 } + .f1 = { PEAKING, {0}, 38.5, -21.0, 1.4 }, + .f2 = { LOWSHELF, {0}, 60, -6.7, 0.5 }, + .f3 = { PEAKING, {0}, 105, 5.5, 0.71 }, + .f4 = { PEAKING, {0}, 280, -3.5, 1.1 }, + .f5 = { PEAKING, {0}, 350, -1.6, 6.0 }, + .f6 = { PEAKING, {0}, 425, 7.8, 1.3 }, + .f7 = { PEAKING, {0}, 500, -2.0, 7.0 }, + .f8 = { PEAKING, {0}, 690, -5.5, 3.0 }, + .f9 = { PEAKING, {0}, 1000, -2.2, 5.0 }, + .f10 = { PEAKING, {0}, 1530, -4.0, 2.5 }, + .f11 = { PEAKING, {0}, 2250, 6.0, 2.0 }, + .f12 = { PEAKING, {0}, 3430, -12.2, 2.0 }, + .f13 = { PEAKING, {0}, 4800, 4.0, 2.0 }, + .f14 = { PEAKING, {0}, 6200, -15.0, 3.0 }, + .f15 = { HIGHSHELF, {0}, 12000, -6.0, 0.71 } }, .preprocessing = { .header = { PREPROCESSING_CONFIGURATION, sizeof(default_config.preprocessing) }, -0.16f, true, {0} } }; diff --git a/firmware/code/configuration_types.h b/firmware/code/configuration_types.h index a501246..4b638ac 100644 --- a/firmware/code/configuration_types.h +++ b/firmware/code/configuration_types.h @@ -137,6 +137,13 @@ typedef struct __attribute__((__packed__)) _default_configuration { filter3 f6; filter3 f7; filter3 f8; + filter3 f9; + filter3 f10; + filter3 f11; + filter3 f12; + filter3 f13; + filter3 f14; + filter3 f15; } filters; preprocessing_configuration_tlv preprocessing; } default_configuration;