From 5859521b6c0791e559e6ec7763f4750075d0ade5 Mon Sep 17 00:00:00 2001 From: mashiros <490328928@qq.com> Date: Wed, 25 May 2022 23:29:08 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=E6=B5=85=E6=8B=B7?= =?UTF-8?q?=E8=B4=9D=E9=80=A0=E6=88=90=E7=9A=84=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=20-=20=E6=94=AF=E6=8C=81=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E5=B5=8C=E5=A5=97=E5=AF=B9=E8=B1=A1=E7=9A=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=20-=20=E4=BC=98=E5=8C=96=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=20-=20=E6=9B=B4=E6=96=B0readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Locales/ja.qm | Bin 5236 -> 5515 bytes Locales/zh.qm | Bin 4968 -> 5229 bytes Locales/zh_TW.qm | Bin 4968 -> 5229 bytes qml/Common.qml | 19 ++++++++++++- qml/Main.qml | 2 +- qml/ServerPreferences.qml | 10 ++++--- readme.md | 68 ++++++++++++++++++---------------------------- 7 files changed, 52 insertions(+), 47 deletions(-) diff --git a/Locales/ja.qm b/Locales/ja.qm index b2e8e7c953ab5119e0148a26c78b1f6669008c45..4d94940b797ceebfb79d9c589b27e787ad20cacf 100644 GIT binary patch delta 954 zcma)4YeH zb|E6uu8IUT>`s{)R#K2bR}@JCGs7;H7N$Kb3xa}ve7xs9=Q;0lIp4taT{Fugy!k{z zBT?`(;t!rB3J4?qY&8)#nfQyHMEWTtcq)k`nL@6f0?tMAW4duiqVxx^fFB@dQ6!PB zmP%?Js9M^(PbLcNr#-Ls;@&7-u6#s9RrK!bY@9#WnCkm5_nIcWsh-Gd?9kXpKqQ87 z!L|qtwsNs`766jD_U2F`V-fc_^#PG4RNK;TN8O-(n+YN%R6EoLL1Hm)eSd>UdrlCl z&>KvGZu|}ixFWE$QuI#2GvtGSY@t}b00XCm!?zRBw+nT5ZjzURQ-yl2naI>4yckHr zLHy5ZN)tM54InBL*~2(EJtDH65DZQcvj@!(W)`bQAw-ubUi}E1VYk>;^$GhKVsFn& zq9C)_r;cFmUh!MWbo3{r@M82@vt<7E1POOZbEl2-VqlT9#^(kwQYwAZ3PP*QA6tzC zw#Xe}aL!lAeKCuOsxb8fl_4-OQF|PGieh5-Vm|Ov75) zFuTce{WL7EJee(L>sc8qVVR8kO&OQrbVTK-u5}Jqlp9Nrnp5bQ^O zrm9vKcoDjIO(N35^vFL#L;;%nnSuKeT}*HmdYwA+iy)D4ROeiQeu7};OpYW79^=y6 zY#{99hWl25P*&Fy=ar56`B4iIpRZpU#CoBU&;Ry}NZ-y_09Z9JIj#olI+!)L8raS} zOChW+W))Hg>;~Aam%D+7S=&Gl@E#WA`iM+V*@uN3%(wnMO*w4B(M2R*60GmGAeK+C zhGWS~TDDNU2m{7Mq3IX$Ntr_TcM#PYVKDFm^Mk@nc#0@0QJA%_K=_KVT$KV`FPbZW z^%l{xJcd3e#ci8b!)Td!GE@#;yjcDD6&4oS_?RcgABjH^{1FGaxXH|%?Z29yj#U3&)RHp8S33B@e+ zL~aa>m#B8%JdBO0l{2Ripi{jad4fjf)z^(0njrOUGj!C=>SF#KoL`NJx!arJaLU*} zumjFE7$=XSfoPK!Kh5CyqgJoqi$t>azBe7h1yR@kG$h|ILcF<;-(H8Z9B(Q8>y5cJ3Ke((1^-}5~0^PSUgETF{O zY6PHK0F)g-o~s9t#sXPi10Y%e^7asb%RZniu2K~%Q`&wU~F zm=6HsfZVGB*6nco3FBR+-#$G?~Tawp$)()n-=L8 zP>8A|Ty@?^{E<*M#2_Gx=xtj8Agdr=?&(HDAZ{PmV?7`qOF$tuMm*bvhNvkrZt^~W z*g#R$*mI#2>rsFPS}9Fr9`+|G%d8y@XsK+b5eGO+U3e6ZeGApl`2eh-+(g-kHUQTK zYT)w@JW&6vt|8Qrt_g+OX-!WsCi9%uINgyro<2O|i^js~nng6i!xZ9J`CcmUs2MnOCJPn^7-GX#bLk XewL{Chs1{emoWVrMs1H~S4qDEK~fBu delta 689 zcmY*XZAepL7=3nk-@CiJyUnjeTxx=tKiryx5Pg7^LNN-l@}Dl-Mv7rywg}6m-ots$Iq#j%31&B^yY>>X zK_dMa@fSLY)K=m<+ldr0;(Movq;g_TFOhJZ68o=%S4|s?Gemp`6_0+#{Tiw~kwK&i zQ~fOm&Yje7P9)M1^?BbCk(>?hKa!XATuD!atR+tML8&zZVP zKse2f4J8rDZSH|&msqBZyvxF^s9YSudKTeJzda;U9$>5$ShJO>lbay-l9?@yz#isY z3}CI5)rq%Z_ZqwSbPMnx>lz*aE@FOeh$yayP5dat-1PU1D_~Q$9@u;>nBS~L4HJSn zm`EVlJA zDZ5}2i$OnHjF5O#QZJHh)KGu$|58(>fS#xLAX+Xez_qrT7`JC0WTNNuWZgJzk$C2Ht^}T s*Vv9YDvmlAKiSvdH?_b diff --git a/Locales/zh_TW.qm b/Locales/zh_TW.qm index 70e39f23bf4106f009cfbf7c3c0fd5537ff56bd8..f43bac11dd6fb8fce1ce6596475a61f5021acbf9 100644 GIT binary patch delta 921 zcma)4ZAcVR6umn;GdnZReyC-Us9VVD4_%f_uresisO*QCnS#2FyHiSw%DQfb;*u$( zU}vlMCh5=AaL-Fuw0GS@{mcIaiQkeJ}48VFw-0Y)x@2$l1ksZJ$pOzRG zP>8xnxEj2X_!FV6k3v8u(bKvDKwd$-+|z}IK-xBL#ClLV7KcJ?lytTe4N+5M%;W#J{&{Nq=0}gPOy6`v*`(~=X<005UwTZG5tpKj| zRR5P9c%c1RU4yAXLn8{c(Yo#+Oy)VQbGjpOEPZsw7mbC{)r)9^$)lU55Xal;&Z=qL zPp3zm?*NnyQ0;nP)ck#DvUuz8C9lS%}|C8xj`E^bQLG<+8kw?I>8n zkd=v;zzt?#4NgvmGoyjqFv>o5<9H=L#e3EnJ%@&_bDFIKDA>wH8gXAz%2~JMXa2riLsL@IBlO41xQCB!ING&-^48ZX%K>+a(Al1ED9N- zdZ%Epq?sMJ=#zx^9}rcPXv{QNQqoeFF=gGPXQH~u92r_%6z8|di&@6kv6XRthr_J- zB|eE)i;ILL9r0TtC^}hGn*{R_(X6)M(khrT#eg5n3{%>%!-Ckl67566RmSXdV05Ror)AlnSi? delta 689 zcmY*XZAepL7=3nk-@CiJyUnjeTxx=tKiryx5Pg7^LNN-l@}Dl-Mv7rywg}6m-ots$Iq#j%31&B^yY>>X zK_dMa@fSLY)K=m<+ldr0;(Movq;g_TFOhJZ68o=%S4|s?Gemp`6_0+#{Tiw~kwK&i zQ~fOm&Yje7P9)M1^?BbCk(>?hKa!XATuD!atR+tML8&zZVP zKse2f4J8rDZSH|&msqBZyvxF^s9YSudKTeJzda;U9$>5$ShJO>lbay-l9?@yz#isY z3}CI5)rq%Z_ZqwSbPMnx>lz*aE@FOeh$yayP5dat-1PU1D_~Q$9@u;>nBS~L4HJSn zm`EVlJA zDZ5}2i$OnHjF5O#QZJHh)KGu$|58(>fS#xLAX+Xez_qrT7`JC0WTNNuWZgJzk$C2Ht^}T s*Vv9YDvmlAKiSvdH?_b diff --git a/qml/Common.qml b/qml/Common.qml index d7d5587..326c519 100644 --- a/qml/Common.qml +++ b/qml/Common.qml @@ -123,6 +123,20 @@ Item { return objClone; } + //支持二级嵌套对象的更新操作 + function updateObject(targetObj, sourceObj) { + for (let prop in sourceObj) { + if (sourceObj.hasOwnProperty(prop) && sourceObj[prop] !== undefined) { + if (typeof sourceObj[prop] === 'object') { + Object.assign(targetObj[prop], sourceObj[prop]); + } else { + targetObj[prop] = sourceObj[prop]; + } + } + } + return targetObj; + } + function isObjectValueEqual(a, b) { if (a === b) return true; @@ -175,6 +189,9 @@ Item { onRebootFlagChanged: { rebootServer(); + if (rebootFlag && debug) { + NVG.SystemCall.execute("explorer", NVG.Url.toLocalFile(Qt.resolvedUrl("../bin/ADV_Log.log")).replace(/\//g, '\\')); + } } function parse_resource(resource_list, sort) { @@ -211,7 +228,7 @@ Item { if (ini_data) { ini_data = ini_data.toLowerCase(); let cfg = parseINIString(ini_data); - serverCFG = Object.assign(defaultServerCFG, cfg); + serverCFG = Object.assign(deepClone(defaultServerCFG), cfg); } else { let ini_text = convertINIString(defaultServerCFG); writeFile(iniFile, ini_text); diff --git a/qml/Main.qml b/qml/Main.qml index e347a57..a55db76 100644 --- a/qml/Main.qml +++ b/qml/Main.qml @@ -41,7 +41,7 @@ T.Widget { widget.settings[widget.settings.current_style] = defaultValues; }else if(widget.settings[widget.settings.current_style]["Version"] !== defaultValues["Version"]) { delete widget.settings[widget.settings.current_style]["Version"]; - widget.settings[widget.settings.current_style] = Object.assign(defaultValues, widget.settings[widget.settings.current_style]); + widget.settings[widget.settings.current_style] = Common.updateObject(Common.deepClone(defaultValues), widget.settings[widget.settings.current_style]); } } } diff --git a/qml/ServerPreferences.qml b/qml/ServerPreferences.qml index e7e581d..fe1932c 100644 --- a/qml/ServerPreferences.qml +++ b/qml/ServerPreferences.qml @@ -141,21 +141,23 @@ NVG.Window { P.SpinPreference { name: "attack" - label: qsTr("Increase Speed") + label: qsTr("Increase Factor") + message: qsTr("The larger the value, the slower the data increase.") display: P.TextFieldPreference.ExpandLabel editable: true from: 1 - to: 200 + to: 20000 defaultValue: Common.defaultServerCFG["fft"]["attack"] } P.SpinPreference { name: "decay" - label: qsTr("Reduction Speed") + label: qsTr("Reduction Factor") + message: qsTr("The larger the value, the slower the data reduction.") display: P.TextFieldPreference.ExpandLabel editable: true from: 1 - to: 200 + to: 20000 defaultValue: Common.defaultServerCFG["fft"]["decay"] } diff --git a/readme.md b/readme.md index b1050b1..ac9a2ec 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@

ADV-Plugin

-
+
--- @@ -16,46 +16,32 @@ * 导入第三方Style类似其他插件,预计支持steam创意工坊下载 * 服务端崩溃后自启动 -## 使用说明 - -安装并启用插件后,默认加载第一种预设Style样式。右键挂件可调出菜单,在挂件菜单的挂件名选单中点击Settings选项,呼出Style设置窗口。点击其中的Styles选项可切换不同的Style风格,若此Style提供可配置项,则在Styles选项下方会出现配置界面的入口。 - -
- -# 进阶设置 - -样式设置可在插件内设置,一般服务端设置采用默认设置即可,但也提供了服务端设置的接口作为高级设置。可通过更改本插件目录`bin`文件夹中的`advConfig.ini`文件来配置插件服务器与数据设置。当配置数据错误或无配置文件时使用默认值,配置值不区分大小写。其参数的具体说明如下。 - -- [Server] - - `ip`:可选,默认值为`local`,指代地址127.0.0.1,可更改为`any`,指代地址0.0.0.0。只支持`any`与默认参数`local`,定义插件提供服务的地址。 - - `port`:可选,默认值为`5050`,定义插件提供服务的端口号。 - - `maxClient`:可选,默认值为`5`,定义WebSocket的最大连接数。 - - `logger`:可选,默认值为`false`。设置为`true`后可在插件所在目录下输出日志文件`ADV_Log.log`。 -- [FFT] - - `attack`:可选,默认值为25。可调节频谱数据增大时的速度,该值越大,增大速度越慢。 - - `decay`:可选,默认值为25。可调节频谱数据减小时的速度,该值越大,减小速度越慢。 - - `norspeed`:可选,默认值为1。动态归一化系数,取值范围从1~99,该值越大,归一化的峰值数据收敛速度越快。 - - `peakthr`:可选,默认值为10。归一化的峰值数据的额外增量。 - - `fps`:可选,默认值为30。每秒钟数据发送的次数,**必须确保该值大于5**。 - - `changeSpeed`:可选,默认值为25。按照`changeSpeed/fps`的比例调节频谱数据变化速度,**一般该值小于fps**。 - - -`advConfig.ini` 文件示例: -```ini -[Server] -ip = local -port = 5050 -maxClient = 5 -logger = true - -[FFT] -attack = 25 -decay = 25 -norspeed = 1 -peakthr = 10 -fps = 35 -changeSpeed = 25 -``` +## 样式设置 + +安装并启用插件后,默认加载第一种预设Style样式。右键点击挂件可调出菜单,在挂件菜单的挂件名选单中点击“样式设置...”选项,呼出样式设置窗口。点击其中的样式选项可切换不同的样式风格,若此样式提供可配置项,则在样式选项下方会出现配置项。 + +
+ +## 服务器设置 + +右键点击挂件后,在菜单项选择“服务器设置...”即可对服务器进行设置与调试。一般采用默认设置即可,也可进一步自定义服务端的参数,调节所有音频可视化挂件的动画效果。此外对于所有音频可视化挂件无法正常显示的用户,提供了调试接口以便更好的帮助定位错误。 +
+ +其参数的具体说明如下。 + +* `调试模式`:因为插件有着错误自启功能,每次自启都会覆盖日志文件,打开调试模式后,会关闭错误自启功能,这时可打开日志文件定位具体错误。 + +* `常规`设置 + * `端口号`:Websocket服务器的端口号。 + * `最大客户端数量`:Websocket服务器的最大连接数,音频可视化挂件均共用同一个连接的数据。 + * `启用日志`:启用后会在插件服务器目录下输出日志文件`ADV_Log.log`以定位错误,进入`调试模式`时必须启用日志。 +* `数据`设置 + * `增大系数`:可调节频谱数据增大时的速度,该值越大,数据增大时的速度越慢。 + * `减小系数`:可调节频谱数据减小时的速度,该值越大,数据减小时的速度越慢。 + * `峰值额外增量`:数据归一化峰值的额外增量,调节频谱的动态范围。 + * `动态归一化系数`:数据归一化峰值的收敛速度,该值越大,归一化的峰值数据收敛速度越快。 + * `传输速率`:数据每秒发送的次数,可理解为挂件刷新率。 + * `变化速度`:按照`变化速度/传输速率`的比例调节频谱数据变化速度,一般该值小于`传输速率`。 # 频谱样式开发