Gain Reduction Meter on a Faust compressor
-
I have a Compressor made in FAUST where I display the Gains with the graphs, how can I display the gain reduction on the UI?
HiseSnippet 3302.3oc6Zjrbabbc.oFYAHKujRtRxstX4CC.A.w.QsXIyHJwEIlHtTBRxxURJlFyz.XBGLyjdZPAZWLmxg7K3pxg7Gjy4lq7EjOAmpxGf+Cbdut6YC.jhhdIRtLYQRzus9s18qa1rwBVfKyc+3.unHlvvnz76wCcXwwgbiRkexQQLiRusYmiBDCVa.0KvXq0MJ8NlaSiELNQA59GEQiiYtFkJM+CP.kJeAC4We8cuO0mF3vx.YX7rPOG1i7F5Ixft2p+FOe+Motrm3MLG0Ku5VNgAqE5GNBzm4MaYDQcNf1msCEIaNSiRWbCWOQHuifJXwFktv8CcOpyfvWDnn+Ydwdc8Y3.aiNffTf2Lz2E0XDpwZC77cSs6XvKXlyKLuxKbUys8b8Rgm4MdOIBRFG48Gklqn5MeA0yNu50Jm5MCUpTNU5BJU58M63v8hDYXP84xlaE.AmdTvsmWUTzZL2erh4Zg.EAhlCoGv1jCCR4vpcqV0IvupdmqTI46.vYGCNdF4Yi1lATdkJe9UpTdoZ0HqwYngQnjHF8.xPDaS.WM7mxOMFBU2l7.uCYDOAPDm0iwYPBAQDBCGF5NxmQrXdhAP5TLllQB4DVudLGQ0LAskf3GFdPLoKKVPFE6EzGX+Edt.8z.Wx.lW+AB..Ld3HegWDH1vdjkkhn7ZihEgC89LXZGvHNxzoXsXPHwJ2HMf4qwR1xMFYcI3WdA9dALRuQANBuv.hizl0tBKz4TmLtN4np.sneorenC0G0t9LAYERh2l55Jmh7r.dYB7ExUBYwLLfFw3BOVLDcF9q6r6NZdjheAocuvsI12ntbrx5A.K2RAvSvFpJZ.fsFu4lf+b4aby5jj4JGEsQ9ZeyO55st9Gkve29obOIJAarHGxacsadq1KeqqqPFSOjsUvdbFXC.5dT+XlBSXD8OMhg5LN73D6tLNR4nj1MTSIdb3HA3usR72V8QGqxyVteydvBE2y22RLvKtIvmUl1VEEKPjlRPfJD4nMmmoZAkn7gTNwOFyQVgDQ4wfgHTL5REzl9GR8GwH0HoB6gRutU0FKmLunH3mrH3uLQjoLJy7wPQf0usccxjzSZnU0FD.ap39DLuPJskZ2vtthleuV4JHRxhjIXhrDoMHN6YNY7yvjwSmr7lwoGCZOYPnWH2xC7d12g3Q93oTkFR3q.+rH4ZxrBcZQAqCTFu5SZeM.c2NwWbbgjvh4f3FP70n99cgcZxRBykCJyTjwxbg8bik+xqWtHeuwETVctzJDXJ2IjOj5CtN28fEPeFhn.inIr1HNrno3QrCgEOrSx1Jy+1HlVUy6KJyfJ0WEUbif9PMJJUUq.HlWU86jkwDJm9WYoISUVtBYapX.re1XKEDc7OOMMHsZ1ZYsfmppLmD3SIA9jRXBUgyhvUt1Z3PlqGr2f+QVp4Yl4XBJWkkYcsVJx3LwHdfdGCDxwxcemZmGH8ba4VlVGp18otdKzzsdzvSB6fYoHPJT3mYHzSH5zGrnTwpUPv7sw0uraAeBpAyhfqyb75BIQaFxwV.2j5.M8njQU8bebVCE32PecvV4XsyVAQiDR0FTW81pMKtI6BYzrPcB1gBJ0LfXgqUx9fPg90uAhOQVYtsLNpSjM0h59FxtMzygZEohJ3tiDubMLGQfFbsan0wbfOqJYNVlgVppU1MullFJCC1ITv1EVspxmWobkiqPlDUudyDG16AOz2GLjYgVksdJLZELZXWTckEJoDBcpVr8WySt827cm6nZEJGggAaE3I1MhEbR8ran6eB9zS2ZcH8G6YVCKqeJ.15rCgCfn5ftr45r3CDgQvYIVKbXTX.JgRWVHwdkj9qwt1L7bwiBkkAYLFrmR3oTNB+vbvGjMlAR8hum9rNpfMB4uogjzrBB6pW8peCBKaCQDZ++62LAz14INqALD5Se5SkPU8WgPJkbNqyh8bEybIaJC5Ces0fl9.PvQuvRFpn34wvUfzHfrzBGBBOnSPrm3n7GR86rCocVUw22bOOgyfYqiyMCcDxk+9PG0Gs8JlpEWxTvKXt4y+d5br4ufgKkdACdCgSr8fjo+sTkYmzMKr5u6er4WtNymVvC8I5bUMfOc0Yb2CaEbHrNvdg9T9j924OyFn8oafW3LmDflD4aSh5ENaQgS+xNNqIs+LSoK+MIEVlR7liB+dlvJyuFntpSf2GZHl6g6IryngcfkmcXfpF.acDmr8fdbqjMB6vBbkC9F3KMRabbIMR6DjyvkTQu6DrxC5Lda8PxlO2dV2iUo+pYViHQXG3b1SB2CxPsho3pIOFbI0Ic8CcNnCzZ6zcuDoTg6iTX4nMsySSNW76nkN9Awwm0lzNLwKB4GHubQ8mgkdU9dr4AtJ9bOe+vWfi8zYkPLPBCVF8nnAgAdNHHEEIZ58FFNB67PotOjF+DpmOt4VmQwPSbt6FzAHVt5bo4eFiGKE7aYBmqnIXHysSnKfxTcNhi1ihqr+9lXegPwB17cZQSAcMedBJhj9JTdIfvgx9gv6Md9bMEptcUbDTcMmRpaE+LDqC02PdfHT4MPYp7WJ8SsYUO5nXgQAc8sAckyZpvbt0p4lPqJatlOHosbSTo2Mmwudm8jqzjmg2ESg1ixoxKlMNgMUTwHGBvLRGAIza6EnIMaGxsoim.1xq1QvhvhKMr+9W7E+y614.1KT9h7qTgZyEMOHfwLlPJWZUiSep+569sepeKSNl7N4ba7xl6m+kSO2e3q3beYSw.HDM.Vzcx4e4uz3U2s+02ch4+q1t6dmx7eISpPPcNnvjC77Gt64Xxmx3W8+7Y+kSYxKaxY9LZ7Tg8u5tmCW+yeEc8WwD+WbLJhf2DwTAeiyg8+oSpAp.xIpAuiodmEhuWvAFSIMiNu.OJvSnb3L9xZ97.zmgMfI2JB2h3zwluh139ggGLjJWf+bcjXiyPm5W1L89HNk+Of2e0epa8epa8epa8eLzs9GnbIW17SnGxj2Noza7Axw8B4CIOfAcng9J6SYIg+8Y8oADcleZ.65H.U3IbZPbTXLyNujm.W673VmIFETjbEnBTgl2lf4YmuykDfsyCDRKJHLXbAIsMFlx1Fbi.JDz6v.qwc2XGvXoSrOxdi7iYxpC67LlAtcdvOjxcg3hyosd4ENaqW9RdkDW70tWIwa.2QXgGxQ4DcTss5FvFd9v9xoqfCmevWj.sX4z1gAgIm9JKP+XFrJP+9rh8gLKC5dpdBSgb0UertQsb858H3vVT91xC6bt7E1uxOpkYFu9ElJ0kfqAPdy8tcm+G02s6Yu5CVB706n3O2DVJtMQFJI++IV9Cw95+PLGCoN7v8cT2gFVzeIIDvtCjOhuxvQHfwDaiCm73WCgsL12wonnlhw1mWFu14kwkOuLd8yKi237x3MOuLdqWNi3N52ajHbnp1.5rYuMjGyrTIUSMxxDC1vtLWnOB0E2ho1oPBXi2zyWckZ87vxh4v+nzjeo5h0VpvUb0zMNJ4+Orwb+qKZtzRjMQxHpDWBJuaSJvSEfF0CUzU8DAe3Vc1fDFPZ2p8xMra0nkcEX+2PtvZgXgqbVa560cgp2oRkkpQz2+aLo1RUb.Aueed3nHqwUIqPFn97B1MbzSI3JVnNYLvKK3vLRAZOTSa6FL0V5Z5vKmHuLSn6ZMPLZhvqOXVDsbi7Wv.TLqoGM5MF6Ei02jjpuJxaAS9L.WgjyTv+Mw7irVPhFD.9XovmAZcRql3C5oR5MXMa9RQC71.YqwGcCPDY7iW7G4jmWDM9pITusiL1TWbkhsLu4fXeOW7MWnPiuHjlsZ0VxrsZ.vM41D707XuzPZyNOFDl9hnNIgoQKk10UxRpHyTVpqUZeL9fOvor.Xp3xcwSpmrhzkf+nsML.sC6EIwFBb1IxDgxJ5w6iig4IWNP57jmE7Ukfue2V5+ZiJ9R3y0IYBS5kj3xDL79ppfuPUPifrPzsLNxpg8RVRyrlnpJIFPP6FChplkci9nLWj7mgA80BcsrL+r+sIVvG.UqOysZkjRCKPXXtqO9JuPgwqtDuhrj7ykOSJIBU3AlkAvrrO72tzl9xFQa61EFZseiz7sEwLmjvSqpRgjSd3WCrFW+HbV6Ua7hvb1qZsizzP5AfsF+wGUsVe5hVi+UqfeheGxw2Ik89zo7KpzNz4jRDeJhzoSITokXTh0ujEp4KpxUS0e7CdAV1ZlPoZ2HZwnZxBy6T4XkCWdUTnScD9jjvDGJAeLy9rjLH0ZJIjnVw.bp3GtMIIb.eTl.CwSqbIzUUtb2tsUd87AHDuRZRm.5aIi0xIIyrKk2mSiFXsfN4Wl4CofUSMfswoU++eqh9uV904nfs56WyuN3RqwqVXp22m0SjTskZZ9ZeU+84x2.9j34o3wJDFt.F5qURqdBaIDgIeJTX5Y9xupPRehLpkGglStjSovdEX836XX7+nwXVZI
-
A global cable can allow you to get the modulation data onto the Ui. From there a panel can use the global cable to draw whatever you want, or set the image if you are using a filmstrip animation.
There is a global cable node in scriptnode which will send it out into the global cable network.
You also need to declare the cable on the Ui.
It's been a while since I've done it. -
@Mighty23 when you make a graph, it creates an output cable like that? what does the faust code for that look like?
-
@aaronventure
the full code is in the snippet in the main post. inside Script FX1 there is the faust node.// Add gain reduction meters to the UI gainReductionLeft = gain_reduction(l) : vbargraph("Gain Reduction Left", -60, 0); // Left channel gainReductionRight = gain_reduction(r) : vbargraph("Gain Reduction Right", -60, 0); // Right channel };
-
@Mighty23
Hello. Were you able to solve the problem? What compressor are you using? -
@aaronventure the vbargraph UI element in Faust translates to a mod output.
-
import("stdfaust.lib"); /* Controls */ comp_group(x) = hgroup("1-compression", x); env_group(x) = vgroup("2-envelop", x); gain_group(x) = vgroup("3-gain", x); link_group(x) = vgroup("4-channel linking", x); // Controls ratio = comp_group(nentry("ratio", 2, 1, 20, 0.1)); threshold = comp_group(nentry("threshold", -20, -96, 10, 0.1)); knee = comp_group(nentry("knee", 3, 0, 20, 0.1)); attack = env_group(hslider("attack [unit:ms]", 2, 0, 1000, 0.1) : /(1000)) : max(1/ma.SR); release = env_group(hslider("release [unit:ms]", 500, 0, 10000, 1) : /(1000)) : max(1/ma.SR); makeup_gain = gain_group(hslider("makeup gain", 0, -96, 96, 0.1)); // Control for channel linking - stereo vs dual mono. channel_link = link_group(hslider("channel link", 100, 0, 100, 1) : /(100)); // Envelope detector t = 0.1; g = exp(-1/(ma.SR*t)); env = abs : *(1-g) : + ~ *(g); // Compression function compress(env) = level*(1-r)/r with { level = env : h ~ _ : ba.linear2db : (_-threshold+knee) : max(0) with { h(x,y) = f*x+(1-f)*y with { f = (x<y)*ga+(x>=y)*gr; }; ga = exp(-1/(ma.SR*attack)); gr = exp(-1/(ma.SR*release)); }; p = level/(knee+0.001) : max(0) : min(1); r = 1-p+p*ratio; }; // Gain computer for a single channel gain_computer(x) = env(x) : compress : gain : +(makeup_gain) : ba.db2linear with { gain(x) = attach(x, x : gain_group(hbargraph("gain", -96, 0))); }; // Gain reduction calculation (in dB) gain_reduction(env) = env : ba.linear2db : (_ - compress(env)) : min(0); // Main process process(l,r) = (gl*l, gr*r) with { g_left = gain_computer(l); g_right = gain_computer(r); g_linked = max(g_left, g_right); gl = g_left*(1-channel_link) + g_linked*channel_link; gr = g_right*(1-channel_link) + g_linked*channel_link; gainReductionLeft = gain_reduction(l) : hbargraph("[5]Gain Reduction Left[style:numerical]", -60, 0); gainReductionRight = gain_reduction(r) : hbargraph("[6]Gain Reduction Right[style:numerical]", -60, 0); };
@udalilprofile said in Gain Reduction Meter on a Faust compressor:
Hello. Were you able to solve the problem? What compressor are you using?
I'm still trying, as soon as I can get a decent version I'll post a snippet.
-
-
@Mighty23 thnx)