From 3f57b1461fc0ff36b3104d54f78b047b2c7797d1 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 24 Feb 2025 10:54:09 +0800 Subject: [PATCH] =?UTF-8?q?[bugfix]=20=E4=BF=AE=E5=A4=8Dchannel=5Fid?= =?UTF-8?q?=E5=BC=95=E8=B5=B7=E7=9A=84=E6=B7=B7=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 13 ++-- .../audio_filter_componet.cpython-313.pyc | Bin 54121 -> 54145 bytes .../audio_filter_controller.cpython-313.pyc | Bin 24237 -> 23352 bytes .../audio_filter_model.cpython-313.pyc | Bin 12491 -> 12620 bytes .../widget_filter/audio_filter_componet.py | 5 +- .../widget_filter/audio_filter_controller.py | 56 ++++++++++-------- component/widget_filter/audio_filter_model.py | 3 + doc/Reconstruction direction.txt | 6 ++ 8 files changed, 49 insertions(+), 34 deletions(-) create mode 100644 doc/Reconstruction direction.txt diff --git a/app.py b/app.py index 2c66308..4338934 100644 --- a/app.py +++ b/app.py @@ -84,11 +84,11 @@ class MainWindow(QWidget): for i in range(channel_count): # 创建widget filter_widget = AudioFilterWidget() - filter_widget.set_channel_id(i) - filter_widget.set_channel_name(f"Channel {i+1}") + # filter_widget.set_channel_id(i) + # filter_widget.set_channel_name(f"Channel {i+1}") # 创建model和controller - model = AudioFilterModel(channel_id=i, channel_name=f"Channel {i+1}") + model = AudioFilterModel(channel_id = i, channel_name=f"Channel {i+1}") controller = AudioFilterController(model) controller.set_widget(filter_widget) @@ -111,18 +111,17 @@ class MainWindow(QWidget): def test_communication(self): """测试通信功能""" - print("Testing communication...") - + # 测试第一个控制器的通信 if self.filter_controllers: controller = self.filter_controllers[0] # 测试从服务器加载数据 - print("Testing load from server...") + logger.info("load from server...") controller.load_from_server() # 测试同步数据到服务器 - print("Testing sync to server...") + logger.info("sync to server...") controller.sync_to_server() def Get_All(self): diff --git a/component/widget_filter/__pycache__/audio_filter_componet.cpython-313.pyc b/component/widget_filter/__pycache__/audio_filter_componet.cpython-313.pyc index 03acdf0b4f10def9200631260bebe8c44e0aa853..75edd731669182b4beb87d6ac26746c910274496 100644 GIT binary patch delta 229 zcmaF4jJa_+Gw)|!UM>b8_;ho3y5UCN1Ex$7jFaW-Ww|357!ny77}A-7nI|)9i%sS? zV`pT6vRE0JCkL9zGP4A;!9*tKnei~PPp&pw&&;IBFN90r?@T0H7w{IGe&aVb_txy^^qh%hngZ@zIZotZD4mr-{H`xgcf{UKzt I?b8U_G-too^%W0aM1P$pzD;1vEf{K#;=7z>v-u%rrUBOq!V~ zm>Enn2eW`^MwZEjX0nrW%y<~tCRduRH)PagFBJl6da-Wb^S$eybv8Vk)A_W&>Dkl` zenlIA;zb)l#3m528Aw#IZ_YJmW#nB2WH&H8;1}+%@2{WSV&TIxfqe$sgo+D%3RgH3 yH{Z2*)W`UK^MT`1tc)_7Z=VriV$|FG;aoa1Um7o??hN)X3?TYL(B{-jGK>InGDL^~ diff --git a/component/widget_filter/__pycache__/audio_filter_controller.cpython-313.pyc b/component/widget_filter/__pycache__/audio_filter_controller.cpython-313.pyc index 2e936c32f4eff70d2ecc087cfd7795baefd353e9..ba4ffe047bd5c7c087d1e308748b1067866c868b 100644 GIT binary patch delta 4539 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 delta 5303 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 AH~;_u diff --git a/component/widget_filter/__pycache__/audio_filter_model.cpython-313.pyc b/component/widget_filter/__pycache__/audio_filter_model.cpython-313.pyc index dae53d9b04a16907a581da2901ae32e0d704c5b1..e0c990b63e0d769420125ea39760fdf93bc3a06b 100644 GIT binary patch delta 350 zcmX?|cqWPOGcPX}0}$li+?{SHw~_Cc1Y^QvPRRytMvy271T#&3C@nVGK$4FsntO7u zoE%dy^W;^MMM}{KB`l$gd<@1+rceW}DRUB!VIVGt@#a2c9K;x>| z3lfVGbBnDe7fMM86h#4rZgHmOmFA`vC6=U4o+*{fIAJoow7C!m?*xt+BJ*Wt%FN)q zz^8tNLu0b7w28_<3G6f2CRAMDQ@FyR_<&z@bD6XT6Jy=x`LZjR7<)E*D6}&% z&e(iG$(fOH$z~B15k|%plQmWUF|M1ep>~dO)8y}J581W>EiRUuoTw?j`Kx*wBjeu9 zF`8A3Y{x*trjzwlWjFuSQeh* aL1OcLz1xg}zD$hj6Ux6bfaoF_pdkQVOkxcH delta 241 zcmX?;bUKmmGcPX}0}z})xI6up>_)y{5{x2~IVBsIIT;ux>&eS71v5>)C0WE4%BaGi z$vinv%8Rv#AEGETs?WE+BwGclPlC8 zGH%`+rP0L5xNGxW%_>H=!$6aZO((BcmEByWt;ooDa`PM=4o1eao0sY?XB1&)6Gzf{KNDUl@Sg4?>$0^lvi?dNDDoPbmM&0HTXzfQA470Ju!^ diff --git a/component/widget_filter/audio_filter_componet.py b/component/widget_filter/audio_filter_componet.py index 020e31a..6d75bb8 100644 --- a/component/widget_filter/audio_filter_componet.py +++ b/component/widget_filter/audio_filter_componet.py @@ -362,7 +362,7 @@ class AudioFilterWidget(QWidget): def set_all_params(self, params: Dict[str, Any]): """设置所有参数""" - if not self.channel_id: + if self.channel_id == -1: return # 设置基础参数 @@ -370,7 +370,7 @@ class AudioFilterWidget(QWidget): vol_key = f'vol_data{self.channel_id}' mix_right_key = f'mix_right_data{self.channel_id}' mix_left_key = f'mix_left_data{self.channel_id}' - print(f"params:{params}") + print(f"set_all_params params:{params}") # 更新基础参数 self._update_basic_params(params, delay_key, vol_key, mix_right_key, mix_left_key) @@ -1003,6 +1003,7 @@ class AudioFilterWidget(QWidget): finally: # 确保信号总是被重新连接,即使发生异常 self.connect_param_signals() + def clear_ui_data(self): """清空UI中的所有数据""" diff --git a/component/widget_filter/audio_filter_controller.py b/component/widget_filter/audio_filter_controller.py index 887ed7a..a1a6a8c 100644 --- a/component/widget_filter/audio_filter_controller.py +++ b/component/widget_filter/audio_filter_controller.py @@ -94,11 +94,14 @@ class AudioFilterController(QObject): # 设置model(不触发更新) self.widget.model = self.model - # 建立信号连接 - self._setup_widget_connections() + # # 建立信号连接 + # self._setup_widget_connections() - # 手动更新一次UI - self.widget.set_all_params(self.model.to_widget_params()) + # # 手动更新一次UI + # self.widget.set_all_params(self.model.to_widget_params()) + + # 手动更新一次UI 关于ui的更新,统一封装到updateUI方法中 + self.widget.updateUI() def _setup_widget_connections(self): """设置widget信号连接""" @@ -117,14 +120,14 @@ class AudioFilterController(QObject): def _convert_struct_data_to_model(self, struct_data: Dict[str, Any]) -> Dict[str, Any]: """将结构体格式数据转换为模型数据""" channel_params = ChannelParams( - delay=struct_data.get(f'tuning_parameters.delay_parameters[{self.model.channel_id-1}].delay_data', 0.0), - volume=struct_data.get(f'tuning_parameters.volume_parameters[{self.model.channel_id-1}].vol_data', 0.0), - mix_right=struct_data.get(f'tuning_parameters.mix_parameters[{self.model.channel_id-1}].mix_right_data', 0.0), - mix_left=struct_data.get(f'tuning_parameters.mix_parameters[{self.model.channel_id-1}].mix_left_data', 0.0) + delay=struct_data.get(f'tuning_parameters.delay_parameters[{self.model.channel_id}].delay_data', 0.0), + volume=struct_data.get(f'tuning_parameters.volume_parameters[{self.model.channel_id}].vol_data', 0.0), + mix_right=struct_data.get(f'tuning_parameters.mix_parameters[{self.model.channel_id}].mix_right_data', 0.0), + mix_left=struct_data.get(f'tuning_parameters.mix_parameters[{self.model.channel_id}].mix_left_data', 0.0) ) filters = [] - base_idx = (self.model.channel_id - 1) * 20 # 当前通道的均衡器起始索引 + base_idx = (self.model.channel_id) * 20 # 当前通道的均衡器起始索引 print("channel_id:", self.model.channel_id) # 遍历当前通道的20个均衡器单元 for i in range(20): @@ -264,16 +267,18 @@ class AudioFilterController(QObject): struct_params = self._convert_model_data_to_struct(params) # 基础参数批次 - channel_id = self.model.channel_id - 1 # 调整为0基索引 + channel_id = self.model.channel_id # 调整为0基索引 base_params = { - f'tuning_parameters.mix_parameters[{channel_id}].ch_n': channel_id, + f'tuning_parameters.mix_parameters[{channel_id}].ch_n': channel_id + 1, f'tuning_parameters.mix_parameters[{channel_id}].mix_left_data': struct_params[f'tuning_parameters.mix_parameters[{channel_id}].mix_left_data'], f'tuning_parameters.mix_parameters[{channel_id}].mix_right_data': struct_params[f'tuning_parameters.mix_parameters[{channel_id}].mix_right_data'], - f'tuning_parameters.delay_parameters[{channel_id}].ch_n': channel_id, + f'tuning_parameters.delay_parameters[{channel_id}].ch_n': channel_id + 1, f'tuning_parameters.delay_parameters[{channel_id}].delay_data': struct_params[f'tuning_parameters.delay_parameters[{channel_id}].delay_data'], - f'tuning_parameters.volume_parameters[{channel_id}].ch_n': channel_id, + f'tuning_parameters.volume_parameters[{channel_id}].ch_n': channel_id + 1, f'tuning_parameters.volume_parameters[{channel_id}].vol_data': struct_params[f'tuning_parameters.volume_parameters[{channel_id}].vol_data'] } + + print("sync_to_server base_params:", base_params) # 发送基础参数 ServiceManager.instance().params_service.set_params(self.widget, base_params) @@ -315,19 +320,20 @@ class AudioFilterController(QObject): # 基础参数请求 - 使用实际通道ID base_params = [ - f'tuning_parameters.mix_parameters[{channel_id-1}].ch_n', - f'tuning_parameters.mix_parameters[{channel_id-1}].mix_left_data', - f'tuning_parameters.mix_parameters[{channel_id-1}].mix_right_data', - f'tuning_parameters.delay_parameters[{channel_id-1}].ch_n', - f'tuning_parameters.delay_parameters[{channel_id-1}].delay_data', - f'tuning_parameters.volume_parameters[{channel_id-1}].ch_n', - f'tuning_parameters.volume_parameters[{channel_id-1}].vol_data' + f'tuning_parameters.mix_parameters[{channel_id}].ch_n', + f'tuning_parameters.mix_parameters[{channel_id}].mix_left_data', + f'tuning_parameters.mix_parameters[{channel_id}].mix_right_data', + f'tuning_parameters.delay_parameters[{channel_id}].ch_n', + f'tuning_parameters.delay_parameters[{channel_id}].delay_data', + f'tuning_parameters.volume_parameters[{channel_id}].ch_n', + f'tuning_parameters.volume_parameters[{channel_id}].vol_data' ] + print("load_from_server base_params:", base_params) # 分批请求滤波器参数 BATCH_SIZE = 5 # 每批请求5个滤波器的参数 - base_idx = (channel_id - 1) * 20 # 修正滤波器起始索引计算:通道1从0开始,通道2从20开始 - + base_idx = (channel_id) * 20 # 修正滤波器起始索引计算:通道1从0开始,通道2从20开始 + print(f"base_idx: {base_idx}") def request_batch(start_idx, end_idx): batch_params = [] for i in range(start_idx, end_idx): @@ -365,7 +371,7 @@ class AudioFilterController(QObject): ServiceManager.instance().params_service.get_params( self.widget, base_params, - callback=lambda r: all_responses.update(r.data) + callback = lambda r: all_responses.update(r.data) ) # 发送分批的滤波器参数请求 @@ -375,7 +381,7 @@ class AudioFilterController(QObject): ServiceManager.instance().params_service.get_params( self.widget, batch_params, - callback=batch_callback + callback = batch_callback ) except Exception as e: @@ -634,7 +640,7 @@ def main(): app = QApplication(sys.argv) # 创建控制器和相关组件 - model = AudioFilterModel(channel_id=1, channel_name="测试通道") + model = AudioFilterModel(channel_id=0, channel_name="测试通道") controller = AudioFilterController(model) widget = AudioFilterWidget() controller.set_widget(widget) diff --git a/component/widget_filter/audio_filter_model.py b/component/widget_filter/audio_filter_model.py index 253d146..667da1a 100644 --- a/component/widget_filter/audio_filter_model.py +++ b/component/widget_filter/audio_filter_model.py @@ -115,8 +115,11 @@ class AudioFilterModel(QObject): """转换为AudioFilterWidget兼容的参数格式""" print(f"self.channel_params:{self.channel_params}") params = self.channel_params.to_dict(self.channel_id) + print(f"filters:{self.filters}") for i, filter_param in enumerate(self.filters, 1): params.update(filter_param.to_dict(self.channel_id, i)) + + print(f"params:{params}") return params diff --git a/doc/Reconstruction direction.txt b/doc/Reconstruction direction.txt new file mode 100644 index 0000000..711bfb4 --- /dev/null +++ b/doc/Reconstruction direction.txt @@ -0,0 +1,6 @@ +关于最近一次需要重构记录: + 1.关于数据的操作全部移入model中,controller中只保留对model的调用 + 2.关于ui的更新,统一封装到updateUI方法中,在controller中调用 + 3.关于信号的连接,统一封装到setup_connections方法中,在controller中调用 + 4.所有可以互斥的操作,都需要成对出现,逻辑上也必须完整。(set/get) + 5.