VU Meter.
-
Hello i create a VU meter, maybe this someone is can be needed.
Screenshots:
Snippet:
HiseSnippet 1929.3oc4Z80aaibDmz1zHRsoMWa.t93B2WjupSgT9e5P+y4DaqbF0JVPxIoEAAGVQtRbuPsq.4J63FDf9Xet.849goeQ5Gg6aP6LKIMIkoUT7YmKoUA9O6LyN6r+lYmcmwoanzkEEICMLqdx4SXFl+Tq9mKT964S4BiC22v7tVcnQJVH46+m+8+gwiNeBMJh4YXZt7iQQLqrhg9y2+0OhFPEtrLRFFOSxcYGwGyUYT6t6ejGDzl5wNgONmzat6gtRwdx.4TvbV1x1XB08UzQrmPQwVxx3anQ9FlegEya3N1tNTul1rc1AFrsyVCYC1bSlyNC2Yvfuh1byVzVNFlqdfGWIC6qnJVDnzGI8Nuuu7LQ7B7LdDeP.CG3XzGV4XxF64yC75lhMQFFlVcyPpkiQp6a0g6wufdFhcOMCR1LxCZlKMOSxIuIYOeSxLmIsRrI8YV8cC4STYbP64WlPMyhbJXRwbMVh8ysdvCHGJ3pFU2SJTLgpwX5qXsCgAGBiCGRcY0ZYaWmrss85+1pUA4e1SIcXX7gGyMfFRUbonQUA3yh.+GC3qYW8MUqTsBH+9ZwXWLuFUq.t8HE4TZHYhHHQdxumjZCTOutTAKn1ZYrWqNooM9EXEUxH2Hhops1YbOkOHgiy1kw1mwG4q.9arExt5aKtOl.9QEWLp3lnKRMaSDROCHB1dplKtHZo6ImB5gUa3TgKhJ0Fsd0JfF.UjGH.+.ORQEZDfSAmeDn2JHbPATP4yiZLhoNR5RCdjbpvKpl1t0RrWe9egARsUJg99TO4YcoJ+bHnaHCh1Ph0zyLSHDb6gJk40i4BVwn.VMZ8X8pkMwXwMbjdZZqaTCOfx9gxIw5BhQFq0elpqSP8nONG03Ltx+gAS7o0ress9SchcilasN3CqSdAN5kytbCFEuR.dFqlZkos8N.+mVa1qqUwnFCgDLK7t5Hx3j3v24Z0V+AWqsl+Z8hsH+FxF0II+nChzg.KVsCDifXBzgFmVsKi9piXmBQ21qS9BRqMgIU+Jb5un4KIeIYCPrl.t05kIaHxCfwyro5cauofuZ8dr4btI2bGQDSGOfExcImxYmgaR9PRtUGNZwGvBhZKCwKoZScgLtyE5Wm76..v1ANgldDM2xEGI9NQxr.6MRPx4Bks9pKBPb1rrs7LVg2.BWLTRTrWqVH6I0ytfgewg.32aAlep8CKQaHMRs05Q+NOepfCIN2NlYQPuj34+.hoHjpwzzrFm.1e577jSgDdmH6qBgTt+vbg.LBeUNzFavuE+FnTVolzZe4ghgqs.ZnZ7OSTzatrmZAiWZ29is3kV1srQXbAb9+X6KSbBEx4cCmVvYtoE5camVHKE6B3t6cKmdv4lN8fykSObamivo73pYw4qLWwhkvXNp6cj3n2schia+HpONRf7d4nubhj.TsUuNGrmqWX6q7oONuD36z.dajyUJyF3yi.YvGHkyw4fdtpUdaYUxDxFFxh7KoZrdwbvBvubkYJjZgxxd1SSlv9TEVSRBxGWVgVIGO36fcaMssTPZDB0RrGMHX.TPeV4PIUCURETgLcQX5hUz6rYTohFFqzZNNoabbmmtFPIJoqBQJdhTwNFWt2nkjLKqgCKkGV7TnLH.VkxXGu9yYh0huMpNffASYWHHTrdwN.Xc0c.HeSIbiqkKmfRAVq9wSXIiubOBLRJ.D9smdHBcXaCRnAxMgEp3nIXtO6TtKKtIBUr1mE8JkbhV1wSjBTClqpzbuaZKFvJxM3dXGix7bFuF1Ol2GVuyS+Ecw3fVWUkzSn3xuQJ+5z1Dc4NYbOqNRuoATUwFqfm9SX.XcgtXfMnPDwUmmukTy1skUVrtszVF3gZ8JP0Ezb+Lqtbkqe416RkXuf2411dS5c0csNX3P3.alwthU6+zbaT0Mto74wlxOw54zSY5lNpMjUsd9iYhahFM9WW3FMdLjn9T1IvafhlHiXN40be1X9IvYfnBTmYFMKcFEntOSMUTT0wjJHEhEvsbiyI2c1MkXy7DgCfETFLtfl5vec1v+8Wef.6rTeFry8NNxE.FLXMOp1cJ7rjmimVcxOwLxMyS9angdfSysvoskW3Pl7Y1JdnNm7kzzyUus5C6GzLC+vSjcyz13Jo1Xe93IArCDvimfaEz13u.tFXHcZfJkZwlF2QJjS7kBta9ftdL3oaiFwJDXU5F5gJEbQcFk6uaOV.iFkcN8u8u18H3UFzP.mXWSrv48tE5k5u9UVwlKASjP9eiKfV9+Ku.pfK+NW7m7RG9+3TS4mkPffTblyUQXJ7.ZA.74IO2Igved2Rtr5P3DUnpqDds8rv+x2Tg1qrvwH3V5SmXZLsD.4eJYv5PhOcL36YAOk3i.yM9Oe1nNT3JErrhmLcbe3EatLvTEPwGXoSlKgE4DO1FGG+9Kgmdv+A9jvzAGalvzIk4hCIvqo9zwC94VvK7ZRzI+I+3m8+Cgi7CwZLl5FJ+V23p6wbr2QSA12B8+CEpX0AGSbLzU7mGXGCOD8accKppKMwlW2Itw0chadcm3VW2It80ch6bcmXq28Dw5Dd3Tkbb74Dn3otGnaWhoYbcS5iLF+WfEl5Yb
Script:
// Init. Content.makeFrontInterface(800, 600); // VU Meter declaration. namespace VUMeter { // Declare VU Meter. const var pnlVUMeter = Content.addPanel("pnlVUMeter", 20, 20); pnlVUMeter.set("width", 116); pnlVUMeter.set("height", 35); } // VU Meter painting. namespace VUPaint { // Draw VU. VUMeter.pnlVUMeter.setPaintRoutine(function(g) { // Declare assistant variables. var a = this.getLocalBounds(5); var CSize = 5; var ShadowPath = Content.createPath(); ShadowPath.addRoundedRectangle(a, CSize); // Draw shadows. g.drawDropShadowFromPath(ShadowPath, a, Colours.withAlpha(0x000000, 0.25), 2, [0, 0]); // Draw bg. g.setColour(Colours.withAlpha(0xCECECE, 0.20)); g.fillRoundedRectangle(a, CSize); // Draw L meter. g.setColour(Colours.withAlpha(0xFFFFFF, 0.50)); g.fillRoundedRectangle([5 + 3, 5 + 3, Math.range(Engine.getMasterPeakLevel(0) * 84, 5, this.getLocalBounds(5)[2] - 3 * 2), 8], CSize / 2); // Draw R meter. g.setColour(Colours.withAlpha(0xFFFFFF, 0.50)); g.fillRoundedRectangle([5 + 3, 5 + 3 + 8 + 3, Math.range(Engine.getMasterPeakLevel(1) * 84, 5, this.getLocalBounds(5)[2] - 3 * 2), 8], CSize / 2); // Draw L numberic view. if (Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(0)) < 0.01) { // Draw L bg. g.setColour(Colours.withAlpha(0x000000, 0.30)); g.fillRoundedRectangle([5 + 89, 5 + 3, 14, 8], CSize / 2); // Draw L db info text. g.setColour(Colours.withAlpha(0xFFFFFF, Math.range(Engine.getMasterPeakLevel(0), 0.50, 0.80))); g.setFont("Rajdhani", 6); if (Engine.getMasterPeakLevel(0) > 0.0) { g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(0)), 1), [5 + 89, 5 + 3, 14, 8]); } else { g.drawText("-Inf", [5 + 89, 5 + 3, 14, 8]); } } else { // Draw L bg. g.setColour(Colours.withAlpha(0xFF0000, 0.30)); g.fillRoundedRectangle([5 + 89, 5 + 3, 14, 8], CSize / 2); // Draw L db info text. g.setColour(Colours.withAlpha(0xFF8080, 1)); g.setFont("Rajdhani", 6); g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(0)), 1), [5 + 89, 5 + 3, 14, 8]); } // Draw R numberic view. if (Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(1)) < 0.01) { // Draw R bg. g.setColour(Colours.withAlpha(0x000000, 0.30)); g.fillRoundedRectangle([5 + 89, 5 + 3 + 8 + 3, 14, 8], CSize / 2); // Draw R db info text. g.setColour(Colours.withAlpha(0xFFFFFF, Math.range(Engine.getMasterPeakLevel(1), 0.50, 0.80))); g.setFont("Rajdhani", 6); if (Engine.getMasterPeakLevel(1) > 0.0) { g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(1)), 1), [5 + 89, 5 + 3 + 8 + 3, 14, 8]); } else { g.drawText("-Inf", [5 + 89, 5 + 3 + 8 + 3, 14, 8]); } } else { // Draw R bg. g.setColour(Colours.withAlpha(0xFF0000, 0.30)); g.fillRoundedRectangle([5 + 89, 5 + 3 + 8 + 3, 14, 8], CSize / 2); // Draw R db info text. g.setColour(Colours.withAlpha(0xFF8080, 1)); g.setFont("Rajdhani", 6); g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(1)), 1), [5 + 89, 5 + 3 + 8 + 3, 14, 8]); } // Draw line. g.setColour(Colours.withAlpha(0x000000, 0.30)); g.fillRoundedRectangle([5 + 86, this.getLocalBounds(5)[1] + 1.5, 1, this.getLocalBounds(5)[3] - 1.5 * 2], CSize / 12); }); } // VU Meter refresh. namespace VUMeterRefreshTimer { // Declare timer. const var VURefreshData = Engine.createTimerObject(); VURefreshData.setTimerCallback(function() { VUMeter.pnlVUMeter.repaint(); }); VURefreshData.startTimer(11); } // Callbacks. function onNoteOn() { } function onNoteOff() { } function onController() { } function onTimer() { } function onControl(number, value) { }
-
@It_Used if you look there's a couple of examples of this already in the forum...
-
@It_Used Is there any advantage to this over using the built in floating tile?
-
-
@It_Used Is there any advantage to this over using the built in floating tile?
That's a good question, and I have the same question... Probably not, and perhaps to begin with, I don't quite understand what they are for, I do not exclude that my method of determining the volume is incorrect.
-
@It_Used Check out my Bootcamp course, I cover the floating tile meter in it. You can still apply your design to it using laf.