Spectrum ballistic (display buffer)
-
@harris-rosendahl yep, curves would be nicer than the square edge current design...
-
@DanH you can implement it yourself with a read buffer and an interpolation of your choice. This way you can make the desired shape (cubic, line, bars, etc...)
-
@ustk said in Spectrum ballistic (display buffer):
@DanH you can implement it yourself with a read buffer and an interpolation of your choice. This way you can make the desired shape (cubic, line, bars, etc...)
Is it possible to give an example for this iteration & read buffer please?
-
@harris-rosendahl For a readBuffer just look at my snippet above
for any data interpolation, type "cubic interpolation code" in your favorite engine and you'll get plenty of math explanations and code examples.
be aware that a buffer goes from 0Hz to SR and is linear. So you have to take only the chunk you want (typically 20Hz-20k) and perform a logarithmic scaling (both for freq and level). You also need to downsample, unless you want to draw 20k pixels in a panel (getResizedBuffer might be preferable if you don't want to make the downsampling yourself)...
This is what the internal createPath of Hise is doing. In comparison, the readBuffer contains the raw data so the whole filtering and shaping part is on your side. But for now it is broken anyway. You can still work with it though, but it can't be used in a final product so much it is glitchy.Yeah, that's a lot to read and learn ahead :)
-
@ustk Thank you!
-
@Christoph-Hart @ustk so on Windows do I need to add ipp when exporting with this new Analyser module?
-
@Christoph-Hart said in Spectrum ballistic (display buffer):
@ustk Yes I've added this recently. if you click on the edit button (where you can assign an external slot), you can see a new entry called "Edit properties". This opens a JSON editor that lets you change the properties:
Be aware that these properties are not stored in the network, but you can set them programmatically using the scripting API:
// only works with ring buffers that you have registered as external. const var dp = Engine.createAndRegisterRingBuffer(0); const var mySpecialProperties = { "BufferLength": 4096, "WindowType": "Triangle", "DecibelRange": [ -90.0, 0.0 ], "UsePeakDecay": false, "UseDecibelScale": true, "YGamma": 1.8, "Decay": 0.2, "UseLogarithmicFreqAxis": true }; dp.setRingBufferProperties(mySpecialProperties);
Can I apply these setting to an EQ displaying in a FloatingTile (not in ScriptNode)?
-
@Lindon I think I've done it recently (just for testing). I've simply copy/pasted the JSON datato the empty floating tile data.
-
@Matt_SF you mean like this?
-
@DanH I think so, it's been a while and I didn't spent much time on it
-
@Matt_SF ok thanks! Doesn't do anything for me sadly...
-
@DanH I'll try again in a minute, I'm just compiling the last commit
-
@DanH Yep you're right, it's not working... Maybe I'm confusing this with something else I did... If I come up with a solution I'll post it here.
-
@DanH @Lindon this is one way to do it, but it uses a scriptnode analyzer :
HiseSnippet 1487.3oc2XstaaaCElJNpaw8BVGJF1OEJ1OT.RMr2Z6FPQQcrSbavZR8hSSGPwP.iDsMWnH0jnSh6PA1O2i0dD1ivdD5av14PJYIk3kk5s1ATmzByyEpOdt7cnR+DU.KMUkPbVYuowLhy0bGLUpG2cLkKIasAw4FtaSS0rDOqnNSiooorPhiSsGiBbVYYh4yadTGpfJCXEhHj8U7.1S4Qbcgz9s+VtPziFx1iGUx561dq.krqRnl.3olaSRLM3H5H1NTzrkbINWYyPtVkLPS0rThyxcTgSGLVchzZ+97T9gBFtnEY.rQVw8ThPDw32IcGyEg8yO2oDhia+hnPMaT3VtayC4yjWDM9DiBuBOJGObVpJ7pUAdsJCulkf2bfjSIHsrER2zcPPBOVWnAwyUc2RBImgTHrWFJVaIK8vZtcUfERciH5QrdIvhYd3e+lMWyC9uUeP85PnOU6cLMwKVJVWRESeEjzenWt6iX5tpnXkDV3e6R1bav6BmoYRG.Iw.F3uobB8dCdZrfNsyjgCyU6eaZoModoMsQHUSabnw1lvtTcaO214aNBU1fTltOj0z6pln4Rl+vIx.MWI8GsZ8et9JiPCr0Z9MOsWuVMwefcAzLDJOA2jPQytr.MUNRv70i4o3y8op.pnCpMEdpP3qQlWU2O6GqlvD5I8o5w18vbxhgkPr+kv+fey26WvCAqVsPvSX7Qi09q9Cq40x7bd87NmXaTRWpPbHzuTbPMmyy7HgPYgjrvaifDFTvZP3aAfd4c.HYvkwk6zZFHsOzDVLF+8yPcELqoIVT625dq9fbD6oj6nzrmkA85utt2YUMb3b0gEoIJg.1v4o19nt.G8kShNjkrFTBKlvlYHz7Usi18uuitLgSfsmojgJ4VRt9Ywrr0mummj0nAe64asAjdPZfLYfcwrDMGgfyFriANUKovJtavRORqhM1l0cBzjZi1qmSYPkLAgGhRJkFHmNi682Nr8zYK9kuq8IXdelf+XR6wl79LIs+w1jySQAjipvIBptJiINlHSADzqPSgTQxTtdZ4wHmkFc4KGMZAK+bCuWR3dS29bcv34i2klCdgzz6Z7lMT55taB8qA5Bvtrauu+Bm.8VCk+woQtVrTOqzBd9HPp6lSPWAN6LIpBMM1A43.GtrwSN+paQyXLRXjv1S0Gr2OkFEKX6BGi07NTnBNZ.+Ury2AGaQVGzB+fwTITomtHM5W4RO5t0EN5lXm2LZapNgCMXtPLvNzpaF5vXvRX+tccSbMVFMfICMK9S3SlxVyBXfxV4JKQUrCSehJ4HSVJ66vYASIWyM0DjOX3osHqKDpSPBBdVQMjbLx5qDSiGqj7.Tj0hbjtdDLkSmC2mPS2ixEXWv9PlzrIejayFvOPGvNpPH331iF.Awo3nDrUB4AgZUfwOXVMaEbUoXA1h7K+YiH.bhL7Y3U+pUhDzVRhqfFwkr65Vo6iZggyj8wbKBTBtm1XiEenottCGpIUP50skuorFnpEETnJnl8zbx6yT5eVIHxgqXbZ9FuITXFBsgF2yyz8oIvke0LKkP4EcTpihnlT+BMvnLAyMrJup6.HYYtvlIU8Yl0dufdLy6wLHMhTkstfWA32uruBP7k9U.dFb+qiY6kPkowpzJa7.VDeOXhWZYgOOEtjK6m1EKyKKuqhlLWUu4Q8fC4b8Y.UOIwzuj2JThzu1klosLgQ0YgkreNztK+t58RduNP8e+7++adMpUxw3.N1kto7Xl.ZRLX7SgthgzIBctzpE4aqjpbRxhJfcY.C+nQXibA1m6AZcsFtXdgja0dWlfQKWM+EseJTERS11vSsPwhVu0uR4byWetqEtdXmo2GF2aq1G72aq0+WWE48wyHhFjnNHvdCNrV9iMRfysz7WFZE2sw0dsHGam76h2KgDALhGDDfg66.wm46yWt.97UKfO2cA74dKfO2eA74qW.e9lKzGbXz5SzpHaqHHn+l1603rojBUxlpdxeA7SAq9M
You'll have to thank @ustk for his previous R&D on the matter :)
-
@Matt_SF said in Spectrum ballistic (display buffer):
@DanH @Lindon this is one way to do it, but it uses a scriptnode analyzer :
HiseSnippet 1487.3oc2XstaaaCElJNpaw8BVGJF1OEJ1OT.RMr2Z6FPQQcrSbavZR8hSSGPwP.iDsMWnH0jnSh6PA1O2i0dD1ivdD5av14PJYIk3kk5s1ATmzByyEpOdt7cnR+DU.KMUkPbVYuowLhy0bGLUpG2cLkKIasAw4FtaSS0rDOqnNSiooorPhiSsGiBbVYYh4yadTGpfJCXEhHj8U7.1S4Qbcgz9s+VtPziFx1iGUx561dq.krqRnl.3olaSRLM3H5H1NTzrkbINWYyPtVkLPS0rThyxcTgSGLVchzZ+97T9gBFtnEY.rQVw8ThPDw32IcGyEg8yO2oDhia+hnPMaT3VtayC4yjWDM9DiBuBOJGObVpJ7pUAdsJCulkf2bfjSIHsrER2zcPPBOVWnAwyUc2RBImgTHrWFJVaIK8vZtcUfERciH5QrdIvhYd3e+lMWyC9uUeP85PnOU6cLMwKVJVWRESeEjzenWt6iX5tpnXkDV3e6R1bav6BmoYRG.Iw.F3uobB8dCdZrfNsyjgCyU6eaZoModoMsQHUSabnw1lvtTcaO214aNBU1fTltOj0z6pln4Rl+vIx.MWI8GsZ8et9JiPCr0Z9MOsWuVMwefcAzLDJOA2jPQytr.MUNRv70i4o3y8op.pnCpMEdpP3qQlWU2O6GqlvD5I8o5w18vbxhgkPr+kv+fey26WvCAqVsPvSX7Qi09q9Cq40x7bd87NmXaTRWpPbHzuTbPMmyy7HgPYgjrvaifDFTvZP3aAfd4c.HYvkwk6zZFHsOzDVLF+8yPcELqoIVT625dq9fbD6oj6nzrmkA85utt2YUMb3b0gEoIJg.1v4o19nt.G8kShNjkrFTBKlvlYHz7Usi18uuitLgSfsmojgJ4VRt9Ywrr0mummj0nAe64asAjdPZfLYfcwrDMGgfyFriANUKovJtavRORqhM1l0cBzjZi1qmSYPkLAgGhRJkFHmNi682Nr8zYK9kuq8IXdelf+XR6wl79LIs+w1jySQAjipvIBptJiINlHSADzqPSgTQxTtdZ4wHmkFc4KGMZAK+bCuWR3dS29bcv34i2klCdgzz6Z7lMT55taB8qA5Bvtrauu+Bm.8VCk+woQtVrTOqzBd9HPp6lSPWAN6LIpBMM1A43.GtrwSN+paQyXLRXjv1S0Gr2OkFEKX6BGi07NTnBNZ.+Ury2AGaQVGzB+fwTITomtHM5W4RO5t0EN5lXm2LZapNgCMXtPLvNzpaF5vXvRX+tccSbMVFMfICMK9S3SlxVyBXfxV4JKQUrCSehJ4HSVJ66vYASIWyM0DjOX3osHqKDpSPBBdVQMjbLx5qDSiGqj7.Tj0hbjtdDLkSmC2mPS2ixEXWv9PlzrIejayFvOPGvNpPH331iF.Awo3nDrUB4AgZUfwOXVMaEbUoXA1h7K+YiH.bhL7Y3U+pUhDzVRhqfFwkr65Vo6iZggyj8wbKBTBtm1XiEenottCGpIUP50skuorFnpEETnJnl8zbx6yT5eVIHxgqXbZ9FuITXFBsgF2yyz8oIvke0LKkP4EcTpihnlT+BMvnLAyMrJup6.HYYtvlIU8Yl0dufdLy6wLHMhTkstfWA32uruBP7k9U.dFb+qiY6kPkowpzJa7.VDeOXhWZYgOOEtjK6m1EKyKKuqhlLWUu4Q8fC4b8Y.UOIwzuj2JThzu1klosLgQ0YgkreNztK+t58RduNP8e+7++adMpUxw3.N1kto7Xl.ZRLX7SgthgzIBctzpE4aqjpbRxhJfcY.C+nQXibA1m6AZcsFtXdgja0dWlfQKWM+EseJTERS11vSsPwhVu0uR4byWetqEtdXmo2GF2aq1G72aq0+WWE48wyHhFjnNHvdCNrV9iMRfysz7WFZE2sw0dsHGam76h2KgDALhGDDfg66.wm46yWt.97UKfO2cA74dKfO2eA74qW.e9lKzGbXz5SzpHaqHHn+l1603rojBUxlpdxeA7SAq9M
You'll have to thank @ustk for his previous R&D on the matter :)
sadly not a path I can go down now...
-
@Matt_SF Thanks. A potential solution perhaps. It's still glitchy like @ustk pointed to originally and I'm still not crazy about the blocky lines Any chance of reinstating the old Analyser on top of these or adding a curvier Window Type @Christoph-Hart ?
-
@Christoph-Hart This bug hasn't been yet resolved... Is it still the best way to draw a buffer, or something replaced it?
This topic from above seems the best example for reproducing it:
https://forum.hise.audio/topic/5791/spectrum-ballistic-display-buffer/17 -
@Christoph-Hart Any idea to sort this out?
-
Has anyone ever released a product that uses a buffer drawing, or am I the only one counting on it at the moment?
-
@ustk I'm working on a project - far from being released - but I sure am counting on this one :)