[bugfix] 调整数据存储结构
This commit is contained in:
parent
10bc056c39
commit
ebbe9c24fa
4
app.py
4
app.py
@ -11,8 +11,8 @@ from component.widget_filter.audio_filter_model import AudioFilterModel
|
|||||||
from component.widget_filter.audio_filter_controller import AudioFilterController
|
from component.widget_filter.audio_filter_controller import AudioFilterController
|
||||||
from component.widget_card.widget_card import ParamData
|
from component.widget_card.widget_card import ParamData
|
||||||
from component.widget_log.widget_log import Widget_Log
|
from component.widget_log.widget_log import Widget_Log
|
||||||
from persistence.data_store_manager import DataStoreManager
|
from persistence.data_store_manager_origin import DataStoreManager
|
||||||
from persistence.data_store import DataStore
|
from persistence.data_store_origin import DataStore
|
||||||
from param_struct_test.service_manager import ServiceManager
|
from param_struct_test.service_manager import ServiceManager
|
||||||
from application.application_controller import ApplicationController
|
from application.application_controller import ApplicationController
|
||||||
from param_struct_test.params_service import Response
|
from param_struct_test.params_service import Response
|
||||||
|
|||||||
644
doc/struct_params.txt
Normal file
644
doc/struct_params.txt
Normal file
@ -0,0 +1,644 @@
|
|||||||
|
dataset.audio_mode: offset 0 (int32_t)
|
||||||
|
dataset.send_action: offset 4 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[0].ch_n: offset 8 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[1].ch_n: offset 20 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[2].ch_n: offset 32 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[3].ch_n: offset 44 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[4].ch_n: offset 56 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[5].ch_n: offset 68 (int32_t)
|
||||||
|
dataset.tuning_parameters.mix_parameters[0].mix_left_data: offset 12 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[1].mix_left_data: offset 24 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[2].mix_left_data: offset 36 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[3].mix_left_data: offset 48 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[4].mix_left_data: offset 60 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[5].mix_left_data: offset 72 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[0].mix_right_data: offset 16 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[1].mix_right_data: offset 28 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[2].mix_right_data: offset 40 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[3].mix_right_data: offset 52 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[4].mix_right_data: offset 64 (float)
|
||||||
|
dataset.tuning_parameters.mix_parameters[5].mix_right_data: offset 76 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[0].fc: offset 80 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[1].fc: offset 100 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[2].fc: offset 120 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[3].fc: offset 140 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[4].fc: offset 160 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[5].fc: offset 180 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[6].fc: offset 200 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[7].fc: offset 220 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[8].fc: offset 240 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[9].fc: offset 260 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[10].fc: offset 280 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[11].fc: offset 300 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[12].fc: offset 320 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[13].fc: offset 340 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[14].fc: offset 360 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[15].fc: offset 380 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[16].fc: offset 400 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[17].fc: offset 420 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[18].fc: offset 440 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[19].fc: offset 460 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[20].fc: offset 480 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[21].fc: offset 500 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[22].fc: offset 520 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[23].fc: offset 540 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[24].fc: offset 560 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[25].fc: offset 580 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[26].fc: offset 600 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[27].fc: offset 620 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[28].fc: offset 640 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[29].fc: offset 660 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[30].fc: offset 680 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[31].fc: offset 700 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[32].fc: offset 720 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[33].fc: offset 740 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[34].fc: offset 760 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[35].fc: offset 780 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[36].fc: offset 800 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[37].fc: offset 820 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[38].fc: offset 840 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[39].fc: offset 860 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[40].fc: offset 880 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[41].fc: offset 900 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[42].fc: offset 920 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[43].fc: offset 940 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[44].fc: offset 960 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[45].fc: offset 980 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[46].fc: offset 1000 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[47].fc: offset 1020 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[48].fc: offset 1040 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[49].fc: offset 1060 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[50].fc: offset 1080 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[51].fc: offset 1100 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[52].fc: offset 1120 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[53].fc: offset 1140 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[54].fc: offset 1160 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[55].fc: offset 1180 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[56].fc: offset 1200 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[57].fc: offset 1220 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[58].fc: offset 1240 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[59].fc: offset 1260 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[60].fc: offset 1280 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[61].fc: offset 1300 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[62].fc: offset 1320 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[63].fc: offset 1340 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[64].fc: offset 1360 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[65].fc: offset 1380 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[66].fc: offset 1400 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[67].fc: offset 1420 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[68].fc: offset 1440 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[69].fc: offset 1460 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[70].fc: offset 1480 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[71].fc: offset 1500 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[72].fc: offset 1520 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[73].fc: offset 1540 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[74].fc: offset 1560 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[75].fc: offset 1580 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[76].fc: offset 1600 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[77].fc: offset 1620 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[78].fc: offset 1640 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[79].fc: offset 1660 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[80].fc: offset 1680 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[81].fc: offset 1700 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[82].fc: offset 1720 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[83].fc: offset 1740 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[84].fc: offset 1760 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[85].fc: offset 1780 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[86].fc: offset 1800 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[87].fc: offset 1820 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[88].fc: offset 1840 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[89].fc: offset 1860 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[90].fc: offset 1880 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[91].fc: offset 1900 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[92].fc: offset 1920 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[93].fc: offset 1940 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[94].fc: offset 1960 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[95].fc: offset 1980 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[96].fc: offset 2000 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[97].fc: offset 2020 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[98].fc: offset 2040 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[99].fc: offset 2060 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[100].fc: offset 2080 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[101].fc: offset 2100 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[102].fc: offset 2120 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[103].fc: offset 2140 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[104].fc: offset 2160 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[105].fc: offset 2180 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[106].fc: offset 2200 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[107].fc: offset 2220 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[108].fc: offset 2240 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[109].fc: offset 2260 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[110].fc: offset 2280 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[111].fc: offset 2300 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[112].fc: offset 2320 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[113].fc: offset 2340 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[114].fc: offset 2360 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[115].fc: offset 2380 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[116].fc: offset 2400 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[117].fc: offset 2420 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[118].fc: offset 2440 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[119].fc: offset 2460 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[0].q: offset 84 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[1].q: offset 104 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[2].q: offset 124 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[3].q: offset 144 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[4].q: offset 164 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[5].q: offset 184 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[6].q: offset 204 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[7].q: offset 224 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[8].q: offset 244 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[9].q: offset 264 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[10].q: offset 284 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[11].q: offset 304 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[12].q: offset 324 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[13].q: offset 344 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[14].q: offset 364 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[15].q: offset 384 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[16].q: offset 404 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[17].q: offset 424 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[18].q: offset 444 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[19].q: offset 464 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[20].q: offset 484 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[21].q: offset 504 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[22].q: offset 524 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[23].q: offset 544 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[24].q: offset 564 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[25].q: offset 584 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[26].q: offset 604 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[27].q: offset 624 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[28].q: offset 644 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[29].q: offset 664 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[30].q: offset 684 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[31].q: offset 704 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[32].q: offset 724 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[33].q: offset 744 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[34].q: offset 764 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[35].q: offset 784 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[36].q: offset 804 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[37].q: offset 824 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[38].q: offset 844 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[39].q: offset 864 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[40].q: offset 884 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[41].q: offset 904 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[42].q: offset 924 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[43].q: offset 944 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[44].q: offset 964 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[45].q: offset 984 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[46].q: offset 1004 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[47].q: offset 1024 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[48].q: offset 1044 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[49].q: offset 1064 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[50].q: offset 1084 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[51].q: offset 1104 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[52].q: offset 1124 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[53].q: offset 1144 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[54].q: offset 1164 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[55].q: offset 1184 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[56].q: offset 1204 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[57].q: offset 1224 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[58].q: offset 1244 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[59].q: offset 1264 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[60].q: offset 1284 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[61].q: offset 1304 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[62].q: offset 1324 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[63].q: offset 1344 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[64].q: offset 1364 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[65].q: offset 1384 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[66].q: offset 1404 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[67].q: offset 1424 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[68].q: offset 1444 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[69].q: offset 1464 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[70].q: offset 1484 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[71].q: offset 1504 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[72].q: offset 1524 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[73].q: offset 1544 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[74].q: offset 1564 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[75].q: offset 1584 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[76].q: offset 1604 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[77].q: offset 1624 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[78].q: offset 1644 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[79].q: offset 1664 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[80].q: offset 1684 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[81].q: offset 1704 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[82].q: offset 1724 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[83].q: offset 1744 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[84].q: offset 1764 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[85].q: offset 1784 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[86].q: offset 1804 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[87].q: offset 1824 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[88].q: offset 1844 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[89].q: offset 1864 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[90].q: offset 1884 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[91].q: offset 1904 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[92].q: offset 1924 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[93].q: offset 1944 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[94].q: offset 1964 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[95].q: offset 1984 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[96].q: offset 2004 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[97].q: offset 2024 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[98].q: offset 2044 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[99].q: offset 2064 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[100].q: offset 2084 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[101].q: offset 2104 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[102].q: offset 2124 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[103].q: offset 2144 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[104].q: offset 2164 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[105].q: offset 2184 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[106].q: offset 2204 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[107].q: offset 2224 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[108].q: offset 2244 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[109].q: offset 2264 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[110].q: offset 2284 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[111].q: offset 2304 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[112].q: offset 2324 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[113].q: offset 2344 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[114].q: offset 2364 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[115].q: offset 2384 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[116].q: offset 2404 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[117].q: offset 2424 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[118].q: offset 2444 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[119].q: offset 2464 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[0].gain: offset 88 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[1].gain: offset 108 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[2].gain: offset 128 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[3].gain: offset 148 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[4].gain: offset 168 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[5].gain: offset 188 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[6].gain: offset 208 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[7].gain: offset 228 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[8].gain: offset 248 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[9].gain: offset 268 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[10].gain: offset 288 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[11].gain: offset 308 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[12].gain: offset 328 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[13].gain: offset 348 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[14].gain: offset 368 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[15].gain: offset 388 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[16].gain: offset 408 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[17].gain: offset 428 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[18].gain: offset 448 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[19].gain: offset 468 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[20].gain: offset 488 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[21].gain: offset 508 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[22].gain: offset 528 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[23].gain: offset 548 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[24].gain: offset 568 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[25].gain: offset 588 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[26].gain: offset 608 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[27].gain: offset 628 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[28].gain: offset 648 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[29].gain: offset 668 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[30].gain: offset 688 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[31].gain: offset 708 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[32].gain: offset 728 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[33].gain: offset 748 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[34].gain: offset 768 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[35].gain: offset 788 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[36].gain: offset 808 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[37].gain: offset 828 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[38].gain: offset 848 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[39].gain: offset 868 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[40].gain: offset 888 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[41].gain: offset 908 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[42].gain: offset 928 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[43].gain: offset 948 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[44].gain: offset 968 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[45].gain: offset 988 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[46].gain: offset 1008 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[47].gain: offset 1028 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[48].gain: offset 1048 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[49].gain: offset 1068 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[50].gain: offset 1088 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[51].gain: offset 1108 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[52].gain: offset 1128 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[53].gain: offset 1148 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[54].gain: offset 1168 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[55].gain: offset 1188 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[56].gain: offset 1208 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[57].gain: offset 1228 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[58].gain: offset 1248 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[59].gain: offset 1268 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[60].gain: offset 1288 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[61].gain: offset 1308 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[62].gain: offset 1328 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[63].gain: offset 1348 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[64].gain: offset 1368 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[65].gain: offset 1388 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[66].gain: offset 1408 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[67].gain: offset 1428 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[68].gain: offset 1448 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[69].gain: offset 1468 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[70].gain: offset 1488 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[71].gain: offset 1508 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[72].gain: offset 1528 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[73].gain: offset 1548 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[74].gain: offset 1568 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[75].gain: offset 1588 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[76].gain: offset 1608 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[77].gain: offset 1628 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[78].gain: offset 1648 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[79].gain: offset 1668 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[80].gain: offset 1688 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[81].gain: offset 1708 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[82].gain: offset 1728 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[83].gain: offset 1748 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[84].gain: offset 1768 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[85].gain: offset 1788 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[86].gain: offset 1808 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[87].gain: offset 1828 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[88].gain: offset 1848 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[89].gain: offset 1868 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[90].gain: offset 1888 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[91].gain: offset 1908 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[92].gain: offset 1928 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[93].gain: offset 1948 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[94].gain: offset 1968 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[95].gain: offset 1988 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[96].gain: offset 2008 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[97].gain: offset 2028 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[98].gain: offset 2048 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[99].gain: offset 2068 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[100].gain: offset 2088 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[101].gain: offset 2108 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[102].gain: offset 2128 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[103].gain: offset 2148 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[104].gain: offset 2168 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[105].gain: offset 2188 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[106].gain: offset 2208 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[107].gain: offset 2228 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[108].gain: offset 2248 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[109].gain: offset 2268 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[110].gain: offset 2288 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[111].gain: offset 2308 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[112].gain: offset 2328 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[113].gain: offset 2348 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[114].gain: offset 2368 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[115].gain: offset 2388 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[116].gain: offset 2408 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[117].gain: offset 2428 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[118].gain: offset 2448 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[119].gain: offset 2468 (float)
|
||||||
|
dataset.tuning_parameters.eq_parameters[0].slope: offset 92 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[1].slope: offset 112 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[2].slope: offset 132 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[3].slope: offset 152 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[4].slope: offset 172 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[5].slope: offset 192 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[6].slope: offset 212 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[7].slope: offset 232 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[8].slope: offset 252 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[9].slope: offset 272 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[10].slope: offset 292 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[11].slope: offset 312 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[12].slope: offset 332 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[13].slope: offset 352 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[14].slope: offset 372 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[15].slope: offset 392 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[16].slope: offset 412 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[17].slope: offset 432 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[18].slope: offset 452 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[19].slope: offset 472 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[20].slope: offset 492 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[21].slope: offset 512 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[22].slope: offset 532 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[23].slope: offset 552 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[24].slope: offset 572 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[25].slope: offset 592 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[26].slope: offset 612 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[27].slope: offset 632 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[28].slope: offset 652 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[29].slope: offset 672 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[30].slope: offset 692 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[31].slope: offset 712 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[32].slope: offset 732 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[33].slope: offset 752 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[34].slope: offset 772 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[35].slope: offset 792 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[36].slope: offset 812 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[37].slope: offset 832 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[38].slope: offset 852 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[39].slope: offset 872 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[40].slope: offset 892 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[41].slope: offset 912 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[42].slope: offset 932 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[43].slope: offset 952 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[44].slope: offset 972 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[45].slope: offset 992 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[46].slope: offset 1012 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[47].slope: offset 1032 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[48].slope: offset 1052 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[49].slope: offset 1072 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[50].slope: offset 1092 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[51].slope: offset 1112 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[52].slope: offset 1132 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[53].slope: offset 1152 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[54].slope: offset 1172 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[55].slope: offset 1192 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[56].slope: offset 1212 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[57].slope: offset 1232 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[58].slope: offset 1252 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[59].slope: offset 1272 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[60].slope: offset 1292 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[61].slope: offset 1312 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[62].slope: offset 1332 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[63].slope: offset 1352 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[64].slope: offset 1372 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[65].slope: offset 1392 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[66].slope: offset 1412 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[67].slope: offset 1432 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[68].slope: offset 1452 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[69].slope: offset 1472 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[70].slope: offset 1492 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[71].slope: offset 1512 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[72].slope: offset 1532 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[73].slope: offset 1552 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[74].slope: offset 1572 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[75].slope: offset 1592 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[76].slope: offset 1612 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[77].slope: offset 1632 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[78].slope: offset 1652 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[79].slope: offset 1672 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[80].slope: offset 1692 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[81].slope: offset 1712 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[82].slope: offset 1732 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[83].slope: offset 1752 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[84].slope: offset 1772 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[85].slope: offset 1792 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[86].slope: offset 1812 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[87].slope: offset 1832 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[88].slope: offset 1852 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[89].slope: offset 1872 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[90].slope: offset 1892 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[91].slope: offset 1912 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[92].slope: offset 1932 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[93].slope: offset 1952 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[94].slope: offset 1972 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[95].slope: offset 1992 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[96].slope: offset 2012 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[97].slope: offset 2032 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[98].slope: offset 2052 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[99].slope: offset 2072 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[100].slope: offset 2092 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[101].slope: offset 2112 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[102].slope: offset 2132 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[103].slope: offset 2152 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[104].slope: offset 2172 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[105].slope: offset 2192 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[106].slope: offset 2212 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[107].slope: offset 2232 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[108].slope: offset 2252 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[109].slope: offset 2272 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[110].slope: offset 2292 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[111].slope: offset 2312 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[112].slope: offset 2332 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[113].slope: offset 2352 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[114].slope: offset 2372 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[115].slope: offset 2392 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[116].slope: offset 2412 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[117].slope: offset 2432 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[118].slope: offset 2452 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[119].slope: offset 2472 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[0].filterType: offset 96 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[1].filterType: offset 116 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[2].filterType: offset 136 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[3].filterType: offset 156 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[4].filterType: offset 176 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[5].filterType: offset 196 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[6].filterType: offset 216 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[7].filterType: offset 236 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[8].filterType: offset 256 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[9].filterType: offset 276 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[10].filterType: offset 296 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[11].filterType: offset 316 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[12].filterType: offset 336 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[13].filterType: offset 356 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[14].filterType: offset 376 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[15].filterType: offset 396 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[16].filterType: offset 416 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[17].filterType: offset 436 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[18].filterType: offset 456 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[19].filterType: offset 476 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[20].filterType: offset 496 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[21].filterType: offset 516 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[22].filterType: offset 536 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[23].filterType: offset 556 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[24].filterType: offset 576 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[25].filterType: offset 596 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[26].filterType: offset 616 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[27].filterType: offset 636 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[28].filterType: offset 656 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[29].filterType: offset 676 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[30].filterType: offset 696 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[31].filterType: offset 716 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[32].filterType: offset 736 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[33].filterType: offset 756 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[34].filterType: offset 776 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[35].filterType: offset 796 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[36].filterType: offset 816 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[37].filterType: offset 836 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[38].filterType: offset 856 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[39].filterType: offset 876 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[40].filterType: offset 896 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[41].filterType: offset 916 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[42].filterType: offset 936 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[43].filterType: offset 956 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[44].filterType: offset 976 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[45].filterType: offset 996 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[46].filterType: offset 1016 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[47].filterType: offset 1036 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[48].filterType: offset 1056 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[49].filterType: offset 1076 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[50].filterType: offset 1096 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[51].filterType: offset 1116 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[52].filterType: offset 1136 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[53].filterType: offset 1156 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[54].filterType: offset 1176 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[55].filterType: offset 1196 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[56].filterType: offset 1216 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[57].filterType: offset 1236 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[58].filterType: offset 1256 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[59].filterType: offset 1276 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[60].filterType: offset 1296 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[61].filterType: offset 1316 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[62].filterType: offset 1336 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[63].filterType: offset 1356 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[64].filterType: offset 1376 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[65].filterType: offset 1396 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[66].filterType: offset 1416 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[67].filterType: offset 1436 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[68].filterType: offset 1456 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[69].filterType: offset 1476 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[70].filterType: offset 1496 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[71].filterType: offset 1516 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[72].filterType: offset 1536 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[73].filterType: offset 1556 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[74].filterType: offset 1576 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[75].filterType: offset 1596 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[76].filterType: offset 1616 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[77].filterType: offset 1636 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[78].filterType: offset 1656 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[79].filterType: offset 1676 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[80].filterType: offset 1696 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[81].filterType: offset 1716 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[82].filterType: offset 1736 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[83].filterType: offset 1756 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[84].filterType: offset 1776 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[85].filterType: offset 1796 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[86].filterType: offset 1816 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[87].filterType: offset 1836 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[88].filterType: offset 1856 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[89].filterType: offset 1876 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[90].filterType: offset 1896 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[91].filterType: offset 1916 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[92].filterType: offset 1936 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[93].filterType: offset 1956 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[94].filterType: offset 1976 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[95].filterType: offset 1996 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[96].filterType: offset 2016 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[97].filterType: offset 2036 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[98].filterType: offset 2056 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[99].filterType: offset 2076 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[100].filterType: offset 2096 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[101].filterType: offset 2116 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[102].filterType: offset 2136 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[103].filterType: offset 2156 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[104].filterType: offset 2176 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[105].filterType: offset 2196 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[106].filterType: offset 2216 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[107].filterType: offset 2236 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[108].filterType: offset 2256 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[109].filterType: offset 2276 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[110].filterType: offset 2296 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[111].filterType: offset 2316 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[112].filterType: offset 2336 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[113].filterType: offset 2356 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[114].filterType: offset 2376 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[115].filterType: offset 2396 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[116].filterType: offset 2416 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[117].filterType: offset 2436 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[118].filterType: offset 2456 (int32_t)
|
||||||
|
dataset.tuning_parameters.eq_parameters[119].filterType: offset 2476 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[0].ch_n: offset 2500 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[1].ch_n: offset 2508 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[2].ch_n: offset 2516 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[3].ch_n: offset 2524 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[4].ch_n: offset 2532 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[5].ch_n: offset 2540 (int32_t)
|
||||||
|
dataset.tuning_parameters.delay_parameters[0].delay_data: offset 2504 (float)
|
||||||
|
dataset.tuning_parameters.delay_parameters[1].delay_data: offset 2512 (float)
|
||||||
|
dataset.tuning_parameters.delay_parameters[2].delay_data: offset 2520 (float)
|
||||||
|
dataset.tuning_parameters.delay_parameters[3].delay_data: offset 2528 (float)
|
||||||
|
dataset.tuning_parameters.delay_parameters[4].delay_data: offset 2536 (float)
|
||||||
|
dataset.tuning_parameters.delay_parameters[5].delay_data: offset 2544 (float)
|
||||||
|
dataset.tuning_parameters.volume_parameters[0].ch_n: offset 2548 (int32_t)
|
||||||
|
dataset.tuning_parameters.volume_parameters[1].ch_n: offset 2556 (int32_t)
|
||||||
|
dataset.tuning_parameters.volume_parameters[2].ch_n: offset 2564 (int32_t)
|
||||||
|
dataset.tuning_parameters.volume_parameters[3].ch_n: offset 2572 (int32_t)
|
||||||
|
dataset.tuning_parameters.volume_parameters[4].ch_n: offset 2580 (int32_t)
|
||||||
|
dataset.tuning_parameters.volume_parameters[5].ch_n: offset 2588 (int32_t)
|
||||||
|
dataset.tuning_parameters.volume_parameters[0].vol_data: offset 2552 (float)
|
||||||
|
dataset.tuning_parameters.volume_parameters[1].vol_data: offset 2560 (float)
|
||||||
|
dataset.tuning_parameters.volume_parameters[2].vol_data: offset 2568 (float)
|
||||||
|
dataset.tuning_parameters.volume_parameters[3].vol_data: offset 2576 (float)
|
||||||
|
dataset.tuning_parameters.volume_parameters[4].vol_data: offset 2584 (float)
|
||||||
|
dataset.tuning_parameters.volume_parameters[5].vol_data: offset 2592 (float)
|
||||||
Binary file not shown.
Binary file not shown.
BIN
persistence/__pycache__/data_store_origin.cpython-313.pyc
Normal file
BIN
persistence/__pycache__/data_store_origin.cpython-313.pyc
Normal file
Binary file not shown.
@ -1,5 +1,6 @@
|
|||||||
import json
|
import csv
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
from typing import Dict, List, Any, Optional
|
from typing import Dict, List, Any, Optional
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from persistence.models import *
|
from persistence.models import *
|
||||||
@ -17,12 +18,22 @@ class DataStore:
|
|||||||
if not os.path.exists(self.storage_dir):
|
if not os.path.exists(self.storage_dir):
|
||||||
os.makedirs(self.storage_dir)
|
os.makedirs(self.storage_dir)
|
||||||
|
|
||||||
|
# 确保参数数据目录存在
|
||||||
|
params_dir = os.path.join(self.storage_dir, "params")
|
||||||
|
if not os.path.exists(params_dir):
|
||||||
|
os.makedirs(params_dir)
|
||||||
|
|
||||||
def _get_project_path(self, project_name: str) -> str:
|
def _get_project_path(self, project_name: str) -> str:
|
||||||
"""获取项目文件路径"""
|
"""获取项目元数据文件路径"""
|
||||||
return os.path.join(self.storage_dir, f"{project_name}.json")
|
return os.path.join(self.storage_dir, f"{project_name}.json")
|
||||||
|
|
||||||
|
def _get_param_path(self, project_name: str, param_name: str) -> str:
|
||||||
|
"""获取参数数据文件路径"""
|
||||||
|
params_dir = os.path.join(self.storage_dir, "params")
|
||||||
|
return os.path.join(params_dir, f"{project_name}_{param_name}.csv")
|
||||||
|
|
||||||
def save_project(self, project_name: str, description: str = "") -> bool:
|
def save_project(self, project_name: str, description: str = "") -> bool:
|
||||||
"""创建或更新项目"""
|
"""创建或更新项目元数据"""
|
||||||
try:
|
try:
|
||||||
now = datetime.now().isoformat()
|
now = datetime.now().isoformat()
|
||||||
project_data = ProjectData(
|
project_data = ProjectData(
|
||||||
@ -32,7 +43,9 @@ class DataStore:
|
|||||||
description=description,
|
description=description,
|
||||||
params={}
|
params={}
|
||||||
)
|
)
|
||||||
self._save_project_data(project_name, project_data)
|
|
||||||
|
# 保存项目元数据
|
||||||
|
self._save_project_metadata(project_name, project_data)
|
||||||
self.current_project = project_name
|
self.current_project = project_name
|
||||||
logger.info(f"项目 {project_name} 保存成功")
|
logger.info(f"项目 {project_name} 保存成功")
|
||||||
return True
|
return True
|
||||||
@ -44,10 +57,12 @@ class DataStore:
|
|||||||
channel_data: Dict[int, Dict], description: str = "") -> bool:
|
channel_data: Dict[int, Dict], description: str = "") -> bool:
|
||||||
"""向项目添加参数配置"""
|
"""向项目添加参数配置"""
|
||||||
try:
|
try:
|
||||||
|
# 加载项目元数据
|
||||||
project_data = self.load_project(project_name)
|
project_data = self.load_project(project_name)
|
||||||
if not project_data:
|
if not project_data:
|
||||||
raise ValueError(f"Project {project_name} not found")
|
raise ValueError(f"Project {project_name} not found")
|
||||||
|
|
||||||
|
# 创建参数配置
|
||||||
param_config = ParamConfig(
|
param_config = ParamConfig(
|
||||||
name=param_name,
|
name=param_name,
|
||||||
created_at=datetime.now().isoformat(),
|
created_at=datetime.now().isoformat(),
|
||||||
@ -55,16 +70,115 @@ class DataStore:
|
|||||||
channels=self._convert_to_channel_config(channel_data)
|
channels=self._convert_to_channel_config(channel_data)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# 更新项目元数据
|
||||||
project_data.params[param_name] = param_config
|
project_data.params[param_name] = param_config
|
||||||
project_data.last_modified = datetime.now().isoformat()
|
project_data.last_modified = datetime.now().isoformat()
|
||||||
|
self._save_project_metadata(project_name, project_data)
|
||||||
|
|
||||||
|
# 保存参数数据到CSV文件
|
||||||
|
self._save_param_to_csv(project_name, param_name, channel_data)
|
||||||
|
|
||||||
self._save_project_data(project_name, project_data)
|
|
||||||
logger.info(f"参数 {param_name} 添加到项目 {project_name} 成功")
|
logger.info(f"参数 {param_name} 添加到项目 {project_name} 成功")
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"添加参数失败: {e}")
|
logger.error(f"添加参数失败: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _save_param_to_csv(self, project_name: str, param_name: str, channel_data: Dict[int, Dict]):
|
||||||
|
"""将参数数据保存为CSV格式,只包含参数名和值"""
|
||||||
|
csv_path = self._get_param_path(project_name, param_name)
|
||||||
|
|
||||||
|
with open(csv_path, 'w', newline='') as csvfile:
|
||||||
|
fieldnames = ['parameter', 'value']
|
||||||
|
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
||||||
|
writer.writeheader()
|
||||||
|
|
||||||
|
# 写入基本参数
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': 'dataset.audio_mode',
|
||||||
|
'value': '0' # 默认值
|
||||||
|
})
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': 'dataset.send_action',
|
||||||
|
'value': '0' # 默认值
|
||||||
|
})
|
||||||
|
|
||||||
|
# 写入通道参数
|
||||||
|
for channel_id, data in channel_data.items():
|
||||||
|
# 混音参数
|
||||||
|
if 0 <= channel_id < 6: # 假设最多6个通道
|
||||||
|
# 通道号
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.mix_parameters[{channel_id}].ch_n',
|
||||||
|
'value': str(channel_id)
|
||||||
|
})
|
||||||
|
# 左混音
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.mix_parameters[{channel_id}].mix_left_data',
|
||||||
|
'value': str(data.get('mix_left_data', 0.0))
|
||||||
|
})
|
||||||
|
# 右混音
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.mix_parameters[{channel_id}].mix_right_data',
|
||||||
|
'value': str(data.get('mix_right_data', 0.0))
|
||||||
|
})
|
||||||
|
|
||||||
|
# 延迟参数
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.delay_parameters[{channel_id}].ch_n',
|
||||||
|
'value': str(channel_id)
|
||||||
|
})
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.delay_parameters[{channel_id}].delay_data',
|
||||||
|
'value': str(data.get('delay_data', 0.0))
|
||||||
|
})
|
||||||
|
|
||||||
|
# 音量参数
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.volume_parameters[{channel_id}].ch_n',
|
||||||
|
'value': str(channel_id)
|
||||||
|
})
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.volume_parameters[{channel_id}].vol_data',
|
||||||
|
'value': str(data.get('vol_data', 0.0))
|
||||||
|
})
|
||||||
|
|
||||||
|
# 滤波器参数
|
||||||
|
for filter_idx, filter_data in enumerate(data.get('filters', [])):
|
||||||
|
base_idx = channel_id * 20 + filter_idx # 假设每个通道最多20个滤波器
|
||||||
|
if base_idx < 120: # 最多120个滤波器参数
|
||||||
|
# 中心频率
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.eq_parameters[{base_idx}].fc',
|
||||||
|
'value': str(filter_data.get('fc', 0.0))
|
||||||
|
})
|
||||||
|
# Q值
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.eq_parameters[{base_idx}].q',
|
||||||
|
'value': str(filter_data.get('q', 0.0))
|
||||||
|
})
|
||||||
|
# 增益
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.eq_parameters[{base_idx}].gain',
|
||||||
|
'value': str(filter_data.get('gain', 0.0))
|
||||||
|
})
|
||||||
|
# 斜率
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.eq_parameters[{base_idx}].slope',
|
||||||
|
'value': str(filter_data.get('slope', 0))
|
||||||
|
})
|
||||||
|
# 滤波器类型
|
||||||
|
writer.writerow({
|
||||||
|
'parameter': f'dataset.tuning_parameters.eq_parameters[{base_idx}].filterType',
|
||||||
|
'value': str(filter_data.get('filterType', 0))
|
||||||
|
})
|
||||||
|
|
||||||
|
def _get_param_structure(self):
|
||||||
|
"""解析struct_params.txt获取参数结构"""
|
||||||
|
# 这里可以实现解析struct_params.txt的逻辑
|
||||||
|
# 简化起见,我们直接使用硬编码的结构
|
||||||
|
return {}
|
||||||
|
|
||||||
def _convert_to_channel_config(self, channel_data: Dict[int, Dict]) -> Dict[int, ChannelConfig]:
|
def _convert_to_channel_config(self, channel_data: Dict[int, Dict]) -> Dict[int, ChannelConfig]:
|
||||||
"""转换通道数据为ChannelConfig格式"""
|
"""转换通道数据为ChannelConfig格式"""
|
||||||
converted = {}
|
converted = {}
|
||||||
@ -80,7 +194,7 @@ class DataStore:
|
|||||||
return converted
|
return converted
|
||||||
|
|
||||||
def load_project(self, project_name: str) -> Optional[ProjectData]:
|
def load_project(self, project_name: str) -> Optional[ProjectData]:
|
||||||
"""加载项目数据"""
|
"""加载项目元数据"""
|
||||||
try:
|
try:
|
||||||
file_path = self._get_project_path(project_name)
|
file_path = self._get_project_path(project_name)
|
||||||
if not os.path.exists(file_path):
|
if not os.path.exists(file_path):
|
||||||
@ -93,6 +207,109 @@ class DataStore:
|
|||||||
logger.error(f"加载项目失败: {e}")
|
logger.error(f"加载项目失败: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def load_param_data(self, project_name: str, param_name: str) -> Dict:
|
||||||
|
"""加载参数数据"""
|
||||||
|
try:
|
||||||
|
csv_path = self._get_param_path(project_name, param_name)
|
||||||
|
if not os.path.exists(csv_path):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
param_data = {}
|
||||||
|
with open(csv_path, 'r', newline='') as csvfile:
|
||||||
|
reader = csv.DictReader(csvfile)
|
||||||
|
for row in reader:
|
||||||
|
param_data[row['parameter']] = row['value']
|
||||||
|
|
||||||
|
# 转换为通道数据格式
|
||||||
|
channel_data = self._convert_csv_to_channel_data(param_data)
|
||||||
|
return channel_data
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"加载参数数据失败: {e}")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def _convert_csv_to_channel_data(self, param_data: Dict) -> Dict[int, Dict]:
|
||||||
|
"""将CSV格式的参数数据转换为通道数据格式"""
|
||||||
|
channel_data = {}
|
||||||
|
|
||||||
|
# 处理混音参数
|
||||||
|
for i in range(6): # 假设最多6个通道
|
||||||
|
ch_key = f'dataset.tuning_parameters.mix_parameters[{i}].ch_n'
|
||||||
|
if ch_key in param_data:
|
||||||
|
channel_id = int(param_data[ch_key])
|
||||||
|
if channel_id not in channel_data:
|
||||||
|
channel_data[channel_id] = {'filters': []}
|
||||||
|
|
||||||
|
# 左混音
|
||||||
|
left_key = f'dataset.tuning_parameters.mix_parameters[{i}].mix_left_data'
|
||||||
|
if left_key in param_data:
|
||||||
|
channel_data[channel_id]['mix_left_data'] = float(param_data[left_key])
|
||||||
|
|
||||||
|
# 右混音
|
||||||
|
right_key = f'dataset.tuning_parameters.mix_parameters[{i}].mix_right_data'
|
||||||
|
if right_key in param_data:
|
||||||
|
channel_data[channel_id]['mix_right_data'] = float(param_data[right_key])
|
||||||
|
|
||||||
|
# 处理延迟参数
|
||||||
|
for i in range(6):
|
||||||
|
ch_key = f'dataset.tuning_parameters.delay_parameters[{i}].ch_n'
|
||||||
|
if ch_key in param_data:
|
||||||
|
channel_id = int(param_data[ch_key])
|
||||||
|
if channel_id not in channel_data:
|
||||||
|
channel_data[channel_id] = {'filters': []}
|
||||||
|
|
||||||
|
delay_key = f'dataset.tuning_parameters.delay_parameters[{i}].delay_data'
|
||||||
|
if delay_key in param_data:
|
||||||
|
channel_data[channel_id]['delay_data'] = float(param_data[delay_key])
|
||||||
|
|
||||||
|
# 处理音量参数
|
||||||
|
for i in range(6):
|
||||||
|
ch_key = f'dataset.tuning_parameters.volume_parameters[{i}].ch_n'
|
||||||
|
if ch_key in param_data:
|
||||||
|
channel_id = int(param_data[ch_key])
|
||||||
|
if channel_id not in channel_data:
|
||||||
|
channel_data[channel_id] = {'filters': []}
|
||||||
|
|
||||||
|
vol_key = f'dataset.tuning_parameters.volume_parameters[{i}].vol_data'
|
||||||
|
if vol_key in param_data:
|
||||||
|
channel_data[channel_id]['vol_data'] = float(param_data[vol_key])
|
||||||
|
|
||||||
|
# 处理滤波器参数
|
||||||
|
for i in range(120): # 最多120个滤波器
|
||||||
|
fc_key = f'dataset.tuning_parameters.eq_parameters[{i}].fc'
|
||||||
|
if fc_key in param_data:
|
||||||
|
# 确定该滤波器属于哪个通道
|
||||||
|
channel_id = i // 20 # 假设每个通道最多20个滤波器
|
||||||
|
filter_idx = i % 20
|
||||||
|
|
||||||
|
if channel_id not in channel_data:
|
||||||
|
channel_data[channel_id] = {'filters': []}
|
||||||
|
|
||||||
|
# 确保filters列表有足够的元素
|
||||||
|
while len(channel_data[channel_id]['filters']) <= filter_idx:
|
||||||
|
channel_data[channel_id]['filters'].append({})
|
||||||
|
|
||||||
|
# 设置滤波器参数
|
||||||
|
filter_data = channel_data[channel_id]['filters'][filter_idx]
|
||||||
|
filter_data['fc'] = float(param_data[fc_key])
|
||||||
|
|
||||||
|
q_key = f'dataset.tuning_parameters.eq_parameters[{i}].q'
|
||||||
|
if q_key in param_data:
|
||||||
|
filter_data['q'] = float(param_data[q_key])
|
||||||
|
|
||||||
|
gain_key = f'dataset.tuning_parameters.eq_parameters[{i}].gain'
|
||||||
|
if gain_key in param_data:
|
||||||
|
filter_data['gain'] = float(param_data[gain_key])
|
||||||
|
|
||||||
|
slope_key = f'dataset.tuning_parameters.eq_parameters[{i}].slope'
|
||||||
|
if slope_key in param_data:
|
||||||
|
filter_data['slope'] = int(param_data[slope_key])
|
||||||
|
|
||||||
|
filter_type_key = f'dataset.tuning_parameters.eq_parameters[{i}].filterType'
|
||||||
|
if filter_type_key in param_data:
|
||||||
|
filter_data['filterType'] = int(param_data[filter_type_key])
|
||||||
|
|
||||||
|
return channel_data
|
||||||
|
|
||||||
def list_projects(self) -> List[str]:
|
def list_projects(self) -> List[str]:
|
||||||
"""列出所有项目"""
|
"""列出所有项目"""
|
||||||
try:
|
try:
|
||||||
@ -105,21 +322,65 @@ class DataStore:
|
|||||||
logger.error(f"列出项目失败: {e}")
|
logger.error(f"列出项目失败: {e}")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
def list_params(self, project_name: str) -> List[str]:
|
||||||
|
"""列出项目的所有参数"""
|
||||||
|
try:
|
||||||
|
project_data = self.load_project(project_name)
|
||||||
|
if project_data:
|
||||||
|
return list(project_data.params.keys())
|
||||||
|
return []
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"列出参数失败: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
def delete_project(self, project_name: str) -> bool:
|
def delete_project(self, project_name: str) -> bool:
|
||||||
"""删除项目"""
|
"""删除项目"""
|
||||||
try:
|
try:
|
||||||
|
# 删除项目元数据文件
|
||||||
file_path = self._get_project_path(project_name)
|
file_path = self._get_project_path(project_name)
|
||||||
if os.path.exists(file_path):
|
if os.path.exists(file_path):
|
||||||
os.remove(file_path)
|
os.remove(file_path)
|
||||||
if self.current_project == project_name:
|
|
||||||
self.current_project = None
|
# 删除项目相关的参数文件
|
||||||
logger.info(f"项目 {project_name} 删除成功")
|
params_dir = os.path.join(self.storage_dir, "params")
|
||||||
return True
|
for file in os.listdir(params_dir):
|
||||||
return False
|
if file.startswith(f"{project_name}_") and file.endswith('.csv'):
|
||||||
|
os.remove(os.path.join(params_dir, file))
|
||||||
|
|
||||||
|
if self.current_project == project_name:
|
||||||
|
self.current_project = None
|
||||||
|
self.current_param = None
|
||||||
|
|
||||||
|
logger.info(f"项目 {project_name} 删除成功")
|
||||||
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"删除项目失败: {e}")
|
logger.error(f"删除项目失败: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def delete_param(self, project_name: str, param_name: str) -> bool:
|
||||||
|
"""删除参数"""
|
||||||
|
try:
|
||||||
|
# 更新项目元数据
|
||||||
|
project_data = self.load_project(project_name)
|
||||||
|
if project_data and param_name in project_data.params:
|
||||||
|
del project_data.params[param_name]
|
||||||
|
project_data.last_modified = datetime.now().isoformat()
|
||||||
|
self._save_project_metadata(project_name, project_data)
|
||||||
|
|
||||||
|
# 删除参数文件
|
||||||
|
param_path = self._get_param_path(project_name, param_name)
|
||||||
|
if os.path.exists(param_path):
|
||||||
|
os.remove(param_path)
|
||||||
|
|
||||||
|
if self.current_project == project_name and self.current_param == param_name:
|
||||||
|
self.current_param = None
|
||||||
|
|
||||||
|
logger.info(f"参数 {param_name} 删除成功")
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"删除参数失败: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def _project_exists(self, project_name: str) -> bool:
|
def _project_exists(self, project_name: str) -> bool:
|
||||||
"""检查项目是否存在"""
|
"""检查项目是否存在"""
|
||||||
return os.path.exists(self._get_project_path(project_name))
|
return os.path.exists(self._get_project_path(project_name))
|
||||||
@ -131,8 +392,8 @@ class DataStore:
|
|||||||
return data.created_at if data else datetime.now().isoformat()
|
return data.created_at if data else datetime.now().isoformat()
|
||||||
return datetime.now().isoformat()
|
return datetime.now().isoformat()
|
||||||
|
|
||||||
def _save_project_data(self, project_name: str, project_data: ProjectData):
|
def _save_project_metadata(self, project_name: str, project_data: ProjectData):
|
||||||
"""保存项目数据到文件"""
|
"""保存项目元数据到文件"""
|
||||||
file_path = self._get_project_path(project_name)
|
file_path = self._get_project_path(project_name)
|
||||||
with open(file_path, 'w', encoding='utf-8') as f:
|
with open(file_path, 'w', encoding='utf-8') as f:
|
||||||
json.dump(asdict(project_data), f, indent=2, ensure_ascii=False)
|
json.dump(asdict(project_data), f, indent=2, ensure_ascii=False)
|
||||||
@ -2,8 +2,7 @@ import sys
|
|||||||
import os
|
import os
|
||||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||||
|
|
||||||
|
from typing import Dict, List, Optional, Any
|
||||||
from typing import Dict, List, Optional
|
|
||||||
from persistence.data_store import DataStore
|
from persistence.data_store import DataStore
|
||||||
|
|
||||||
class DataStoreManager:
|
class DataStoreManager:
|
||||||
@ -23,6 +22,10 @@ class DataStoreManager:
|
|||||||
def current_param(self) -> Optional[str]:
|
def current_param(self) -> Optional[str]:
|
||||||
return self._store.current_param
|
return self._store.current_param
|
||||||
|
|
||||||
|
@current_param.setter
|
||||||
|
def current_param(self, param_name: str):
|
||||||
|
self._store.current_param = param_name
|
||||||
|
|
||||||
def create_project(self, name: str, description: str = "") -> bool:
|
def create_project(self, name: str, description: str = "") -> bool:
|
||||||
"""创建新项目"""
|
"""创建新项目"""
|
||||||
return self._store.save_project(name, description)
|
return self._store.save_project(name, description)
|
||||||
@ -30,22 +33,82 @@ class DataStoreManager:
|
|||||||
def save_param(self, project_name: str, param_name: str,
|
def save_param(self, project_name: str, param_name: str,
|
||||||
channel_settings: Dict[int, Dict], description: str = "") -> bool:
|
channel_settings: Dict[int, Dict], description: str = "") -> bool:
|
||||||
"""保存参数配置"""
|
"""保存参数配置"""
|
||||||
return self._store.add_param_to_project(project_name, param_name,
|
success = self._store.add_param_to_project(project_name, param_name,
|
||||||
channel_settings, description)
|
channel_settings, description)
|
||||||
|
if success:
|
||||||
|
self._store.current_param = param_name
|
||||||
|
return success
|
||||||
|
|
||||||
def get_project(self, name: str) -> Optional[Dict]:
|
def get_project(self, name: str) -> Optional[Dict]:
|
||||||
"""获取项目数据"""
|
"""获取项目数据"""
|
||||||
project_data = self._store.load_project(name)
|
project_data = self._store.load_project(name)
|
||||||
return project_data.__dict__ if project_data else None
|
return project_data.__dict__ if project_data else None
|
||||||
|
|
||||||
|
def get_param_data(self, project_name: str, param_name: str) -> Dict:
|
||||||
|
"""获取参数数据"""
|
||||||
|
return self._store.load_param_data(project_name, param_name)
|
||||||
|
|
||||||
def get_projects(self) -> List[str]:
|
def get_projects(self) -> List[str]:
|
||||||
"""获取所有项目列表"""
|
"""获取所有项目列表"""
|
||||||
return self._store.list_projects()
|
return self._store.list_projects()
|
||||||
|
|
||||||
|
def get_params(self, project_name: str) -> List[str]:
|
||||||
|
"""获取项目的所有参数列表"""
|
||||||
|
return self._store.list_params(project_name)
|
||||||
|
|
||||||
def remove_project(self, name: str) -> bool:
|
def remove_project(self, name: str) -> bool:
|
||||||
"""删除项目"""
|
"""删除项目"""
|
||||||
return self._store.delete_project(name)
|
return self._store.delete_project(name)
|
||||||
|
|
||||||
|
def remove_param(self, project_name: str, param_name: str) -> bool:
|
||||||
|
"""删除参数"""
|
||||||
|
return self._store.delete_param(project_name, param_name)
|
||||||
|
|
||||||
|
def update_param_value(self, project_name: str, param_name: str,
|
||||||
|
parameter_path: str, new_value: Any) -> bool:
|
||||||
|
"""更新参数值"""
|
||||||
|
try:
|
||||||
|
# 加载参数数据
|
||||||
|
param_data = self._store.load_param_data(project_name, param_name)
|
||||||
|
|
||||||
|
# 解析参数路径,更新对应的值
|
||||||
|
parts = parameter_path.split('.')
|
||||||
|
if parts[0] == 'dataset' and parts[1] == 'tuning_parameters':
|
||||||
|
if parts[2] == 'mix_parameters':
|
||||||
|
# 例如: dataset.tuning_parameters.mix_parameters[0].mix_left_data
|
||||||
|
idx = int(parts[3].split('[')[1].split(']')[0])
|
||||||
|
field = parts[4]
|
||||||
|
if idx in param_data:
|
||||||
|
param_data[idx][field] = new_value
|
||||||
|
elif parts[2] == 'eq_parameters':
|
||||||
|
# 例如: dataset.tuning_parameters.eq_parameters[0].fc
|
||||||
|
idx = int(parts[3].split('[')[1].split(']')[0])
|
||||||
|
field = parts[4]
|
||||||
|
channel_id = idx // 20 # 假设每个通道最多20个滤波器
|
||||||
|
filter_idx = idx % 20
|
||||||
|
|
||||||
|
if channel_id in param_data and 'filters' in param_data[channel_id]:
|
||||||
|
filters = param_data[channel_id]['filters']
|
||||||
|
if filter_idx < len(filters):
|
||||||
|
filters[filter_idx][field] = new_value
|
||||||
|
elif parts[2] == 'delay_parameters':
|
||||||
|
# 例如: dataset.tuning_parameters.delay_parameters[0].delay_data
|
||||||
|
idx = int(parts[3].split('[')[1].split(']')[0])
|
||||||
|
field = parts[4]
|
||||||
|
if idx in param_data:
|
||||||
|
param_data[idx]['delay_data'] = new_value
|
||||||
|
elif parts[2] == 'volume_parameters':
|
||||||
|
# 例如: dataset.tuning_parameters.volume_parameters[0].vol_data
|
||||||
|
idx = int(parts[3].split('[')[1].split(']')[0])
|
||||||
|
field = parts[4]
|
||||||
|
if idx in param_data:
|
||||||
|
param_data[idx]['vol_data'] = new_value
|
||||||
|
|
||||||
|
# 保存更新后的参数数据
|
||||||
|
return self._store.add_param_to_project(project_name, param_name, param_data)
|
||||||
|
except Exception as e:
|
||||||
|
return False
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_instance(cls) -> 'DataStoreManager':
|
def get_instance(cls) -> 'DataStoreManager':
|
||||||
"""获取 DataStoreManager 实例"""
|
"""获取 DataStoreManager 实例"""
|
||||||
|
|||||||
54
persistence/data_store_manager_origin.py
Normal file
54
persistence/data_store_manager_origin.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||||
|
|
||||||
|
|
||||||
|
from typing import Dict, List, Optional
|
||||||
|
from persistence.data_store import DataStore
|
||||||
|
|
||||||
|
class DataStoreManager:
|
||||||
|
_instance = None
|
||||||
|
|
||||||
|
def __new__(cls):
|
||||||
|
if cls._instance is None:
|
||||||
|
cls._instance = super().__new__(cls)
|
||||||
|
cls._instance._store = DataStore()
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
|
@property
|
||||||
|
def current_project(self) -> Optional[str]:
|
||||||
|
return self._store.current_project
|
||||||
|
|
||||||
|
@property
|
||||||
|
def current_param(self) -> Optional[str]:
|
||||||
|
return self._store.current_param
|
||||||
|
|
||||||
|
def create_project(self, name: str, description: str = "") -> bool:
|
||||||
|
"""创建新项目"""
|
||||||
|
return self._store.save_project(name, description)
|
||||||
|
|
||||||
|
def save_param(self, project_name: str, param_name: str,
|
||||||
|
channel_settings: Dict[int, Dict], description: str = "") -> bool:
|
||||||
|
"""保存参数配置"""
|
||||||
|
return self._store.add_param_to_project(project_name, param_name,
|
||||||
|
channel_settings, description)
|
||||||
|
|
||||||
|
def get_project(self, name: str) -> Optional[Dict]:
|
||||||
|
"""获取项目数据"""
|
||||||
|
project_data = self._store.load_project(name)
|
||||||
|
return project_data.__dict__ if project_data else None
|
||||||
|
|
||||||
|
def get_projects(self) -> List[str]:
|
||||||
|
"""获取所有项目列表"""
|
||||||
|
return self._store.list_projects()
|
||||||
|
|
||||||
|
def remove_project(self, name: str) -> bool:
|
||||||
|
"""删除项目"""
|
||||||
|
return self._store.delete_project(name)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_instance(cls) -> 'DataStoreManager':
|
||||||
|
"""获取 DataStoreManager 实例"""
|
||||||
|
if cls._instance is None:
|
||||||
|
cls._instance = DataStoreManager()
|
||||||
|
return cls._instance
|
||||||
138
persistence/data_store_origin.py
Normal file
138
persistence/data_store_origin.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
from typing import Dict, List, Any, Optional
|
||||||
|
from datetime import datetime
|
||||||
|
from persistence.models import *
|
||||||
|
from component.widget_log.log_handler import logger
|
||||||
|
|
||||||
|
class DataStore:
|
||||||
|
def __init__(self, storage_dir: str = "data/projects"):
|
||||||
|
self.storage_dir = storage_dir
|
||||||
|
self.current_project: Optional[str] = None
|
||||||
|
self.current_param: Optional[str] = None
|
||||||
|
self._ensure_storage_dir()
|
||||||
|
|
||||||
|
def _ensure_storage_dir(self):
|
||||||
|
"""确保存储目录存在"""
|
||||||
|
if not os.path.exists(self.storage_dir):
|
||||||
|
os.makedirs(self.storage_dir)
|
||||||
|
|
||||||
|
def _get_project_path(self, project_name: str) -> str:
|
||||||
|
"""获取项目文件路径"""
|
||||||
|
return os.path.join(self.storage_dir, f"{project_name}.json")
|
||||||
|
|
||||||
|
def save_project(self, project_name: str, description: str = "") -> bool:
|
||||||
|
"""创建或更新项目"""
|
||||||
|
try:
|
||||||
|
now = datetime.now().isoformat()
|
||||||
|
project_data = ProjectData(
|
||||||
|
name=project_name,
|
||||||
|
created_at=now if not self._project_exists(project_name) else self._get_project_created_time(project_name),
|
||||||
|
last_modified=now,
|
||||||
|
description=description,
|
||||||
|
params={}
|
||||||
|
)
|
||||||
|
self._save_project_data(project_name, project_data)
|
||||||
|
self.current_project = project_name
|
||||||
|
logger.info(f"项目 {project_name} 保存成功")
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"保存项目失败: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def add_param_to_project(self, project_name: str, param_name: str,
|
||||||
|
channel_data: Dict[int, Dict], description: str = "") -> bool:
|
||||||
|
"""向项目添加参数配置"""
|
||||||
|
try:
|
||||||
|
project_data = self.load_project(project_name)
|
||||||
|
if not project_data:
|
||||||
|
raise ValueError(f"Project {project_name} not found")
|
||||||
|
|
||||||
|
param_config = ParamConfig(
|
||||||
|
name=param_name,
|
||||||
|
created_at=datetime.now().isoformat(),
|
||||||
|
description=description,
|
||||||
|
channels=self._convert_to_channel_config(channel_data)
|
||||||
|
)
|
||||||
|
|
||||||
|
project_data.params[param_name] = param_config
|
||||||
|
project_data.last_modified = datetime.now().isoformat()
|
||||||
|
|
||||||
|
self._save_project_data(project_name, project_data)
|
||||||
|
logger.info(f"参数 {param_name} 添加到项目 {project_name} 成功")
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"添加参数失败: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _convert_to_channel_config(self, channel_data: Dict[int, Dict]) -> Dict[int, ChannelConfig]:
|
||||||
|
"""转换通道数据为ChannelConfig格式"""
|
||||||
|
converted = {}
|
||||||
|
for channel_id, data in channel_data.items():
|
||||||
|
filters = [FilterConfig(**f) for f in data.get('filters', [])]
|
||||||
|
converted[channel_id] = ChannelConfig(
|
||||||
|
delay_data=data.get('delay_data', 0.0),
|
||||||
|
vol_data=data.get('vol_data', 0.0),
|
||||||
|
mix_left_data=data.get('mix_left_data', 0.0),
|
||||||
|
mix_right_data=data.get('mix_right_data', 0.0),
|
||||||
|
filters=filters
|
||||||
|
)
|
||||||
|
return converted
|
||||||
|
|
||||||
|
def load_project(self, project_name: str) -> Optional[ProjectData]:
|
||||||
|
"""加载项目数据"""
|
||||||
|
try:
|
||||||
|
file_path = self._get_project_path(project_name)
|
||||||
|
if not os.path.exists(file_path):
|
||||||
|
return None
|
||||||
|
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
return ProjectData(**data)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"加载项目失败: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def list_projects(self) -> List[str]:
|
||||||
|
"""列出所有项目"""
|
||||||
|
try:
|
||||||
|
projects = []
|
||||||
|
for file in os.listdir(self.storage_dir):
|
||||||
|
if file.endswith('.json'):
|
||||||
|
projects.append(file[:-5])
|
||||||
|
return projects
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"列出项目失败: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
def delete_project(self, project_name: str) -> bool:
|
||||||
|
"""删除项目"""
|
||||||
|
try:
|
||||||
|
file_path = self._get_project_path(project_name)
|
||||||
|
if os.path.exists(file_path):
|
||||||
|
os.remove(file_path)
|
||||||
|
if self.current_project == project_name:
|
||||||
|
self.current_project = None
|
||||||
|
logger.info(f"项目 {project_name} 删除成功")
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"删除项目失败: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _project_exists(self, project_name: str) -> bool:
|
||||||
|
"""检查项目是否存在"""
|
||||||
|
return os.path.exists(self._get_project_path(project_name))
|
||||||
|
|
||||||
|
def _get_project_created_time(self, project_name: str) -> str:
|
||||||
|
"""获取项目创建时间"""
|
||||||
|
if self._project_exists(project_name):
|
||||||
|
data = self.load_project(project_name)
|
||||||
|
return data.created_at if data else datetime.now().isoformat()
|
||||||
|
return datetime.now().isoformat()
|
||||||
|
|
||||||
|
def _save_project_data(self, project_name: str, project_data: ProjectData):
|
||||||
|
"""保存项目数据到文件"""
|
||||||
|
file_path = self._get_project_path(project_name)
|
||||||
|
with open(file_path, 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(asdict(project_data), f, indent=2, ensure_ascii=False)
|
||||||
@ -6,7 +6,7 @@ import unittest
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from persistence.data_store import DataStore
|
from persistence.data_store_origin import DataStore
|
||||||
|
|
||||||
class TestDataStore(unittest.TestCase):
|
class TestDataStore(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user