VU Meter's not working in exported plugin
-
I've made an FX plugin, when testing in HISE (via a sampler which is removed before exporting as a VST) the VU meters work. Once exported and loaded in Reaper the VU meters aren't responding to input or output. Any ideas?
This is my FX chain
-
Have you "ENABLE_ALL_PEAK_METERS=1" within your settings before export?
-
@d-healey You have to "ENABLE_ALL_PEAK_METERS=1" in the Preferences section.
-
Thanks guys. I'm compiling on GNU/Linux so those settings don't directly affect my project, but it did apply the settings to the .jucer file. Once I opened the .jucer file I could see the settings there for Windows and Mac so I just copied them to the Linux section. I also had to add
HISE_NUM_PLUGIN_CHANNELS=2
as well.One thing I noticed is that the output meter wasn't working when connected to the master output so I had to connect it to a simple gain effect.
-
@d-healey said in VU Meter's not working in exported plugin:
I had to connect it to a simple gain effect.
You can do that? Connect a meter to the output of simple gain?
-
@dustbro yes you can do that
-
@dustbro If you look at the Music Box Tutorial, there is a Simple Gain unit at the end of the fx chain. The VU meter in the GUI is connected to this module and VU meter gets the level of this unit.
const var MasterGain = Synth.getEffect("Master Gain"); const var outputMeter = VuMeter.createVuMeter("outputMeter", 328, 72, MasterGain); // 328 an 72 values are x & y cordinates of the VU meter
In order to use this method, you need to define a "createVuMeter" function:
namespace VuMeter { /** Creates a peak meter. * * Usage: Give it a reference to a module (either synth or effect). * * It looks best using a width and height with multiple of 4. * Customize the colours using the scriptPanel colour Ids */ inline function createVuMeter(name, x, y, module) { local widget = Content.addPanel(name, x, y); Content.setPropertiesFromJSON(name, { "width": 32, "height": 100, "itemColour": 0x88FFFFFF, "itemColour2": 4279505940, "bgColour": 4279505940, "textColour": 4283782485, "saveInPreset": false, "opaque": 1 }); widget.data.module = module; Console.assertIsObjectOrArray(module); widget.setPaintRoutine(function(g) { g.fillAll(this.get("bgColour")); g.setColour(this.get("itemColour")); var lsize = parseInt(this.data.lvalue * (this.getHeight()-4)); var rsize = parseInt(this.data.rvalue * (this.getHeight()-4)); g.fillRect([2, this.getHeight() - lsize - 2, (this.getWidth()-4)/2-1, lsize]); g.fillRect([2 + this.getWidth() / 2 - 1, this.getHeight() - rsize - 2, (this.getWidth()-4)/2-1, rsize]); g.setColour(this.get("itemColour2")); for(i = 1; i < this.getHeight()-1; i = i + 3) { g.fillRect([1, i, this.getWidth()-2, 1]); } }); widget.setTimerCallback(function() { var lvalue = getNormalizedPeakValue(Engine.getMasterPeakLevel(false)); var rvalue = getNormalizedPeakValue(Engine.getMasterPeakLevel(true)); this.data.lvalue = Math.max(lvalue, this.data.lvalue - 0.04); this.data.rvalue = Math.max(rvalue, this.data.rvalue - 0.04); this.repaintImmediately(); }); widget.startTimer(30); return widget; }; inline function getNormalizedPeakValue(gain) { return 0.01 * (100.0 + Engine.getDecibelsForGainFactor(gain)); } }
-
@d-healey Have you tried this method? (in the example; "vu_meter_128_frames" is the image strip animation with 128 frames)
/** Creates a VU-Meter from a filmstrip for the master volume. */ inline function createFilmStripVuMeter(name, x, y, isLeft) { local widget = Content.addPanel(name, x, y); Content.setPropertiesFromJSON(name, { "width": 130, // this uses the exact dimensions of one filmstrip "height": 65, "opaque": true // opaque is important in order to increase the drawing performance }); // Put the image in your image folder widget.loadImage("{PROJECT_FOLDER}vu_meter_128_frames.png", "filmstrip"); widget.data.value = 0.0; widget.data.isLeft = isLeft; // Set the initial image widget.setImage("filmstrip", 0, 0); widget.setTimerCallback(function() { // Get the peak value from the master output var newValue = Engine.getMasterPeakLevel(this.data.isLeft ? 0 : 1); if(newValue > this.data.value) this.data.value = newValue; else // Just decay the current value (0.92 controls the decay time) this.data.value = this.data.value * 0.92; // Calculate the filmstrip index // this must be an integer value // 84 is used instead of 128 because 84 is ~0dB which is // more accurate for this example filmstrip var index = parseInt(this.data.value * 84.0); // If you just want to paint one image, // you don't need the paint routine, but // just use this method // the yOffset is index * heightOfFilmstrip this.setImage("filmstrip", 0, index * 65); }); widget.startTimer(30); return widget; }; const var VuMeterLeft = createFilmStripVuMeter("VuMeterLeft", 11, 10, false); const var VuMeterRight = createFilmStripVuMeter("VuMeterRight", 160, 10, true);
-
@orange I haven't used an image strip, I used Christoph's panel vu meter
-
I'm just having a look at a VU meter and trying to connect it to a simple gain as the master output doesn't work on my exported plugins either.
The name of my simple gain module is 'MasterGain'. I tried replacing the line below with 'getMasterGainLevel' but it just threw me a code error.
What would I need to replace the line below with to make it work?
var newValue = Engine.getMasterPeakLevel(this.data.isLeft ? 0 : 1);
-
@SteveRiggs have you tried:.
var newValue = Engine.getDecibelsForGainFactor(MasterGain.getCurrentLevel(0)))
-
@Lindon said in VU Meter's not working in exported plugin:
var newValue = Engine.getDecibelsForGainFactor(MasterGain.getCurrentLevel(0)))
Yes but that's totally broke it now. The console is going mental repeating the same line even when you clear it until you change it back
I've tried the exact line you sent, and also without the extra ) on the end, and added the ;
-
@Lindon Are you sure thats right? It's not working for me.
-
@SteveRiggs could it be the "zero" inside the brackets? I think you should have it like this
MasterGain.getCurrentLevel()
-
@ulrik Still the same error dude :(
var newValue = Engine.getDecibelsForGainFactor(MasterGain.getCurrentLevel());
-
@SteveRiggs and MasterGain is declared?
const var MasteGain = Content.getComponent("MasterGain");
-
@ulrik Ah, it wasn't but is now. Still the same error though
-
@SteveRiggs can you post a snippet?
-
@ulrik Here you go. I changed it back to getMasterPeakLevel as it wouldn't compile with anything else.
HiseSnippet 5244.3oc67jDabbkcUKpRRjRbLsrCxDjAA+gvAtoBMYuvUq3QEWZR0RboS2MkkxLCZUrqeSVCqtp10BWrFYH3YLFmLNA4RNnLH.5PPVtjjiIWRHxk.D3CIXxg.jKNWBb.xAAjK4Vx6++U00+WU0jcSQKMRlDvVc8We6K+sR1V0wNNV1Ro5u5AsvRothbkCLc2dgsU0MkJtnTp7xyYpZWe6CPK6o6pZilqYKTE8lnpXGWTVT5V1XGr671V64fsIENhz7GzR0wAqIkJUeKSFnT8edI5eO8FyqZnZVGGVjjzcrzqiWQuotaXokTtstgwRpZ3p5M4Z8DJEqaYtfkgkG.z8ImQpkZ8cT2BulJoYmSVJ0EJno6ZYWwU0E6Hk57yaocPkss1yj096n6nuoAl7QVoJv.wJdIKCMBDS9szBaqanUJf33HIkRtTHopOFo5MkWUWSuc4gjrgnUfB6AO8H04NJvK6wCdYSB7RwAdmmAdutbk515sbCqg.aWVtnoK1tgJvB3AKVakN2XCJufEzBS2wZptCdIa3i18Hc1LYxLJh7+G45CNvfCTvbKcS7XFVpZy4ooasjtA1AZtUIKKizr1L93UbwsPYGEsfMFvYDapP2Q0VWEvTzh3F5l5t5VlnzKYYil2y00xbLTIUGWrFZdrg0diL3..aGD31Ej.KQk3bXsC8dn..dKr6BVMaYYBejdXgVMr.rjuMr3vfkcCfEMNXoA.KM.TyU2bKjKfYHUSMTKFTsYGfJe8fiAp7akOT0Ftx0Ftp643Z0DUW0vXSP9N.tvsArMSfHQgOUMPNAY.rEGzaq23sQtVnGh7bnHgsGCIZnZ3fAn1vCZUL7DPKcSxHfZ3YVmRLrLEHmDbyF3v0CPrQYCFzyGL3.8q2.kN3aD72CX+C4OA7eLGPtOXrH.GgdPZ0CY+CFfxdXDnXE2P7PJ0sqjNFygTKcXVvmlmNYbNPPBU4lq+9nE1nb4BqUEUpbgJEphVatUKfJtFZNzJyMegUHsLT.YEUPnIaGkLXU6KRDm9eaSqMydzzcBZSH89Zkjg2y1FZ0F.khgKDqjoGA8duGZ3gGIjldzPDg3jdXW79tCOJZ3hfb3vAT4PNTONLGKLRlgihARoGchwwSrBXXKhqanZiQqRzXrItk3YNgk1QFTXSBrlbsq4qu5fTQ2Yi2YULz.TCaPyUE0P2noiKXdgpf4tMF0jN.ncsL7ZhGCcswiymqSGNvLZyJjtdGO5Pl1DHIih1eTzAihzcVA2vMjiaXAVIP6oqAPKGrC1AJoZhM35a.Si8+CZHP.AWDsv1t5XGvdeyaUY8076Ua0tggw2c6geWT1YFEAB+taq6.FU.DmfX38Uq6hz.G0lN.V3frZ.Rr3PRP6gYar9Va6BiStLyNZ6RsZo9AdXnTpAJX3YE.nJRGH+1tpltHfyXYqAzOvfltIgPAlvHytls5dDSW.J.T5ljnK7MAHhvv3Vxyk1E8lPDCjQ7.HLB+uZP7vZyZJiZR8qUjTY5gePoxqeqBKTs1RquxhEJ+vlD9Rs7SCbafR4TK6Ln8IHUK88AchZ6RHmD9hiqta8swZi0xbKh1SaRxvh.m+Lpo5pNFUkFXkYFKy0iWKi+CUy9QTTrB1GEItw..fgbBCCvw8wpPnYTD3XOShvDzbRLX1s0uBjVSG27N..K6C.svp6vrNwzH3z.r7ba44F1KhBnIdu63i2g1FXpbkfQZE7tfrLQrSfJbCTFDHTNx0ud3nE9K8FoaOreGTXm48ME7WjZAvHnqbCsn4NeD9VfuZvAcc0Cn3Xcl8LeTOclwlMGpNyTDSawuo.I8XAgnkbMDY3RDWA.AXP08LHgOPllP6O5lZ38EZIU8sIAt2jDP.zBW7VDSSjYQnkyLAhooqAMBXFpZDk6r4lA5YcUnb+V7QYzlGs21502F9RXDZZAFcUqCjEBjwrEBc.rYzrkQB1HXhCTXFn.sTscvPDkoiSJxO8XsEXiQKJ1fnai9ADbbOh4CvpQKvzsK0vDUoXTwdPZtlk4a6BLd.aohvzNXChqf73njXtD5Acv8nVgHjSr61VZQHyXzAq2nAnAQskQwoqgXFAWuwRwQcJV1Q8yfA.ryLx0CQ4GlrZKjrFSwMc91zIarqmsoeSZ6gMzMnuCGeKLcvazvbsB.rYyN8nnoyL0nn1AfEa.KSv3ieDoMiLj4CFRVTgbwAslkKdcvzy.OXf9G3gCfhVUiFIVmev.FvjkT0L5zQzwzldM2DaGDuUPCgrsDSmSt6RmqNy4KWCsLIAVsdKrYmRxSx2iMjt2P9PEjrqKMYueI+j8nYg89p6hIdBkz0HIiJTVVIJBvm9ssp4V3JDoE.7S0tjBlZjuebeRRfXne90KHG0Q3bygVdihUmqLp3pk1XkJEpLdUPredv8rKpXyVdjLMJicfnnbvism5tL7fB78w.9ugOvWwPG7.Sg5KISCgKSbnsa58Eo8d1nc9dG1Mc9JPp9XRTd21bymkoOmPmUxmuuC69NmWny2uQiA5gNOgPmexie7fJcemmTnyG94e92pyclkXDsy8Ky9Hl70SuQuz8bOacOeOz8XX9TQwbTOP1lNJCandnyYiLyqLQWQyeMYgDTOYBqWQNLulDFgMJtH3ykrBS9VeByU.JaQ7t50wr0ape4EwN63Z0RJ06zNqI.CYy7f9yL0wluJN82Yk1u8DpbekCZ+w9erRncmwiY2YA0MQzAvY7fEnjTzcxRhzVhltR6gJ8OQg4yscIO5.BEtqAxbb.oz2kCHODyAjY5Ff7ljPnRDJy7oQgRkGH.kC1y15Cg56uOOT+8TZE3XonFYDAlKIsTpOuxPn11fLoHz8jchBcR+lJ5t3lr0hMmTpAjyN0zYyN0LYjBKm4taysB9pe4Imb1bSjYRIxBADTJsqSOctrSJwR8i0svgIuPa3IJWPj0QWrAeA60rzAeOKCNl4HDGdONBgzrJM.wZF660jWjrzMFfxfIoOXvwtpuu6LByobmlyKKWrLZEHqQP4hi1+.toTYCkNOvuww6PjCS9Ttg8QqozNXQl3apel73jEUwYbssUs2ABoYmsGeQq5dPV5tNieyhUJPVh5e.ttqCDQY1YG+2.s58PUWe8UpL9FEQkfT8bPom2xCX5iL9cfPgIYRtHjToCZQXDooZBRMnL4FOalecTE8ODinwzBlGZ4L9N..WKStZPxBMra5TapYt6LSmYBpjODMEM.PmPVw8UDE3dT0XBb+VJNPN03kTq6R2xBeGq+O2PPZNvhFZcOWIH+AUZt5jZtfL0JWSKMe6U00IbNGuFMzA5prLRadol5ZZF3RVNzkANbxycXS9cx3dG1TcedSkvT1hPBBc692dCxpSRygrjUKuVDy8zEpUR2ojgGjjao.nKHluPQgqdrQ2DN6Op1YRBIIIbY4EOvTsodcmrhBBulLwpP0sA2maaYn8bTh3YhyKDZZ3T05C3X+C8Qu.Y+YOB1+LmX1+pwX+2JA1OPd+uhZHnhpKYYGrriv+6OfPFiyKvBmQIQk5tR3Hsxyfx+abr4Vvo76cF2OItOjSfpiCpvGzU9.DzjeKQM425YPL.rB7UmXPdNwfmbvYhAIIFbIxlw+JsTvDbRA+0O7LofjjBtrbUaLYC9eUVPXRNAgu7QmIHjjfv.r0LgbBjRRNnSbmmexGcgbP+cJ8yAnHQUHwZ90qfO5vC+gQHjRkhQHmRgjZtOoBQIKmjjjuTmfxKPcLyAgHudFBOI.TGIaWjBPBKD0AmPZF0aCvYOcoXWx25E+ZJ7vWrzr98AIdp1gO5YQRioTdpBjWts9.OX9O+wmPv7xxqZ8rnQzEvIef8e4O9DBmCJu55kKfVdthq8s+1mHHsiKp1qws1Js7DLy7oO6qq1U5hsWHbFe5Ogm97vXt39SOUcwMmopg0VdXD87w5fFe4MJVaNGxxuW61.tptiKp1F2oXMGvv+3qUDETH4HV1DPWswc1ibVPfFP136Z1rCERjkY8QyEistrRBND+lJccptELITaMo3tGO7y+7+6az8NbNx8sgybtAGeoT7POL6U9Rk6sV0ahJToRg0pVbtUpfxArEOcCMD87lNx3ELvrN6SgAzP0n1t4Rf9JMeL56RID3v8az3+7zgxvmilzVe8gxb4ikxvm2xg7Tl+feXLJySdApKC+.goGIINcY3+pso9VcPKVZlXzxo6T3oNp6hK5eTSImDaA85yIKYnatCVqpEuHUuQn4yK3KLNiP20D5b8HgdJNB8L7dmZ8QmQnOJBcWleyUjW3lar7usAs.tXg+obj5+lOiKziKIujGwsnDKvnKx5eDT6vueLTqHcL3RgC965Jc0V.dIY5u4cHpvCeC866Gk1qKWp75UWu58JU.kcrLikom19GdQs+2O9rb8Ol0+O2KWq++UO1SaRHTdoO4Lt+wv8y+xE22OMn2zm6uj+cyoJDRmeRX7EwmRjzDbxB+4+dJ9mYG1Az4pxkBOg7LCVgmKCwiaAg5MQtYmX1IylM6jRBGyCgZnGNnTWP9ACNvCCLqJmREl8.llbpQHQRFyb5XIczVNBTV3Z+vu8WZ7n7ORDki1sP7EvhrSkYZ.OlZljP7LYmdpLGKh+DY5YeeXx43rB30y+5DwtHCi1tJ5k2ytCURN0pNwJkbpRYcHdcKotqkM.ZjaBoPkq4QfVulz9jmikD3n3GGUWZn8THrlfjzAhmF1jbk.2M3bqlpuDb6cDmjsPNy+Fuao6uoxtgGE1tb0FFzm8sRDG9J7GnFo2JxApIXk37C.IgP35nW6NdhojJz0KnAa56Wdgs815CQ4N9iQ06oHJ+kchIxMyDYlb5IkhGERdktK8ynmMPtSKPT7Jh+h+ou5RBcdCUyc7u.ejqAJFa5eaOOhpPUpVr5B2rvhnkJO2pEpjXSygVhdObPU3tuMQH8JwI8eGkPKBbmuLd9Q+x4yO4jSLQ9iZoZicfA4y5+teFGAG7VGdfAmJ1AFjcCxdGxxq4.pVn4s1Gktr9Va4fHVDFIoUL51QQqunUm00hbRGoWQLecMtS0OA5kS8G1mjzAje7ObNo1S5Etp+FUzdRuv+heIAGcO4ToXG9zieV+Fx7m7e1z9WbpMsC1SNREBYeC9STUMQuJCIu.854BA9P5qinakbSOS1YyjYlSt+zy8Io78qrns9tXavXN8lUvLxyNyshkwVMVwxlGBTAaSrdHVdE58toLX3Rr7kMr1T0X9RqFo4t1X0l.ZtJDqTjpBiBSvMD897OWSKOS2U8Lff.MzihDKXfUsI2R9EVHInaEq5pj.phh4a5czfwJ5NDpv2kcYWxL1jiF7qoC9IjpU6ekKrvfekarLje78INO48LFZsOhQk5wNZwEUhGsiT2kf6fbmYUg35VheotU6QeQCEdm+oQmGM+2MR3j81Kwi9qFN9jgeQaqVKZsm4pXSONbHC+FDft+YpTGuJEWE8rNEWHi+BlJUTMCQow6e+Dx2q2VFN9riU9c3k59Qwh14ci4BlcU9qM+FUqt9Z0xLQsasQkprXOfvLtKptUqC3cCKm5ZBo6P9p6WArnwoIjYqrblwlUvxwq2c2iCNKGuKG9m4mpj3Ikl1md9Xwbjm20+nGS9qaSWN2gujdjkkkgFDJITRPRnHglHxOAEjd2SPtNkg+k9c6QOAQ2911.92S.v+Vz8mJ1KJyPxfkBxELV7wtgHo3WAgox+pxP7KXBL6C3uQV8vKfSlt9EvoaA2WWtDIAgjg2yk.7JI8UN75+dBMnbAv8Rc2Pf87xKc2S2GOnDeaiFfCVtHCVtb3hmQgDg8WV3cChUrf17Suw6icY9p3KLXQ23Hsfk.2nkkpOQbrutCG6tGEoDkI9kkCwBzKdI4xz6a9VqpB1XHVNWCL2.w0TGCPrIj3DwrSpyQhnj8clfqsaEroF8i+O3O+JyFjWDoxrAUJ0Sb7bGKGWRpK33zaT4Yb7WF334Oc33zqA6Yb7W7b7qF3gg6ddRIKIeyO4IJKZefH26dGBbdthdxi+Uxe3J.wwrtfaS+69+JXys32GYhLBEtJZRh.gqbHdu4gv11xFDpzH2MKUMAeE1XMrgpvbbS8E3FiO8mqrHjqCPW4ayRKU0+BJGVzo56Y.MnXF2gFPL6MSvvxpkvip.o.t2TgSMUfm2xRCDbcuWvydWbgOfJGEdYa3kc.HAH0P7lNAi57pzojxJPjmDARAYCbP7G+WcGERA4DevHM0xGsfIBKXHEfCGbF2HwH8JEgs80Wo6oqOg7ZQvSWeRg+9O9L5pHck+Bgz8j1CIukF7jVIou7mcFoUjzxcZt6AJK4gFgmxh9K+ydh.kUIe9e9Wenr9drGn8MX1WpM7BMK9H65hai0gDGwK4LmGbREy45BdaCH++Zex+Ns4kwFjGVu.Z9+wG9mbCxxUXSAqXSAasLXUlvDwWcYR7V7.WXUBPBcCc45l.7P.dE5KELNIfwulDgD+5hNWO8F9UDah3ghUU2ASNDGwFt3U7RqD2kZ+.PSOe5KGD4rvhD14W1YIoEiFc16KdBBumRBu8yEMIOUhkrLTsitrKmZ4Hb9tdsgnu+muzrVVWUlRxeYBfohDu7.vCIWR8qgoK9FAoKReNgVwh7hOQoGuIqDDoHTIP1CamsS1D9hz+i+cc6q8dqt90duxAl0WksqDgITRVQ2p1fc8Ho9sBMkqXtEKaY4RN0U72kJ1ljQSXCFd9AglTrinilvDHuautOEAOe9EKydA8GewhnUI2JCTY8FMnk0grJ+r+0KdjYURpOpQytbAhEWBet1eLVSed8R3+Ugl8y51VzW2AtGyZV0e.Lx75V.bGZ.passu2P0yvMnTQcsUsLsZsskodcQwUvFwVags4g8DQnngB8lJIDCzJ5ljcUNhFWOPKNkV+tuoLCbQDCDnWM1to9dEZ6l9ELmYOOlilp0sspE7zNCLtKQKAvaSpqg9g.mguQsecGIameFxdfqWqdcB49cxJIkbexcB5S9SPel3DzmIOA8YpSPel9DzmYNx9PbFMmmqUSlpHTPoBrCxcJt0LP5+WkJlOm
-
@SteveRiggs Try this snippet:
HiseSnippet 5170.3oc6bsDabbjdtGQ0xjThqokcP1fDDTKgC7PEZxdlgOshV0jbFRMR7wDNCojxlEiZNcMj8xd5db+fOVszPv6ZrN6tIHWxAiEAfGBxiKI4XxkDhbI.A9PB1KAHWbtD3.jCBHW1aI+UUcOc0OFxYHosrjIAr0zUWO9++9+q+GUWUUxxrF111zRHUeUNnIVH0MDKefgy1yushlgPw7BoxINqghUssO.snqlihEZ1FMQk0ZfpfscPYPoaZgswNyYYtmM1hT3vBycPSEaarpPpT8rHoiR02UEn+876NmhthQMbPQBBaXpUCujVCMmfRKI+.Mc8ETTwUzZvU6wkKVyzXdScSWfn6QTRnoRscT1BuhBoZWQTH00Jnp4XZU1QwAaKj5pyYpdP4sM2yfU+Mzr01TGSdHiPYniXEufotJghIkJL+1Z5pk7AGaAgThkBfpdXP0aItrlpVqxCfrAou.EzBd7H0UNIxKCO4IkH4IkD4khi7tJi7dCwx0rzZ5D7FBsccwhFNXq5JfHfmrX0U3J+jADm2DpggynMT1AufE7PqVjNijjzHHx+e3aOP+CzeAiszLvipapnNqqpl4BZ5Xan5lkLM0SypyXiU1A2DkYDz7VXfmQrgBsghklBvon735ZFZNZlFnzKXZgly0wwzXTTIEaGrJZNrt4dCOP+fXGT31Ez.KQ03rY0CcGjOAuE1YdyFMMMfGROTnZMTHZIWKZwlQK65SKpbzRcfVpCrlilwVHGfyPJFpnlLpZy1PUdyCNEpxqVdTUK5JaK5plqsiYCTMEc8MA8ae5B2hv1LAPhReJpfdBRGDK1n2Qq96fbLQGhbsoLgkKiIpqnaiApV2EpUL9DXKMCROfp6ZTiBFlFgfSBuYAR3Z9L1HrNCZ4SGn+9zpiR6+LB96or+g7WH9eTaPu2uuHDGAOH05P1+fAprK5AJWw0EGRQ2NR6XTaxaocy7dXd5j4YeEIT46s5CQyu9ZqUXkJnRqUnbgJnUlc4BnhqflEszryUXIRMCTPVRATZxzVMC1q8TIhi+OvvbyLmLtSXaBz6Mqjz8tVVPsVGPJFuPrRldXzctCZngFN.SOYJh.NoGxAuuyPifFpHnGNjOJGHg5xt4ToQxHbRBPJdzNAGOX4KvxiqoqXgQKSlwXQbKgV1T0UGyKi3d4cPTOgjgsP853ZvXF7Ve6I25VdyXsQJnMV+cWFCU.U2Bl6pfpqo2v1ALvPmh4rMF0f1AncM0cafGEcqwhKoqQ6NvPZixjltgKsKSa.fxHn8GAcvHHM6kv0cBj45lfcBzdZp.oxodAVBJoXf04ZquXi8+8qH.gfShlXKGMrMXwuw8Ku5Jdsp0Dugf92Y6gdOTloGAAp+NaqYClU.FmvX38Up4fTAW0F1.WXiLqC5r3.HnU2rMVaqscf9IqzLizpTylJuuKFJkZhB5dVA.qhz.QtkihgCBDJlVp.9AlzzLH.EXDiL5pVJ6QLdAr.fzMHwW3YDHLCC8aIWGZSzZ.wLP5wCf.I7dpNwGqEqpLzj5YqH4koG5okVa06WX9JUWX0kxWXsCaPjKUyMEHsAjxtZloQ6SXplZ6CyJptKANIxEaGMmZaiUGsowVj4OsfjgBSbdinphixnzI0fnTZToaG+sL4O7Z1OhxhkwdrHwQFP.LlKT2.RbOtJfZFAAt1kRjlfpShByp0LLes0zwMvCDvhdDPSrxNL6SrYDby.LccZ55v2JxrOC7da3w4A1GXS5JA80R3cAsYhhWHb3tHIDnVN7sucP+01dCrBnAlirg.MHyiW.TaMsRGLwlyhDa3jFdXt9M3WZ0S2Z.91n.hh2um+eQdKPP9MkqqCaJ0CJuODG.37ulxATzqFix7.0zRiNSVTMlYN17PupBBqSkDhVxsPjtKQdEHDPzWyUmDZBYXBrroYnh2OTMoFFZPn6MIAa.0vAuEwnGYTBUyoGGwrgnBUBD.JpDyFYxNMzxZJP4d03CjTmCs21Z01FdJTOzvDLnqTCfEBkwrxBM.rF0nodBVeXJFTZFPflJV1XHZ0zwghbSMpzvsCKJVmX0.88H73dDCSf8nlftiC0jGc51HgaAo5plFuiCH3AtkN4f1.KXh.nYNBIdtPsf14tT6aD3D6rsoZDXFiNX050g4lTqjTd5VHl40UquPbVmxksclueG.VvF91Ar7gIaP.RDjYRHctV3jE1w0xvqJs7dG3a0yUlmsq13maHtZAD1LYlZDzTRSNBpUvcw5v0Hb7o2izpQ5xb9cIKhStXrVwzAuJXTq+m1ee8eX+nnupd8DemWfF5vfkzqY3zIzvzFtM1Da4GKmeEgL4BmpnX6SUjOS1ZL25bUzzfDz1pMwFsK+VAuXAfTIGzipfDocnIR9q3kHIMCuGprKl3iUPSkjnanxxHPY.9T6sTL1BWlns.jepVkTvP0+YPMLH2cgVicOrw9a3M1k00.WyzAsWQZzcRwGrNo0uFs0yDswO93Now2PDhPk3k3AFaddF9rgZrbtb8bbm23bgZ7SpWu+tnwiGpwG8Iex.xcdimHTiO9S+zei12XVNSzF2mH6gXpGO+tcSyyd9Zdttn4w37Iix4nt.1lJp.avtnwYhLxKMdGg4utXnbWOaJq2PLHtnD5g0KlGbYRV7IOiGAIQ.kkGuqVMLaon5SLO1dGGylBod2VovAbHajGvajo9k7lhS+cFg8aMfxOQ9fVOr+GJGX1XLwnQlOuxlHZGXOl+ZWRJZiLjPvEn4wzpqR+ikYtLaUxyNffvcLQlkiHE9NbD4wXNhTpSHx6Qh.JQpT5iiRkxOMDUNPWapNfpex97T8uubSe+BEUI8HHbI4qRcYsFDRrEnSFl5NZmnTmvuirlCtAaYZyJjpewLSNUlLSNsjPP4LuUatk+S8INwDyjcboIDHqQfeozlN0TYyLg.KmPVyB5lbgpCOnbsvhN55P3oXuhoFDa0hfeUNf33GyADByHWGTqYhuWWLOYUczgICFj1fA+xJsVkV9wTrci40EKtFZIHcRXxEG1+TtgTdc412wu4o6PjiS9Xtt8YqH2JVOl5apet3Xj0awdL0sUr1AhHYmsGKuYMWH8cG6wtWwxEHqd82CWywFBHLyLi8aiV9wnJqt5RkGa8hnRPNf1nzyY5BB8gGaCHRVRJl4grMsQ4gdjlCJn0fjxNVFoeKTYsuOFQCIELOzzdrc.BtpT1pPr90sZXWcxoezzSIMNUyGBFhF+lcfn3IxgU3dVkXJb+tx1Px1XV9bANV+euaHsYeKZnUccDfv+UnIwSdy0DoV4ZXp5Yuhllnfsa85Z.tJJhTmSnglppNtjoMcEhCF7rG2f+ib73ianrOuoRXHaRff.2t+82krvkzT.KY1zsIwbOcMbEzrKo6BYqVxm57CYKPU3lmZzMAi9ypdolPRZBWWL+AFJMzpYmIrhvqKRrJTYav841l5peIpQbtj7gBMMXnZ99bh+A+fWfh+Lmf3e5yr3e4Xh+6mf3Gf2+6nFBJq3PV0.SqHx+97AxXR9PhvokSbRcGobjV9bL4+MO0bK3l76dozOIoOjSfhsMpv62Q9.BMS9sCOS9sOGpAfUfu3TCxwoFbzAWpFjjZPujuS+qzZAiyoE72d3kZAIoEbcwJVXx29+UYEgI3TD97mcohPRJB8yVyDxlSJI8f1Ic9xS+nCzC5qcoe1OkIp.IVyudE7QGd7OHBPJTJFPNoLI0bOnBQgkyRRx81Np7ZTGybTHxsqovyBA0VX60nDTnEh5fyHlQ81.R1KVDqWOqW7qovguXwr97HIdT63mcdzzXSJuPIxq2Z9.OY9u9gmQx75hKaddlQzAzIef8e9O5LRmCHt7pqU.s3rEW4a8sNSTZaWTsWmasUZ5FxLyGe9WWsazAedgfQ74+Xd74vXt39yuPcwMqght4VtX1FFxFM1hqWr5r1jkeu5C.dUYGGT002nXUavv+XqTD4WHY2W1.XW0wr2irIQfJP9t0UsX6VjHKy5ylMlXcQ4DbH9Mk63TcKXPPaUg3tGO9S+z+m614NbNwuaCm4bcN4Ro3gdXzsxkxOdkJ2CUnb4BqTo3rKUFkEDKtZ5pH5VQc3wJniYM1CgA1PQu5tYS.eElKF9tPBAN7j50+utXPF9bzD15qOHy0OUjgOuki4Ql+3ePLj4nWfykgefvz8VD2bY3+pto1VsYVrvzwvxoZW3o1J6hK5sKTIaR6PyquhnftlwNX0Jl7pTcGPymWvmoeIP2w.c1tDnmjCnml26TyO3Rf9j.5NL+laHN+8VeweOcZAbwB+S4f5+teFWnG8JtfKwsn.KvnWi09Hr1we2XrVQZevkBG72sk6nOAXuhzey6PTlm9F7OxKJs2PrzZqVY0JOtTATlQkFUpq97O7pZ+xO7xb8Ok0+O6KWq++MO0caR.U16Gcoz+Tj94d4R56kFza4I8Wv6X6TABoyKIL9h3SIRXbNcg+x+PYu8rCaC5bSwRAacdlAqf8kQ3saAA8FO6LiOyDYxjYBgPayiPugt4fRcMwmNP+GFwrp7ihsoaxKuPLypilzVb4DX8PmLH9OClJOq+CCy5QaV.eCbSlIklB3mImNI.PJyTSJcp.vQhzMG+PjsiYYv6m2INhcRGFo0qnmuOq17RxlO0NVojMGJqAwe2BJ6ZZAjF4vRF5kq3RnV2Fz1jKtn4W9ihJZFbOpnwOYc.7TwFjSM3t9a+zT8jf6uSXGsEHY924cO8jMk2k+vO1Qq5v.dhukh33Wlei0H71Q1XM9qHmWfHIDJWa8d21cNkPgNdgMXC+0DI6J2SeuTcG4vJeYFe7rSOtzDSMgP7PQxI2Y4fFcCBxskAhxTQbZ7u7EWlnyoqXri2A7ibLQwXCuSC5I7JT4JEqL+8JjGsvZytbgxIV0rnEnmRGTYtSiSTqRwg9usbf4.tMYFu7nOwb4lXhwGO2Isdsw10f7o9+neFGfCtrC10fSFaWCxNeYuKYM1rg4Un4L2GkdMss1xFQLGLbRKazChxVeVy1OQKx1cjd.x7lnwsy7ITuXp+jdDDNf7i+oqHzZPu1M89ZEsFzq8u4Uh+92SLUJ1NP8zG0ugH+t2mMr+UWXC6.ck2zPwsuN+1ppZXWJCJNO836BQ+PZqcXeJYmZ5LyHIM8Y2o5U9nTdNUxaosK1BrjSOcDLK7rMda3xXKIa3xlChVAaQrdDt7xzyNyZfUqvkunt4lJ5yUZ4HU2wBqz.Xykg.lh7pfPwB4Chdd+msgoqgyxt5Pjf5ZQYh40wJVjSQ+7ymD0sjYMERTUQ47McOYxXIMaBJ7cXGXEoQmXD+eMk+Og7sZ8qrAE5+qriJQ9w2k34j2sXfo9HFUpEKTmhIDpiPmkk6.bab0PA2s.+5cqzkNhFL3NAfFhdzjfWOgs2a2DT5udP+S597VlMyatmwxXCWNdPh+qDfdxkSoN8oTbunqmSwEu3WwlREclQXswm7jDR5q6VKN9Tjk+C3059gwh148h4BlcT+qN25Upr5JUkFu58WubEVrGPXFOBUyr4AIsJYEhQ2Ej67kCKZ7Zs4K1vCDuQmcvN3rh7dbXgzOUNwsNMsMc89joy1Rzc3Vq8Ur8vrPr8vr7ZsaOL20dIx1tk.n2eRW5kH522MBS7vjbRD+VoYPQ5kt.YoW3uvbHZPdufHr4uYZH9NL.kfC3O5Vm6aQmDODjcH49FhkHIQjL8dkDnWAguvoWu6jnADY2UEAD6UEW3Qm0KfnLc9EPT+bzxqwnkqGrJaTJIzGhNzcODq3Pyxe9ceH1g4OiuP+UmiCZAKDNQKKUOg4wd5LdrytXkRTm3WULfKPu30jWidtx2ZYEv1Cwh5JfYHH1mZXfhMfjqHml3TWgD0I6YI+iiaYrgJ8g+O3OuWlwO2IxKy3+RgtRhm8Tk3fIjSWhSO5kWJweYPhm6hQhSOurWJwewKwuouGFtCDJEVR9HhxCJ4sNHrz6wGCRdthN5S90xc7R.3XTKjayhMZ5BIcrD1XK9XMH5HT5pnAIRDtxg3.mCBmaKKPoRkbHtTTC4qvBqh0UBMF2Sadt93i+Ex4g7g.bkuNKrPEuSxbPQ72aAzXcYfKMNW1O0MMaF5tOfT.2UevElF7W1pB86ertm20ZWbg2mpFDbnZ3E8.k.HED1nseuNmBcHoHIhb0GPJHiu88+z+lMjIEjM7cFogZtnELdPACJCBH+8xFIDmWo.1VGSkNGWOhbqPviqGU3e7CuDWCiq7G7iNGZOlbmYvCsBBe9O+RnMLzxsqs6Bjkbghvirn+5+hiBgrPJv+hu9frdNb6u0IU1SqM3fKG9d10A2hqC.mvGlYNGvjWLqiC3rzG9+M+n+CZ0WCqStY87w7+yu+e1cIq5fEkrhMDrEtl8xDFH9WuFIbIdhK3UgnD5GrkqYgnGBwKSurfwIQLduIQJw6cQGqmeWuWDaf3ohkU1AS1rFw5t3u3kVMtdacGPS2G5K5G3an09q8WtyBB4iFb0CCuHQOVNgq+4hFj6JwRl5JVQW0jKrP7uZGuzNAWLnuLrTT2TjB4uLQvTUhWdH3AEKo70vr8dS+r8nWaPKYRtYmn3wawJAQJBUBz8vVYZmMgOK8+7+Pmdgu2riuv2KefQskYergf7AIKHaEKvtdjL2VhlxUL2hqYZ5P1UU7mYJ12AilvFz87cBMmV6vNZ9BH+uKlUh8pek4lp+7Ms679IA5oyH2SY8f5ymFYtDK.9pzg4BsL9VWwU2wuzvSDV1zvr41lFZ0BqKASf2ZKrEOsmHCEMNk2RNg.TVRyf7UciLcnKvhKn0F6aJxHWDY1K5UiOkSOuB8ob9JlmluLFiFJ0rLq5e8HCBtdok.7sA0tcePTsvynVWwhhhjiZQCvhX0Z0Hv86lQPH41j8Lzlbmg1L9YnMSbFZyjmg1L0YnMSehsg3LZVWGyFrohPAkJv1E0o3RnW3+GCZsx1B
It was like @Lindon said, the "zero" inside the brackets means left-channel :)
and the declaration should beconst var MasterGain = Synth.getEffect("MasterGain");
because you're getting the current level from the module "MasterGain" not from the component "MasterGain", sorry 'bout that.