g200kg/zoom-ms-utility

DSP usage values

Opened this issue · 2 comments

I wonder how the reported DSP usage values were defined for each effect?

I understand that the dsp field values are hard-coded in the js/effectslist.js, the reported usage percentage is then calculated as 100/dsp %.

0x40200002:{name:"ZNR",group:"COMP",order:105,install:0,ver:0x0111,title:"ZOOM's unique noise reduction",
dsp:17.4545,dspmax:1/12,dspmin:1/30,

Is this dsp value (17.4545: 5.73%) taken from the corresponding ZDL file (ZNR.ZDL in this case)? Or this is some experimental value derived somehow (how)?

I saw similar percentage values in the Zoom Multistomp Effects List spreadsheet (as referenced on reddit /r/zoommultistomp/wiki) described as approximate values related to DSP Power Consumption, but, again, no explanation as to how they were derived.

I updated the aggregated ZDL modules list adding DSP-usage column (see #30). The values are derived from the corresponding DSP usage figure included in ZDL module (OnOff section) as DSP_usage = DSP_usage_figure / 2.5.

It's similar to how this is calculated in with ZD2 modules (though the respective figure is in the ZD2 header, see zoom-zt2: "DSP required" value per effect)

In ZDL modules, the DSP-usage-figure is referenced in OnOff section, 88 bytes offset from the section start, it's a 4-byte float.

For the most part the resulting DSP-usage percentage matches the "approximate" percentage values in the Zoom Multistomp Effects List spreadsheet (as referenced on reddit /r/zoommultistomp/wiki). Though in some cases they differ significantly (7% difference for MNGLD_SP.ZDL, ZDL-included value is lower).

Still interested how those DSP values in the spreadsheet were derived (did someone measure the actual current? or just stuff a patch until it shows DSP Full and then tweak the combinations?). Either way, the ZDL appears to contain the figure, which seems to be 2.5 higher than the expected DSP usage percentage.

It may be curious to compare this to the DSP usage of the ZD2 modules. For example, ZNR.ZDL takes 5.20% vs. 4.35% for ZNR.ZD2. Algorithms are likely the same, not sure what makes the difference (better DSP?).

I tested a few ZDL effect combinations and it looks like the ZDL-based DSP usage percentage is used with 90% cut-off. That is adding an effect such that the patch is resulting in aggregated DSP usage over 90% will lead to that effect being bypassed with "DSP Full" condition.

Meanwhile, the "approximate" values seem to be adding up rather to 100% cut-off. So in a way these are more "actual", probably that's how they were collected. However such approach requires to hardcode the values in the application metadata, as opposed to taking the value independently from a given ZDL module.

It may be possible to change the scaling factor from 2.5 to something like 2.25, which will bridge some of the differences but also swing them for others (e.g. for Drives).

UPDATE: It appears that the scaling factor is 2.3 or to be precise, the percentage is obtained as:

DSP-usage-percent = DSP-usage-figure / 230 * 100%